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 を追加することで対応します。

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

Fargate (ファーゲート)

AWS 側がインスタンスの管理を行ってくれる方式です。
EC2 のリソースを気にすることなく、コンテナを登録するだけで利用できます

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

ECS と EKS を比較

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

ECS

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

また、組み合わせるデータプレーンは、EC2・Fargate のどちらにも対応しています。

EKS

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

組み合わせるデータプレーンは、EC2 にしか対応していません。
将来的に Fargate にも対応すると言われていますが、時期は未定です。

【追記】2018年12月より、東京リージョンでも EKS が提供開始されました。

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

データプレーンとコントロールプレーンのうち、EKS + Fargate はまだ不可能です。
2019年1月時点の対応状況を以下にまとめました。

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

まとめ

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

コンテナを動かす「データプレーン」、コンテナを管理する「コントロールプレーン」があります。
課金体系は、「EC2インスタンス単位」と「コンテナ単位(Fargate)」の2パターンです。

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

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