Don't try

Don't try

技術ときどきミートボール

ECSの基本概念

ECS (Amazon Elastic Container Service)

ECSはフルマネージドなコンテナオーケストレータ。

オーケストレーションサービスのため、コンテナを動かす実行環境のサービスではない。

コントロールプレーン(コンテナの管理機能)

タスク(Task)

一つ以上のコンテナから実行されるアプリケーションの実行単位。

タスク定義(Task Definition)

タスクをJSONで定義するリソース。*1

imageやその他のリソースなどを定義する。

サービス(Service)

指定した数だけタスクを維持するスケジューラー。

ロードバランサーと紐付ける。

クラスター(Cluster)

上記のサービスとタスクを実行するグループ。

ECSのコンテナ管理概念の関係

タスク定義によってタスク(アプリケーション)が生成。

サービスがタスクの管理を行い、

タスク×サービスを関連付けし実行するグループ=クラスター。

データプレーン(コンテナの実行環境)

Amazon Elastic Compute Cloud (EC2)

EC2。AWSを代表するサービス。

コンテナホストとして利用した場合、EC2インスタンスの運用コストがかかってくるため手間がかかる。

柔軟なサービスなので、細かい要件に合わせて運用したい場合はアリ。

AWS Fargate

ECSとEKSで動作するサーバーレスコンピューティングエンジン。

コンテナホストの管理が不要。ホストのインフラがAWSによって常に最新状態に保たれる。

利用者はアプリケーションの開発および機能追加に注力できる。

ただ、EC2より若干価格が高い。

利用者がインフラに介入できないため、OSリソースを詳細にチューニングする必要がある場合などは不都合になる。

リポジトリサービス

Amazon Elastic Container Registry(ECR)

コンテナイメージを保存、管理。

ECSと連携し、コンテナイメージを取得→立ち上げなどが可能。

*1:今のところタスクとタスク定義の関係は「インスタンスとクラス」「Dockerfile と docker image」の感覚で捉えているけど、問題ないのかな。。。