コンテナサービス(ECS / EKS / Fargate)

AWSはコンテナ化されたアプリケーションを管理・実行するための複数のサービスを提供しています。ECS・EKS・Fargate・ECR の 4 つの役割と使い分けを理解しましょう。

概要

コンテナとは

コンテナは、アプリケーションの実行に必要なコード・ランタイム・ライブラリ・設定ファイルをひとまとめにしたパッケージです。「どの環境でも同じように動く」という一貫性が最大のメリットです。

仮想マシン(EC2)との違い

比較項目 仮想マシン(EC2) コンテナ
OS 各 VM がゲスト OS を持つ ホスト OS のカーネルを共有する
起動時間 数分かかる 数秒で起動できる
リソース消費 多い(OS 分のオーバーヘッド) 少ない(軽量)
ポータビリティ 移植に手間がかかる イメージをどこでも動かせる

コンテナはより軽量・高速ですが、OS の完全な分離は仮想マシンより低くなります。用途に応じて使い分けます。

CP試験で押さえるポイント

4 つのサービスの役割と対応関係

AWS のコンテナ関連サービスは「コンテナイメージの保管」「オーケストレーション」「実行基盤」の 3 層に分かれます。

サービス 略称 役割 特徴
ECR
Elastic Container Registry
ECR コンテナイメージの保管・管理 Docker イメージを安全に格納する AWS マネージドレジストリ。IAM でアクセス制御可能
ECS
Elastic Container Service
ECS コンテナの起動・管理・スケーリング(AWS ネイティブ) AWS が独自に開発したオーケストレーター。設定がシンプルで AWS との統合が深い
EKS
Elastic Kubernetes Service
EKS コンテナの起動・管理・スケーリング(Kubernetes) オープンソースの Kubernetes をマネージドサービスとして提供。Kubernetes の知識がある場合に選択
Fargate — コンテナの実行基盤(サーバーレス) ECS または EKS の「起動タイプ」として使用。EC2 インスタンスのプロビジョニングが不要

ECS(Elastic Container Service)

ECS は AWS が独自に開発したコンテナオーケストレーションサービスです。「タスク定義」と呼ばれる設定ファイルでコンテナの動作を定義し、「サービス」と呼ばれる管理単位でコンテナの起動数・ヘルスチェック・ロードバランサーとの統合を設定します。

EKS(Elastic Kubernetes Service)

EKS は、オープンソースのコンテナオーケストレーションツール「Kubernetes(K8s)」をマネージドサービスとして提供するものです。Kubernetes のコントロールプレーン(管理層)の運用を AWS が担います。

Fargate(サーバーレスな実行基盤)

Fargate は ECS や EKS の「起動タイプ」のひとつです。Fargate を選択すると、コンテナを実行する EC2 インスタンス(サーバー)の管理が一切不要になります。

比較項目 EC2 起動タイプ Fargate 起動タイプ
EC2 インスタンスの管理 必要(自分でプロビジョニング) 不要(AWS が管理)
OS パッチ適用 顧客の責任 AWS の責任
コスト最適化 インスタンスタイプを細かく制御できる 使用したコンテナのリソース分だけ課金
適した場面 インフラを細かくコントロールしたい インフラ管理をなくしてアプリ開発に集中したい

ECR(Elastic Container Registry)

ECR はコンテナイメージを保管・管理する AWS マネージドなレジストリサービスです。Docker Hub のような公開レジストリの代わりに、AWS 内でプライベートかつ安全にイメージを管理できます。

関連サービスとの違い・使い分け

サービス サーバー管理 選ぶ場面
ECS + Fargate 不要 AWS ネイティブかつサーバーレスでコンテナを動かしたい
EKS + Fargate 不要 Kubernetes を使いつつサーバー管理をなくしたい
EC2 必要 OS レベルで細かく制御したい・コンテナを使わない場合
Lambda 不要 15 分以内の短時間処理・イベント駆動の処理

確認問題

付録:公式ドキュメント・Black Belt 動画

さらに深く学びたい方は、AWS公式の以下のリソースを参照してください(いずれも外部サイトが開きます)。

公式ドキュメント

AWS Black Belt Online Seminar(動画・解説資料)