はじめに
昨今のクラウド普及により、パブリッククラウド(AWS、Google Cloud など)の利用が拡大している中、ワークロードにコンテナを使用するようなケースも珍しくない状況となってきているのではないでしょうか。
そこで、本記事では AWS が提供するコンテナサービス「Amazon Elastic Container Service(ECS)」について説明していきたいと思います。
初心者向けの内容となっていますので、これから ECS を学んでいきたいという方はぜひご一読ください!
記事のゴール
ECS について全体像を把握し、概要レベルを理解する。
ECS とは
ECS は コンテナ化されたアプリケーションのデプロイ、管理、スケーリングを容易にするフルマネージドなコンテナオーケストレーションサービスです。
コンテナオーケストレーションとは
コンテナオーケストレーションとは「複数のコンテナを自動的に管理・調整する技術」のことです。
以下の図でコンテナオーケストレーションの有無による違いを説明しています。
ECS のコアコンポーネント
- クラスター
- サービス
- タスク
- タスク定義
クラスター
クラスターは、ECS における「コンテナを動かすためのリソースをまとめた単位」です。
簡単に言うと、「アプリケーションを実行する環境の入れ物」のようなものです。
サービス
サービスは、「タスク定義をもとに、指定した数のタスク(コンテナアプリケーション)を動かし続ける仕組み」です。
サービスはそのタスクを監視し、停止したら自動で新しいタスクを起動するという「管理者」の役割を果たします。
タスク
タスクは、「タスク定義をもとに実際に起動されたアプリケーション」です。
アプリケーションの実行単位であり、1 つ以上のコンテナから構成されます。
タスク定義
タスク定義は、「アプリケーションをどのように実行するかを定義した設計図」です。
アプリケーションの実行に必要なすべての設定情報をJSON形式で記述したテンプレートファイルです。
ECS の起動タイプ
起動タイプは、コンテナアプリケーションを実行するための基盤となるインフラの管理方式を指定するものです。
主に以下の 2 つの選択肢があります。
- AWS Fargate(サーバレス)
- Amazon EC2 インスタンス
Fargate 起動タイプ
Fargate 起動タイプは、サーバーの管理を完全に AWS に任せる方式です。
Fargate の特徴
- サーバレス
- EC2 インスタンスの管理が不要
- OS の更新、セキュリティパッチ適用などを AWS が自動実行
- 従量課金
- 実際に使用した CPU・メモリ・実行時間分のみ課金
- タスクが停止している間は課金されない
- 自動スケーリング
- 必要に応じてリソースが自動的に確保される
- キャパシティプランニングが不要
EC2 起動タイプ
EC2 起動タイプは、自分で管理する EC2 インスタンス上でコンテナを実行する方式です。
EC2 起動タイプの特徴
- 詳細な制御
- EC2 インスタンスタイプを自由に選択できる
- カスタム AMI(Amazon Machine Image)の使用が可能
- コスト効率
- 長時間稼働するアプリケーションでは費用を抑えられる可能性
- リザーブドインスタンスやスポットインスタンスの活用
- 高度な設定
- カスタムネットワーク設定
- 特殊なセキュリティ要件への対応
起動タイプの比較
前述の特徴を踏まえて 2 つの起動タイプを比較すると以下のようになります。
| 比較項目 | Fargate | EC2 |
|---|---|---|
| サーバ管理 | 不要 | 必要 |
| 初期設定 | タスク定義のみ | タスク定義 + EC2 設定 |
| 料金体系 | タスク実行時間 | EC2 インスタンス稼働時間 |
| スケーラビリティ | 自動・無制限 | 手動・制限あり |
| カスタマイズ性 | 限定的 | 高い |
| 運用負荷 | 低い | 高い |
| コスト効率 | 短期・変動負荷に有利 | 長期・安定負荷に有利 |
まとめ
- ECS とは
- AWS が提供するフルマネージドコンテナオーケストレーションサービス
- ECS のコアコンポーネント
- クラスター:アプリケーションを動かすための環境の入れ物
- サービス:タスク定義をもとに、指定した数のタスクを常に動かし続ける仕組み
- タスク:タスク定義をもとに実際に起動されたアプリケーション
- タスク定義:アプリケーションをどのように実行するかを定義した設計図
- ECS の起動タイプ
- Fargate:サーバ管理不要のサーバレス方式
- EC2:サーバを自分で管理する仮想マシン方式





