はじめに
個人的にECS Fargateを使う機会が多いですが、ここ最近様々なイベントに参加させて頂いて、kubernetesやOpenShiftも需要がありそうなので勉強がてらそれぞれのサービスについてまとめてみました。
AWSでコンテナオーケストレーションと言えば、Amazon Elastic Container Service (ECS)、Amazon Elastic Kubernetes Service (EKS)、Red Hat OpenShift (ROSA) の3つが使えますが、それぞれの特徴、メリット・デメリット、ユースケースを個人的な所感を含め紹介したいと思います。
各サービスの特徴
AWSで利用できるコンテナオーケストレーションサービスと言えば、以下の3種類になります。
それぞれのサービスの特徴を見てみたいと思います。
1. Amazon Elastic Container Service (ECS)
概要: Amazon ECS は、コンテナのデプロイと管理を簡単に行える完全管理型のコンテナオーケストレーションサービス。
主な特徴
・Amazon EC2 インスタンスまたは基盤をAWSが管理する AWS Fargate 上でコンテナを実行。
・AWS との統合により、スケーラビリティ、セキュリティ、高可用性が向上。
・タスク定義とサービスを使用してコンテナを管理。
・ロードバランシング、ログ、モニタリングが統合。
・(他サービスと比べると)学習コストが低い
ユースケース
・小中大と様々な規模のアプリケーションをデプロイ。
・マイクロサービスアーキテクチャの管理。
・CI/CD パイプラインとの統合。
2. Amazon Elastic Kubernetes Service (EKS)
概要: Kubernetes クラスターのセットアップと管理を簡素化するマネージドサービス。
主な特徴
・ハイブリッドおよびマルチクラウド環境に対応。
・セキュリティ、コンプライアンス、スケーラビリティを強化。
・クラスターの自動スケーリングおよびアップデートを提供。
・AWS と統合されたネイティブツール。
ユースケース
・コンテナ化されたアプリケーションの実行。
・ハイブリッドクラウド環境での運用。
・大規模なアプリケーション基盤が必要な場合に選択。
3. OpenShift (ROSA)
概要: AWS上で利用できるOpenShift Container Platform 。AWSとRedHat共同でサポートしフルマネージドとして利用可能。
主な特徴
・Kubernetes の動作に必要な幅広いオプションを提供。
・オンプレのOpenShiftからの移行が用意。その逆もしかり。
・各クラウドプロバイダーで利用可能。
ユースケース
・ハイブリッドクラウド環境での運用。
・Kubernetes のサポートが必要な場合。
・オンプレミスとクラウド間の移行。
・大規模なアプリケーション基盤が必要な場合に選択。
ちょっと所感
それぞれのサービスを見てみると様々な規模で使えるのはAWS ECSかなと思います。
大規模な環境が必要になる場合やオンプレからの移行またはオンプレへの移行要件がある場合はEKSまたはOpenShift (ROSA)を選択するのがよさそうです。
また、コンテナオーケストレーションってどのサービスがよく使われているのか調べてみると、ガートナーのコンテナ管理マジック・クアドラントを見つけました。
図ではGoogle、Microsoft、AWS、RedHatがリーダ的立ち位置にありますが、Google、Microsoft、AWSはクラウドベンダーとなりますので、オンプレでコンテナを使っていくとなるとOpenShift一択になりそうです。

https://www.redhat.com/en/blog/red-hat-named-leader-2025-container-management
メリットとデメリット
前項で各サービスの特徴をまとめてみましたが、それぞれのサービスのメリデメを比較してみたいと思います。
| サービス |
メリット |
デメリット |
| Amazon ECS | - AWS との統合が容易 - EC2 使用でコスト効率が高い -様々な規模で扱える - Fargateであれば基盤の管理がない |
- Kubernetes ほど柔軟性に欠ける - AWS 限定 |
| Amazon EKS | - Kubernetes 互換性 - ハイブリッドクラウド対応 |
- セットアップが複雑 - 管理負担大 - ランニングコストが高い - 学習コストが高い - メンテナンスが大変(特にアップデート) |
| OpenShift (ROSA) | - エンタープライズ向け - ハイブリッドクラウド+オンプレにも対応 - サポートが付いてる |
- ライセンス料金も含むとランニングコスト高 - 学習コストが高い(純正のkubernetes寄りかは低い) -メンテナンスが大変 |
メリデメ所感
手軽にコストを抑えて使う分にはECSがよさそうです。Fargateであれば、基盤の管理は行わなくて良い(AWS管理)ので、運用も楽になると思います。
逆にEKSやOpenShiftはランニングコストが高いですが、大規模なシステムをECSでやろうとすると複雑になりすぎるので、EKSやOpenShiftの選択肢も出てくるかなと思います。
また、調べてみるとkubernetesのメンテナンス(特にアップデート)が大変で、3ヶ月に一回のアップデートに対応しなければいけなさそうです。kubernetes専任の部隊がいれば良いですが、その点OpenShiftはRedHatのサポートも受けられるのが良いですね。
CICDや監視などもECSだとCloudWatchやCodeBuild/Pipelineなどを駆使する必要がありますが、Kubernetes/OpenShiftではOperatorを活用することで導入も楽になりそうです。
まとめ
ECS、EKS、OpenShiftの各サービスの特徴やメリデメを比較してみました。
結局はどんな要件があって、それがECS、EKS、OpenShiftのどれを選択するかになりますが、様々な規模で使えるECSがまず初めの検討になるかなと思います。次に大規模な場合はEKSやOpenShiftが選択に入ってきますが、サポートやメンテナンス、オンプレ移行を考えるとOpenShiftを利用するのが良いように感じました。
まだまだOpenShiftの機能の全体に触れていないので、実際に検証した内容を今後公開できたらと思います。


