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設定の足回りを整える必要がない