AWS コンピューティング
コンピューティングサービスの種類
- IaaS (EC2)
- サーバーレスコンピューティング(Lambda)
- コンテナベース(ECS, EKS)
- PaaS(Elastic Beanstalk)
EC2
世界中のAZにインスタンスを起動できる
9個の重要な設定が存在する
- AMI(Amazon Machine Image)
EC2インスタンスを作成するためのテンプレート
OSはWindows or Linux
いくつかのソフトウェアがプリインストールされている
選択肢がいくつか存在する
- AWSが提供するLinux or Windows
- My AMI
- コミュニティで他のユーザーが共有するAMI
使い方
- ベースとなるAMIを選択
- インスタンスに接続して、ソフトウェアアップデートやインストールなどの独自の設定を行う
- 新しいAMIとしてキャプチャする
- 他のリージョンなどにコピーすることが可能
- インスタンスタイプの選択
使用するインスタンスタイプで以下の内容が決まる
- メモリ(RAM)
- CPUの処理能力
- ディスク容量とディスクタイプ(ストレージ)
- ネットワークパフォーマンス
インスタンスタイプの命名
t3.large
t = ファミリー名
3 = 世代番号
large = サイズ
インスタンスタイプ
汎用 : a1, m5, t2
コンピューティング最適化 : c4, c5
高パフォーマンス
バッチ処理、広告配信
メモリ最適化 : r4, r5, x1, z1
インメモリデータベース、高性能データベース、データマイニング/分析
高速コンピューティング : f1, g3, g4, p2, p3
機械学習
ストレージ最適化 : d2, h1, i3
分散型ファイルシステム
またネットワーク帯域幅はインスタンスタイプによって異なる
- ネットワーク設定
どのサブネットでデプロイするか
パブリックアドレスを自動的に割り当てる必要はあるか
- IAMロールのアタッチ
EC2インスタンスのソフトウェアが他のAWSサービスとやり取りする場合、IAMロールをアタッチする必要がある。
※絶対にEC2インスタンスの中にAWS認証情報を保存しないようにする →IAMロールで制御を行う
- ユーザーデータスクリプト
オプションでインスタンス起動時にユーザーデータスクリプトを指定
ランタイム環境をカスタマイズすることが出来る
- ストレージの指定
ルートボリュームの設定
追加のストレージボリュームをアタッチする
なんかこの辺はあとで詳しくやりそうなので保留
Amazon EBSとかEC2インスタンスストアがある。
EC2インスタンスストアはインスタンスが停止すると保存されたデータが削除される。
もしボリュームがインスタンスストアのみの場合は、EC2をAPIで停止することができなくなる。
なので長期的に使用するEC2の場合は耐久性の高い他のボリュームを使用するべきである。
- タグ
AWSリソースにつけるラベル
フィルタリングや自動化などに使用できる
- セキュリティグループ
インスタンスのトラフィックを制御するファイアウォールの設定
ソースとポートを設定出来る
デフォルトではアウトバウンドルールがAll Openで設定されている
- キーペア
安全なソフトウェアを提供できる
Elastic IPアドレス
- インスタンスを再起動しても、IPアドレス/DNSホスト名は変更されない。
- インスタンスを停止 or 終了してから再起動した場合、パブリックIPv4アドレスと外部DNSホスト名は変更される
そのため、もし永続的なパブリックIPアドレスが必要な場合、ElasticIPアドレスをインスタンスに紐付けすることで終了しても同じIPアドレスが使われるようになる
Cloudwatch に15ヶ月モニタリングのデータが保存される。
-
基本モニタリング
追加のコストは不要
5分ごとにメトリクスデータをCloudWatchに送信する -
詳細モニタリング
事前に選択した7つのメトリクスを測定
1分ごとにメトリクスデータを送信する
専有ホスト
EC2ではいくつかのユーザーからなる仮想空間にEC2のリソースを分けていますが、専有ホストでは物理サーバーを提供しているので一つのサーバーをまるごと使用することが出来る。
スポットインスタンス
使われていないEC2インスタンスに名前をつけて入札をして利用することが出来る。
大幅に安いが強制的にインスタンスが中断してしまう可能性がある。(終了はない
リザーブドインスタンス
事前に予約しておくとで価格を下げる事ができる
コンテナとはOSを仮想化する手法
コンテナは仮想マシンよりも処理速度が一桁小さい
コンテナと仮想マシンの違い
VMはハイパーバイザーの配下で直接実行
コンテナはDockerホストソフトウェアとそれをサポートする適切なカーネル機能があればどのOSでも実行することが出来る
VMベースのデプロイは3つのアプリケーションがそれぞれ独自のVM上で実行され、各VMがプロセスの分離を提供する
コンテナは単一のEC2インスタンス上で実行することが出来る。
これにより、一元管理機能を提供する。
Amazon ECS
コンテナ管理サービス
EC2サービスで使えるEBSなどの機能が使える
ECSクラスターの管理はカスタマーがする必要があるのか
管理する場合、EC2によってサポートされたECSクラスターを作成する必要がある。
(インフラをより細かく制御する事ができる)
管理しない場合、AWS FargateによってサポートされたECSクラスターを作成する。
(アプリケーションのメンテナンスと管理がより簡単になる)
Kubernetes
Kubernetesはコンテナ統合管理用のオープンソースソフトウェアである。
デプロイおよび管理するコンテナのネットワーク設定、コンテナの負荷分散、アプリケーションの負荷を処理するためのスケーリングも自動化する
AWS Lambda
ラムダは複数のリージョンなどでコードを保護します
ラムダはイベントソースによって実行されます。
イベントはAmazon API Gateway, DynamoDB, SQSなどの複数の候補が存在する。