
AWSざっくり理解しました
ヒストリー
Amazon社内のインフラ構築で都度構築だと無駄が多くなってきた->一括構築&分割利用というスタイルを取ってできたのがAWSで、もともとは社内のツールだったそう
インフラ構築の課題 -> 解決したことをサービスとして提供
AWSの90%以上のサービスは顧客の要求から生まれたものらしい
サービスは200を超える
Infrastracture
24のリージョン、84アベーラビリティーゾーンがある
日本は東京リージョン・大阪リージョン
リージョンは複数のアベイラビリティーゾーンで構成
アベイラビリティーゾーンとはデータセンターの事(一つ以上で構成)
アベイラビリティーゾーンの情報は公開されていない
例えば東京リージョンは4つのアベイラビリティーゾーンで構成されている
アベイラビリティーゾーンは意味のある距離(災害など)離れているが、あまりに距離が離れていると通信に影響でるので約100kmぐらいの間隔とされている
リージョンの選択の基準
コンプライアンス(例えば国外にデータを置いてよいのか?)
ユーザとの近さ
リージョン内で利用可能なサービス
料金
サーバを立ち上げるサービスは特定のアベイラビリティーゾーン(データセンター)に閉じられてしまうので、災害対策をするのであれば別のアベイラビリティーゾーンにもバックアップサーバを構築する必要がある
CoreService
EC2 Elastic Compute Cloud
仮想サーバを立ち上げるサービス
従量課金サービス(1秒ごと)
Web三層サービスのうちWebサーバとAPサーバの代わりとなる
多数のOSをサポート、ライセンス料込
数分で起動できる
サーバの性能を選べる
例)c5d.xlarge
c=インスタンスファミリー ※サーバの用途
汎用/コンピューティング最適化/ストレージ最適化/メモリ最適化/高速コンピューティング
5=インスタンス世代 ※新しいものが良い
d=追加性能 ※ネットワーク待機が強化、メモリ追加など
xlarge=インスタンスサイズ ※大きい方がCPUやメモリの容量がUP、コストもUP
サーバの性能はいつでも変更できる
仮想CPU数追加、メモリ追加など
Amazon VPC : Amazon Virtual Private Cloud
定義した仮想ネットワーク内でAWSのリソースを起動できる
この中にEC2やRDBを入れる
VPC単独で使うことはない
サブネットを中にいれて分離する
VPCが家ならサブネットは部屋のイメージ
リージョンの中にVPCを作成->VPCを分けるサブネットを作る->サブネットそれぞれにアベイラビリティーゾーンを設定する
つまりサブネットを分けることで複数のアベイラビリティーゾーンにそれぞれWebサーバを立ち上げることができる
サブネットはパブリックとプライベートを分けられる
パブリックはIGW(インターネットゲートウェイ)を通して外からアクセスされる
プライベートはVPC内部からしかアクセスできない
DBサーバはここに
例えばAPサーバを構築するなら
ロードバランサーをパブリックにするならWebサーバはパブリックにする
同じVPCに所属しているのであれば、プライベートでもアベイラビリティーゾーンも気にせず相互に接続できる
インターネットゲートウェイ(IGW)
VPCはIGWがないと外からサクセスできない
仮想プライベートゲートウェイ
プライベート接続するためのゲートウェイ
サイト間VPNネットワーク接続
VPNはインターネットを通るが暗号化(IPsec)してプライベートネットワークとすること
インターネットを使うため遅延が発生することはある
AWS Direct Connect
AWSのデータセンターへ直接通信線をひく
コストも時間もかかるが安定・安全な接続が可能
100%安全ではないので、VPN接続も併せて使う場合もある
AWS ストレージサービス
ブロックストレージ Amazon EBS(不揮発性) Elastic Block Store
ES2にマウント可能なSSDやHDDと同じようなもの
EBSはサイズ・タイプの変更が可能
バックアップ可能(S3にスナップショット保存)
タイプ選ぶ
SSD 性能〇、コスト×
HDD 性能×、コスト〇
EBSは複数のEC2から接続はできない
オブジェクトストレージ Amazon S3 Simple Storage Service
HTTP(s)でアクセス可能(インターネット上のどこからでもアクセス可能)
容量無制限 コストはかかる
耐久性が高い ※アップロードしたファイルが壊れない可能性
複数のアベイラビリティーゾーンに保存される
Amazon EFS
EBS+ 複数のEC2から接続できるファイルストレージ
共有ファイルサーバのような使い方
ELB Elastic Load Balancing
各EC2インスタンスへリクエストを振り分ける
EC2 Auto Scaling
CPUの使用率によりEC2のインスタンスを増減させる
リレーショナルデータベースの構築
On EC2
RDBを自分でインストールする
Amazon RDS Relational Database Service
MySQL, Oracle, SQLServer, PostgreSQL, MariaDB, Auroraから選択可能
AWSが自動でインストールしてくれている
自動バックアップ、スナップショット、パッチ更新など自動化されている(マネージドサービス=すべてをAWS側でやってくれること)
料金について
物理サーバ購入(オンプレミス)とAWSの比較とメリット
初期投資が不要
実際の使用分のみ支払い(従量課金)
継続的な値下げが期待できる
スケールアウト/インが簡単
スピードメリット
無料利用枠
常に無料
Lamda 100万件/月までのリクエスト
12か月間無料 ※登録後
T2マイクロなど
トライアル枠
Amazon EC2 購入オプション
オンデマンド:時間課金型インスタンス
リザーブドインスタンス:年間(複数年)の利用予約をすることで割引
スポットインスタンス:使われていないインスタンスを格安利用(価格変動)
Amazon S3 料金
ストレージ 一か月の保存容量
リクエスト&データ取り出し回数
データ転送 ダウンロード回数
AWS Organizations
複数のAWSアカウントの支払いを共通化できる
セキュリティー
AWS上で稼働しているシステムのセキュリティーに対して誰が責任を持つのか?
責任共有モデルを参照 ※マネージドサービスの場合は責任範囲が少し変わる
AWS側とユーザ側は明確に分かれている
ユーザ側の管理部分はAWS側が操作できないような仕様になっている
AWSデータセンターのセキュリティー
データセンターの場所は非公開
職務の分離がされている(運用、管理など完全に分かれている)
AWSのインフラストラクチャのセキュリティー
ユーザ側の責任
例)DDos対策(デフォルトで有効)
データの観点
所有権と管理権は全てユーザ側
AWS側では操作不可
リージョン(国)はユーザが指定
AWSは第三者機関の認証も取得済み AWS Artifact(認証証明確認可能)
IDアクセス管理
IAM Identity and Access management
IAM 登場人物
IAM ユーザ
IAM ポリシー (○○を使うor禁止ルール)
IAM グループ(ユーザをまとめる)
IAM ロール(権限を与える)
AWSアカウントを作成すると
ルートユーザが作られる(作成時のIDとPWでログイン)
全ての権限を持っている
普段は使わないもの(運用など)
請求関係や削除する場合のみ使用
IAMユーザを作成する
管理者権限を与える
役割の権限のみを与えるようにする
普段はこのアカウントで運用をする
多要素認証をONにする(ワンタイムパスワード)
IAM ロールの使い方
AWSリソースにアクセス権を与える
例)EC2へS3へのアクセス権限を与える
IAM ユーザに一時的に権限を与える
AWS以外の認証ユーザへAWSの操作権限を与える
Amazon Cloud Watch
監視、アラート、アクションをトリガーする
AWS CloudTrail
IAMユーザごとに誰がどんな操作したか記録するもの
AWSの操作方法は
GUI : AWSマネージメントコンソール
CUI : AWSコマンドラインコンソール
SDK : ソフトウェアディベロップメントキット
操作は全てREST APIなのでそのログを取っているだけ
Amazon GuardDuty
AWSアカウントへの悪意のある操作に対して異常な操作を検知&通知してくれる(ディフォルトはOFF、従量課金)
AWS Shield
DDos攻撃(大量のリクエストを送り付ける)に対するもの
スタンダードProtectionはディフォルトでON
アドバンスドProtectionは有料サービス
AWS Key Management Service
データの暗号化に対する管理ができる
AWS Trusted Advisor
コスト最適化、パフォーマンス、セキュリティー、耐障害性、サービス制限の項目で評価アドバイスがもらえるサービス
Well-Architected-Framework
6つの観点で評価される
運用の優位性
セキュリティ
信頼性
パフォーマンス効率
コスト最適化
持続可能性(環境保全の観点)
AWSのコンテナサービス
マイクロサービスで開発したいが例えばすべてをEC2で構築するとコストが気になる
コンテナ導入で一つのEC2インスタンスに複数のコンテナを入れられる
コンテナの管理が複雑になると困る
どのEC2インスタンスにどのコンテナをのっけたか分かりにくくなる?
Amazon Elastic Container Service(Amazon ECS) コンテナオーケストレーションサービスを使うと
コンテナ化されたアプリケーションを実行しスケールする
シンプルなAPIコールを使用してDocker対応アプリケーションを制御する
Kubernetesを使いたいなら Amazon Elastic Kubernetes Service (Amazon EKS)が使える
AWS Fargateでサーバ管理から解放される?
例えばEC2インスタンスの管理から解放される
自分でEC2インスタンスを立ち上げたらその後の世話もしないといけない
AWS Lambda
サーバレス技術
AWSのフルマネージメントシステム
本来EC2インスタンスを構築してコンテナのせてみたいな処理の代わりに直接処理が実行できる
EC2は時間課金だけどLambdaは呼び出し回数課金
仕組み
コードをアップロードする
イベントソースからトリガーされるようにコードを設定
トリガーされたらコード実行
AWS メッセージングサービス
マイクロサービス間のデータ受け渡しができる?
小さなテキストデータでやり取りする
Amazon Simple Queue Service
コンポーネント1対1で連携させる場合
Amazon Simple Notification Service
コンポーネント1対1以上で連携させる場合
AWSへのマイグレーション
VMware Cloud on AWS への再配置
SaaS採用、クラウド型ライセンス費用へ
外部サービスを使ってしまう
単純移行でAWSへ
OSやアプリケーションに変更を加えずそのまま移行
単純移行でAWSへする中で一部マネージドサービスを使う
AWSですべて作り変える
移行手順ツール
サーバ移行
AWS Application Migration Service
オンプレミスのサービスから徐々にAWSへデータ移行してくれる
DB移行
AWS Database Migration Service(DMS)
オンプ -> AWS or AWS -> オンプレに移行できる
他にも DB on EC2 -> RDSもできる
AWS Schema Conversion Tool (AWS SCT)
種類の違うDB移行を実現する
データの移行
AWS Direct Connect AWSへの専用線接続サービス
AWS Snowball Edge / AWS Snowcone
物理的にデータを移行させる(インターネットを経由させない)
サーバレスについて
メリット
サーバ管理が不要
柔軟なスケーリング
十二分に考慮された高可用性
アイドル時のリソース確保が不要
従来(オンプレミス 3層構造)との比較
Webサーバ : API Gateway HTTPS REST
APPサーバ : Lambda 処理ロジック
DBサーバ : DynamoDB データ管理