AWSでコンテナを動かす主な選択肢がAmazon ECSとEKSです。両者はどちらもコンテナオーケストレーションサービスですが、設計思想・運用負荷・コストに違いがあります。本記事では、ECSとEKSの違いと選び方を解説します。
ECSとEKSの概要
- Amazon ECS(Elastic Container Service):AWS独自のコンテナオーケストレーション
- Amazon EKS(Elastic Kubernetes Service):マネージドKubernetes
比較項目
学習コスト
ECSはAWS独自仕様。タスク定義・サービス・クラスタの3層を覚えれば動かせます。EKSはKubernetesそのものなので学習コストが高めですが、ベンダーロックインが薄れます。
運用負荷
- ECS + Fargate:サーバーレスで運用負荷ほぼゼロ
- ECS + EC2:EC2を自分で管理
- EKS + Fargate:コントロールプレーンはマネージドだが、Kubernetesの運用知見が必要
- EKS + EC2:自前運用に近い
料金
- ECS:オーケストレーション自体は無料、コンピュート費用のみ
- EKS:コントロールプレーンに月10ドル/クラスタ程度 + コンピュート費用
移植性
EKSはKubernetes互換のため、GKE・AKS・自社オンプレへの移行が容易です。ECSはAWS固有のため、AWS外への移植は実質的に難しいです。
エコシステム
EKSはKubernetesエコシステム(Helm/ArgoCD/Istio/Prometheus等)がそのまま使えます。ECSはAWSサービス(CloudWatch/ALB/X-Ray等)との統合が深いです。
選び方の指針
- 少人数・スタートアップ・AWSオンリー:ECS + Fargate(運用負荷最小)
- マルチクラウド・将来移行も視野:EKS
- Kubernetesの知見がある:EKS
- SREチームが小さい:ECS
- Helmなど既存のK8s資産を活かしたい:EKS
シンプルな構成例
# ECS Fargate
- Task Definition(コンテナイメージ・CPU/メモリ・ロール)
- Service(タスク数・ALB連携・ヘルスチェック)
- ALB → Service → Task → Container
# EKS
- Cluster(マネージドコントロールプレーン)
- Node Group(EC2 / Fargateプロファイル)
- Deployment + Service + Ingress(K8sマニフェスト)
まとめ
ECSは「AWS完結・運用負荷最小」、EKSは「移植性・エコシステム」が強み。小規模ならECS、複雑な要件・マルチクラウドならEKSを軸に選ぶのが定石です。判断に迷ったら、まずECS + Fargateで最短デプロイし、必要が出てからEKSへ移行するという段階的アプローチも有効です。