AWS ECSとEKSの違い

目次

ECRとS3の違い

観点 ECS EKS
基盤 AWS独自 Kubernetes(標準)
学習コスト 低い 高い
移植性 AWSに依存 マルチクラウド対応しやすい
エコシステム AWS連携中心 k8sの巨大エコシステム
運用の複雑さ シンプル 複雑だが柔軟
料金 クラスター料金なし コントロールプレーン料金あり(時間課金)
向く人 AWS中心・手軽に始めたい k8s経験者・大規模/複雑要件

ECS:AWS独自のコンテナオーケストレーション。シンプルで学習コストが低い。
EKS:Kubernetes(クバネティス:k8s)のマネージドサービス。標準的で高機能だが複雑。

AWS純正のオートマ車(ECS)と、業界標準のマニュアル車(EKS)の関係に近いイメージです。

 

ECSは、Elastic Container Serviceの略です。
EKSは、Elastic Kubernetes Serviceの略です。

 

どちらも起動タイプとしてFargate(サーバーレス)かEC2(自前のインスタンス管理)を選べます。

Fargate(ファーゲート)を使えばサーバー管理が不要になり、EC2を使えばインスタンスを細かく制御できます。

 

コントロールプレーン:何をどうするかを決める頭脳・指揮系統の部分
データプレーン:実際に処理(仕事)を行う現場・実働部隊の部分

ECSとは

AWSが独自開発したコンテナオーケストレーションサービスです。

 

主な特徴

・AWS独自の仕組みなので、AWSの他サービスとの統合がシンプル
・設定がわかりやすく、学習コストが低い
・タスク定義(TaskDefinition)でコンテナを定義する
・概念がシンプル(クラスター→サービス→タスク)
・AWSにロックインされるが、その分運用が楽

とにかくAWSでコンテナを手軽に動かしたい場合に向いています。

 

ECSの基本構成

ECR
 └─コンテナイメージ

ECSクラスター
 └─ECSサービス
  └─ECSタスク
   └─コンテナ

ECSでは、主に次の用語を使います。

タスク定義:使用するイメージ、CPU、メモリ、ポートなどの設計書
タスク:タスク定義を基に実際に起動したコンテナ
サービス:指定した数のタスクを常時稼働させる仕組み
クラスター:サービスやタスクをまとめる論理的な単位

EKSとは

Kubernetesをマネージドで提供するサービスです。

Kubernetesのコントロールプレーン運用をAWSが肩代わりしてくれます。

 

主な特徴

・業界標準のKubernetesがそのまま使える
・k8sの豊富なエコシステム(Helm、Operator、各種ツール)が利用可能
・マルチクラウドや移植性が高い(他クラウドのk8sへ移りやすい)
・機能が豊富で柔軟だが、Kubernetes自体の学習コストが高い
・Pod、Deployment、Service、Namespaceなどk8sの概念を理解する必要がある

Kubernetesの知識を活かしたいマルチクラウドを見据えたい複雑な要件に柔軟に対応したい場合に向いています。

 

EKSの基本構成

ECR
 └─コンテナイメージ

EKSクラスター
 └─Deployment
  └─Pod
   └─コンテナ

EKSではKubernetesの用語を使います。

Pod:コンテナを実行する最小単位
Deployment:Podの数や更新方法を管理
Service:Podにアクセスするためのネットワーク設定
Node:Podを実行するEC2などのコンピューティング環境
Cluster:Kubernetes環境全体

EKSはKubernetes互換なので、Helm、ArgoCD、Prometheusなど、Kubernetes向けの幅広いツールを利用できます。

関連の記事

AWS ECRとS3の違い

△上に戻る