Amazon ECS によるコンテナオーケストレーション - タスク定義とサービス設計

ECS のタスク定義、サービス設計、デプロイ戦略、Auto Scaling の設定パターンを解説します。

タスク定義とクラスター設計

ECS のタスク定義はコンテナの実行仕様を JSON で記述するテンプレートです。1 つのタスク定義に複数のコンテナを含めることができ、サイドカーパターンでログ収集やプロキシコンテナを同一タスク内に配置します。起動タイプは EC2 と Fargate の 2 種類があり、EC2 起動タイプではインスタンスの管理が必要ですが GPU やカスタム AMI を利用できます。Fargate 起動タイプではインフラ管理が不要で、タスク単位の CPU ・メモリ指定のみで実行できます。タスク定義のリビジョン管理により、過去のバージョンへのロールバックも容易です。

サービスとデプロイ戦略

ECS サービスはタスクの希望数を維持し、異常終了したタスクを自動的に再起動します。ALB のターゲットグループと統合することで、ヘルスチェックに失敗したタスクを自動的にドレインし新しいタスクに置き換えます。ローリングアップデートでは minimumHealthyPercent と maximumPercent を設定し、段階的にタスクを入れ替えます。CodeDeploy 統合による Blue/Green デプロイでは、新バージョンのタスクセットを作成し、トラフィックを段階的に切り替えることでゼロダウンタイムデプロイを実現します。

まとめ

ECS はタスク定義による宣言的なコンテナ管理と、サービスによる自動復旧・スケーリングを提供します。ローリングアップデートや Blue/Green デプロイでゼロダウンタイムの更新を実現し、ECS Exec で本番環境のトラブルシューティングも可能です。

AWS の優位点

  • タスク定義でコンテナイメージ、CPU ・メモリ割り当て、環境変数、ログ設定を宣言的に管理できる
  • サービスはタスクの希望数を維持し、ALB との統合でヘルスチェックと自動復旧を実現する
  • ローリングアップデートと Blue/Green デプロイの 2 つのデプロイ戦略を選択できる
  • Service Auto Scaling でターゲット追跡ポリシーを設定し、CPU 使用率やリクエスト数に応じてタスク数を自動調整できる
  • ECS Exec でコンテナに直接接続し、本番環境のデバッグやトラブルシューティングを実施できる

この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

同じテーマの記事

コンテナデプロイの簡素化 - AWS App Runner で実現するゼロ設定デプロイ AWS App Runner を使ったコンテナ Web アプリケーションのデプロイ方法を解説。ECS/Fargate との使い分け、自動スケーリング、VPC 統合、CI/CD パイプラインとの連携まで実践的に紹介します。 AWS App Runner で最速のコンテナデプロイ - ソースコードから本番環境まで数分で App Runner によるソースコードまたはコンテナイメージからの自動デプロイ、オートスケーリング、VPC 接続の設定を解説します。 AWS App Runner でコンテナ Web アプリを即座にデプロイ - ソースコードからの自動ビルドと HTTPS 公開 App Runner によるコンテナアプリケーションのデプロイ、自動スケーリング、カスタムドメインの設定を解説します。 コンテナ最適化 OS - Bottlerocket でコンテナホストのセキュリティと運用を強化する AWS Bottlerocket を使ったコンテナホストの最適化を解説。最小限の OS 設計、自動更新、不変インフラ、ECS/EKS との統合を紹介します。 Amazon ECR のコンテナイメージ管理 - ライフサイクルポリシーとイメージスキャン ECR のプライベートリポジトリ管理、ライフサイクルポリシーによるイメージクリーンアップ、イメージスキャンの運用を解説します。 コンテナオーケストレーション - Amazon EKS で実現する Kubernetes 運用の最適化 Amazon EKS を活用した Kubernetes のマネージド運用を解説します。 AWS Fargate によるサーバーレスコンテナ運用 - ECS と EKS での活用パターン Fargate によるサーバーレスコンテナの運用、ECS と EKS での使い分け、タスクサイジングとコスト最適化の手法を解説します。 AWS Fargate によるサーバーレスコンテナ - ECS と EKS での活用パターン Fargate による ECS ・ EKS でのサーバーレスコンテナ実行、リソース設定、ネットワーキングの設計を解説します。