AWS コンテナサービス「Fargate」「ECS」「EKS」の違いを解説

クラウドサービス AWS

AWS には、Dockerコンテナを稼働させるためのサービスが複数あります。

主要なものは「Fargate」「ECS」「EKS」などです。
コンテナの稼働に必要な2つの役割を説明した上で、それぞれの違いを解説します。

Lambda と API Gateway の違い
Aurora エンドポイントの使い分け



コンテナサービスは大きく2種類に分かれる

AWS で提供されるコンテナサービスは、2種類に分類することができます。
まずはこれらの違いについて把握しておきましょう。

役割 機能名称 AWS サービス
コンテナのホスト データプレーン Fargate, EC2
コンテナの管理 コントロールプレーン ECS, EKS

 

コンテナが動く場所:データプレーン

データプレーンとは、「コンテナが稼働するサーバー」のことを指します。
AWS では、FargateEC2 が選択できます。

コンテナを管理する:コントロールプレーン

コントロールプレーンとは、「Dockerコンテナを管理する機能」です。
AWS では、ECSEKS が選択できます。オープンソースの Kubernetes も有名です。

コンテナをどのように配置するか、デプロイ時にどのようにコンテナを入れ替えるか、仮想ネットワークの提供など、運用面で必要な各種機能が用意されています。

データプレーン(Fargate/EC2)を比較

コンテナが実際に稼働する「データプレーン」について考えます。

EC2

その名の通り、EC2 インスタンス上でコンテナを動かす 方式です。
リソースが不足した際には、EC2 インスタンスを追加することで対応します。

スポットインスタンスやリザーブドインスンタンスでコストを抑えることが可能です。
EC2 料金を節約する方法

Fargate (ファーゲート)

AWS 側がインスタンスを管理してくれる方式で、読み方は「ファーゲート」です。
裏にあるリソースを気にすることなく、コンテナを登録するだけで利用できます

コンテナ単位(正確にはタスク単位)での料金が発生します。
EC2 方式とは異なり、インスタンス単位での課金ではないため無駄がありません。

コントロールプレーン(ECS/EKS)を比較

次に、コンテナを管理するための「コントロールプレーン」を比較します。

ECS

「EC2 Container Service」の略で、AWS が開発したコンテナ管理サービス です。
AWS 上の各種サービスとスムーズに連携できる特徴を持ちます。

組み合わせるデータプレーンは、EC2・Fargate のどちらでも構いません。

EKS

「Elastic Container Serice for Kubernetes」の略で、Kubernetes のマネージドサービス です。
オープンソースの Kubernetes が殆どそのまま提供されています。

現状では EC2 でしか使用できません。Fargate 対応予定はありますが、時期は未定です。
EC2・Fargate、どちらのデータプレーンとも組み合わせることができます。

【2019/12/04 更新】EKS+Fargateの組み合わせが可能となりました。
【2018/12/20 追記】2018年12月より、東京リージョンでも EKS が提供開始されました。

コンテナサービスの組み合わせ

データプレーンとコントロールプレーンのうち、EKS + Fargate はまだ不可能です。
2019年12月より、全てのコンテナサービスを自由に組み合わせることが可能となりました。

組み合わせ 対応状況
ECS + EC2 OK
ECS + Fargate OK
EKS + EC2 OK
EKS + Fargate OK

【2019/12/04 更新】EKS+Fargateの組み合わせがサポート開始されました。

まとめ

AWS のコンテナ関連サービスについて解説しました。

  • データプレーン:コンテナを動かす場所(EC2/Fargate)
  • コントロールプレーン:コンテナの管理方法(ECS/EKS)

それぞれの特徴を理解したうえで、適切なサービスを選択しましょう。

【関連記事】
AWS のサーバー設置場所まとめ
AWS Lambda と API Gateway の違いとは
AWS でサーバーレス構成を実現するサービス
AWS・GCP・Azure の比較(コンピューティング編)
AWS サービスの解説(コンピューティング編)