😸
ECSを使ったシステム構成を整理してみた
AWSに入門するため、色々とAWSを使ってみた。
ある程度、基礎的な要素や構成は理解できた感じがするので、今までに得た情報を整理してみた。
AWSに関する基礎知識
ECSとは直接関係ないが、AWS全体で必要となる基礎知識を確認しておく。
ネットワーク
- リージョンは、AWS上での提供地域を指す
- アベイラビリティゾーンは、各リージョン内の独立した場所を指す
- VPCは、AWSアカウント内のプライベートなネットワーク
コンピューティング
- ECSは、コンテナ環境を提供する
- ELBは、異なるレイヤーのロードバランサを提供する
- CloudWatch Logsは、ログ管理サービス
セキュリティ
- IAMは、アクセス制御サービス
- Parameter Storeは、設定データ管理サービス
ECSを使ったシステム構成
ECSを使ったシステム構成を、パターンとしてまとめられそうな単位で整理してみた。
ECSとALBを使った基礎的なシステム構成
- 最も基礎的なインターネットからリクエストを受けるアプリケーション
- インターネットからのアクセスはALBを経由してリクエストを受ける
- Route53と連携し、ドメインやSSL証明書の管理が行える
- 複数AZとすることで可用性を高める
ECS Service Discoveryを使ったService間連携
- マイクロサービスを採用した場合など、VPC内で連携しあうアプリケーション
- ECS Service Discoveryを使い、DNS名を元にECS Service間で通信が行える
GitHub ActionsとECS CLIを使ったECSデプロイパイプラインの構築
- GitHub ActionsでCI/CDパイプラインを整える
- OpenID Connectを使い、GithubActionsとIAMを連携できる
- AWS CLIを使い、AWSの各リソースを参照・更新できる
- ECS CLIを使い、ECS Serviceをコード化・デプロイできる
ECSとEventBridgeを使ったスケジュール処理
- cronのようなスケジュール指定のバッチ処理
- EventBridgeを使い、スケジュール指定のイベント発行ができる
- EventBridgeのイベントで、ECS Taskを実行できる
Parameter Storeを使ったECSシークレット管理
- アプリケーションに設定するシークレットの管理
- Parameter Storeでシークレットを管理できる
- Parameter StoreからECS Service・Taskへ、環境変数として値を渡せる
まとめ
1つ1つ目的を分けて整理したので、より理解が進んで良かった。
AppRunnerを使えば気にしなくて良くなる部分も多々あると思うが、現時点ではECSを理解しておく必要がまだまだありそうな雰囲気。
次は、AI・MLまわりとか、Serverlessまわりも色々と使ってみたいところ。
Discussion