AWSについてまとめる
awsについてまとめるためのメモ
コントロールプレーン
データプレーン
AWS Lambda/AWS Runner について
- Lambda入門
- EC2について
- AWS S3
- CloudFormationについて
- AWSのリソースをコードから生成するサービス
- オーケストレータ
ECSの用語について
- Task(タスク)
- EC2インスタンス上で実行されるコンテナのこと(🚨EC2インスタンス上でコンテナを起動している)
- EC2ではインスタンス単位でIAMロールの設定しかできないが、ECSではTask単位で設定できる
- Task Definitionで定義する
- Cluster(クラスター)
- EC2インスタンスのこと、Taskを複数実行できる
- Service(サービス)
- Webサーバなど同じタスクをELBで分散したい場合などにServiceという
- Fargate
- Cluster用のEC2インスタンスを用意せずにコンテナを動かせるサービス (EC2インスタンスの管理が不要となる)
システム運用について
システムの構築において以下の3つの観点で構築する
- どの様にシステムの状態を把握するか(オブザーバビリティー)
- どの様に不具合の修正を容易にするか(CI/CD)
- どの様にデプロイのリスクを軽減するか
オブザーバビリティ
オブザーバビリティを構成する要素 CloudWatch(メトリクス),CloudWatch logs(ログ運用), FireLens(ログ運用),X-Ray(トレース),で設定できる。
-
メトリクス 何が起きているのかを把握する。
定量的なサービスの計測情報(リクエスト数,メモリ使用率など) - トレース
どこで起きているのか
- リクエストのイベント記録
- サービス間のリクエスト情報
- ログ
なぜ発生したのか
- 訂正的なサービスのイベント記録
- エラーログ
CI/CD
codeシリーズを使うことでCI/CDパイプラインを構築できる
| サービス | 用途 | 備考 |
|---|---|---|
| CodeCommit | ソース管理 | |
| CodeBuild | ビルド,テストの実行 | |
| CodeDeploy | デプロイの実行 | |
| CodePipeline | パイプラインの構築 |
オーケストレータについて
コンテナに関してオーケストレータがある。オーケストレータは処理の分散、自動復旧
コンテナのデプロイ機能を担っている。
Kubernetesが事実上のデファクトスタンダードであり、他にRed HatのOpenShift
dockerのswarmがあげられる。
また、KubernetesをベースとしたAmazon EKS,GKE(Google),AKS(Microsoft Azure)などがあげられる。
一般企業が採用する場合、KubernetesはOSSのため、自身で対処法 or 修正を待つ
こととなってしまう。
そういった意味でOpenShiftであれば技術的なサポートを受けることができる。
コントロールプレーン
一般的にIT業界では「ネットワークのルーティングを制御するモジュール」であるが、
AWSにおいては「コンテナを管理する機能」を指している。
AWSではAmazon Elastic Container Service(ECS),Amazon Elastic Kubernetes Service(EKS)の2つが提供されている。
-
ECS
AWSが主体のコンテナオーケストレータ 一概にAWSならECSとは言い切れないが、
他のAWSサービスとの連携が容易で、信頼性も高いらしい -
EKS
フルマネージドなKubernetesのサービス
ECSについて
ECS上でアプリを起動するにはコンテナがいる。
コンテナが動作するコンポーネントをECSでタスクと呼ぶ。
タスク定義はJSONで行い、イメージ、リソースなどの設定を行うなう。 タスク定義に含めるコンテナ定義は複数設定可
サービス(Service) 指定した数だけタスクを維持するスケジューラ。作成時に起動するタスク数、ロードバランサ、タスクを実行するネットワークを指定する
タスクが何らかの理由で終了した場合、タスク定義を元に新しいタスクを生成してタスク数を維持する。
EKSについて
Kubernetesをベースに作られるため、特別ECSと違ってAWS独自の用語等を意識することはない。
データプレーン
コンテナが実際に稼働するリソース環境。AWSが提供するデータプレーンは2種
-
Amazon Elastic Compute Cloud(EC2)
EC2はAWSで仮想マシンを利用できるサービス、コア数,メモリ容量,ストレージを可変にできECS,EKSを動かすコンテナのデータプレーンとしても利用される。 ただし、EC2をコンテナホストとして利用するにはOS更新、セキュリティパッチ適用、サーバ監視等が必要となる -
AWS Fargate
FragateはECS,EKS両方で動作するコンテナ向けサーバレスコンピューティングエンジンで単体利用ができず、ECS,EKSとセットで利用されるメリットとして、運用保守がなく、コンテナが実行されるインフラはAWSで最新の状態が保たれる。 しかし、価格が高く、またAWS側がコンテナの稼働するOSを管理するためリソースのチューニングに不向きとなる ビジネスにおいてOSの保守コストとトレードオフでEC2,Fargateを検討する必要がある。
ECS/EKS Anywhereについて
ECS AnywhereはECSのコントロールプレーンをAWSで動作させつつ、
データプレーンを自身が管理するサーバで動作させることができるサービス
EKS Anywhereはコントロールプレーン、データプレーンを自身が管理するサーバ上で立ち上げるサービス
AWS Lambda/AWS App Runner について
lambdaは利用者がコードをアップロードするだけでコードを実行できるサービス。
AWS側でリソースを構築する(Firecrackerと呼ばれるコンテナ上で実行される。)
データプレーンを意識しないで利用できるが、
ECS,EKSといったコントロールプレーンには配置できない
App Runnerはプロダクションレベルでスケール可能なWebアプリを展開するためのサービス。
GitHubと連携してビルド&デプロイ,ECR(Amazon Elastic Container Registry)のコンテナのイメージデプロイも可能。
ECSとFragateにるアプリの構築と違いネットワーク、ロードバランシング、CI/CD設定の足回りを整える必要がない