Amazon ECS 用の EC2 キャパシティのアーキテクト
料金を最適化する必要がある大規模なワークロードには EC2 キャパシティを使用します。
EC2 を使用してタスク定義とサービスをモデル化する方法を検討する際には、一緒に実行する必要があるプロセスはどれか、また、各コンポーネントをどのようにスケールするかについて検討することをお勧めします。
例えば、以下のコンポーネントで構成されるアプリケーションがあるとします。
-
ウェブページに情報を表示するフロントエンドサービス
-
フロントエンドサービスに API を提供するバックエンドサービス
-
データストア
この例では、共通の目的で使用されるコンテナをまとめてグループ化するタスク定義を作成します。異なるコンポーネントは、複数のタスク定義に分割します。以下の例のクラスターでは、3 つのコンテナインスタンスにより、3 つのフロントエンドサービスコンテナ、2 つのバックエンドサービスコンテナ、さらに 1 つのデータストアサービスコンテナを実行しています。
一緒に実行する必要のあるリンクされたコンテナなど、関連するコンテナをタスク定義にグループ化できます。例えば、フロントエンドサービスに追加するログストリーミングコンテナは、同じタスク定義に含めることができます。
タスク定義を作成したら、それらの定義からサービスを作成して、使用可能なタスクの必要数を維持できます。詳細については、「Amazon ECS のローリング更新デプロイの作成」を参照してください。サービスでは、コンテナを ELB ロードバランサーに関連付けることができます。詳細については、「ロードバランサーを使用して Amazon ECS サービストラフィックを分散する」を参照してください。アプリケーションの要件が変更された際には、サービスを更新してタスクの必要数を増減できます。あるいは、サービスを更新して、タスクに新しいバージョンのコンテナをデプロイすることも可能です。詳細については、「Amazon ECS サービスを更新する」を参照してください。