それぞれの概念と役割、関係性を分かりやすく解説します。
1. 中身(何を動かすか)
▼ コンテナ (Container)
すべての基本となる、アプリケーションの実行環境をパッケージ化したもの。
プログラム本体だけでなく、それを動かすために必要な設定ファイルやライブラリなどを「ひとつの箱」にまとめています。開発者のパソコンでも、クラウド上でも、どこでも同じように動くのが最大の特徴です。
- 例え: 荷物を運ぶための規格化された「コンテナボックス」
2. 指揮者/オーケストレーター(誰が管理するか)
コンテナの数が数十、数百となると「どのサーバーに配置するか」「サーバーが落ちたらどうやって再起動するか」といった管理が手作業では不可能になります。これを自動で管理・指揮するシステムをコンテナオーケストレーションと呼びます。
▼ Kubernetes (クーバネティス / K8s)
世界中で最も標準的に使われている、オープンソースのコンテナオーケストレーションツール。非常に高機能で柔軟だが、自力でサーバーにインストールして運用するには、高度な専門知識と手間が必要です。
- 例え: 港で大量のコンテナをさばく「世界標準の超高機能なクレーン制御システム」
▼ ECS (Elastic Container Service)
AWSが独自に作ったAWS専用のコンテナオーケストレーションサービス。Kubernetesほどの複雑な機能はないが、シンプルで使いやすく、AWSの他サービスとの連携が非常に簡単です。
- 例え: AWS港の専用で用意された、初心者でも扱いやすい「シンプルなクレーン制御システム」
▼ EKS (Elastic Kubernetes Service)
上述のKubernetesを、AWS上で簡単に使えるようにしたマネージドサービス。本来は構築や管理が大変なKubernetesの「頭脳」の部分を、AWSが代わりに保守・運用してくれます。
- 例え: 世界標準の高機能なクレーン制御システムを、AWSがメンテナンス付きで貸してくれるサービス
3. 土台:コンピューティング(どこで動かすか)
指揮者(ECSやEKS)が「ここにコンテナを配置しろ!」と命令したとき、実際にそのコンテナを受け入れて動かすための物理的なサーバーが必要になります。
▼ Fargate (ファーゲート)
AWSが提供する、コンテナを実行するための「サーバーレス」な土台
通常コンテナを動かすにはサーバー(EC2)を立ち上げてOSのアップデートなどを管理する必要がありますが、Fargateを使えば「サーバーの管理」を一切AWSに任せることができます。ユーザーは「コンテナを動かしたい」と指定するだけで、裏側のサーバーを意識することなくコンテナを実行できます。
- 例え: 荷物(コンテナ)を載せるための「運転手付きのトラック」。トラックの車検やガソリン(サーバー管理)は運送会社(AWS)がやってくれる
どれを選択すべきか
実務ではこれらを組み合わせて使います。ではどの組み合わせを選ぶべきなのか!
| 組み合わせ例 | 特徴 |
|---|---|
| ECS + Fargate | (AWSで最も人気)シンプルで使いやすく、サーバーの管理も不要。運用が一番ラク。 |
| EKS + Fargate | Kubernetesの標準機能を使いたいが、サーバーの管理はAWSに任せたい場合。 |
| ECS + EC2 | ECSを使いたいが、サーバー(EC2)に特殊な設定が必要だったり、コストを極限までチューニングしたい場合。 |
| EKS + EC2 | Kubernetesの機能をフル活用しつつ、サーバーの細かい挙動もすべて自分たちで制御したい場合。 |
このように、「コンテナ」という箱を、「ECSかEKS」という指揮者がコントロールし、「Fargate」という手間の要らない土台の上で動かす、というのがAWSにおけるモダンなシステム構成の王道パターンなのです!