AWS自身が考えるECSとEKSの役割
目次
AWS自身はECSとEKSの役割分担をどう考えているのか?
AWS関連のコンテナサービスには、ECS(Elastic Container Service)とEKS(Elastic Kubernetes Service)が存在しています。これらのサービスの概要については、『AWSにおけるコンテナサービスECS』(https://www.stylez.co.jp/columns/container_service_ecs_in_aws/)をご参照いただくとして、AWSはなぜ、よく似たコンテナサービスである「ECS」と「EKS」を両方リリースしたのでしょうか。本記事では、ECSとEKSの違いについて、開発された背景を交えながら分かりやすく解説します。
AWSの考えとは?
そもそもECSとEKSの開発を行った当事者であるAWSはどのように考えているのでしょうか?
AWSのクラウドアーキテクチャ戦略を担当するエイドリアン・コックロフト氏の記事(https://atmarkit.itmedia.co.jp/ait/articles/1806/11/news029.html)をみてみると、
- 『Kubernetesを採用したサービスをAWSが生み出した理由は、「ポータビリティ(可搬性)」と機能性』
- 『ECSはKubernetesに比べてはるかに運用がしやすく、低コストで、マルチテナントのプラットフォームとしての効率が非常に高い。一方Kubernetesは、(仮想)マシン数にして100から1000くらいまでの、中小規模データセンターに向いている。』
と記載があります。つまり、EKSとECSはそもそも開発思想として、想定している利用者や利用場面が異なっている、ということになります。ECS、EKSそれぞれの利用者の想定はどのように異なっているのか、具体的に見ていきましょう。
AWS上でコンテナを活用できるスタイルズのAWSコンテナ構築、運用サービスはこちら→
オープンソースソフトウェアとクローズドソフト
EKSとECSの違いを解説する前に、オープンソースソフトウェア(OSS)とクローズドソフトの違いについて説明していきます。OSSは、作成者がソースコードを無償で公開していて、利用や改変、再配布が自由に許可されているソフトウェアのことを指します。
代表的なOSSには、オペレーティングソフトであるLinux、RDBMSのMySQLなどがあります。利用のためにベンダーとの契約が必要なクローズドソフトと異なり、OSSは、無料でダウンロードおよびインストールを行うことができます。そのため、コストや調達スピードがクローズドソフトと比較して圧倒的に優位であり、導入のための技術検証(PoC)を行う敷居が非常に低いのが特徴です。
また、世界中の技術者が開発を行うため、開発速度も非常に速く、標準化が進みやすい、という特徴もあります。
EKSはオンプレミスとの相互運用性のためにある
EKSのベースとなっているサービスである、Kubernetesは、オープンソースソフトのコンテナ管理ソフトウェアです。そのため、Kubernetesを使いたい人は無料でインストールが可能であるため、データセンターに設置したオンプレミスのサーバーにKubernetesをインストールして利用することが可能です。
また、Kubernetesもとに開発されているクラウドサービスは、AWSだけでなく、Microsoft AzureやGoogle Cloud Platformでも提供されています。これらのことから、Kubernetesはどこでも稼働する上に、Kubernetes上で動くコンテナも、オンプレミスやAWS、その他のクラウドでどこでも動かすことができる環境が提供されている、ということになります。
したがって、AWSの考えでは、EKSはオンプレミス上のKubernetesと併用し、ITインフラ運用の標準化や、コンテナの可搬性を担保する目的で使うとよい、ということになります。
ECSはKubernetes(=EKS)に比べて優れているとAWSは考えている
エイドリアン・コックロフト氏はECSについて、『ECSはKubernetesに比べてはるかに運用がしやすく、低コストで、マルチテナントのプラットフォームとしての効率が非常に高い。』と言及しています。この発言から、ECSがどのような点で優れているのか、記載していきます。
運用のしやすさについて
まず、『運用のしやすさ』については、だれの視点で運用がしやすいのか、を考える必要があります。ITインフラを構築・運用している人間で、Kubernetesしか使ったことが無い人であれば、当然EKSのほうが運用しやすい、ということになります。
したがって、ここで言及されているECSのユーザーは、コンテナをあまり使ったことが無い一般企業やIT企業の担当者、ということになります。EKS(Kubernetes)は、その概念について覚えることが非常に多く、頻繁(3か月に1回程度)にバージョンアップもされるため、Kubernetesに慣れていない人は運用が非常に大変です。一方でECSではバージョンアップは当然ユーザー側で行う必要がなく、覚える概念についてもEKSほど多くはありません。
コストについて
ECSとEKSを利用する際のコストについて見ていきます。ECS、EKSともに、『クラスター』と呼ばれる、コンテナを稼働させるサーバーを立ち上げて利用する形式をとっておりますが、ECSはクラスターの起動を無料で行うことができます。
一方で、EKSは2021年9月現在、クラスターを起動している時間につき、毎時0.1USD課金が発生します。1か月に換算すると、72ドル程度の課金になります。このように、単純な料金で見ても、ECSのほうが安く利用することが可能です。また、EKSは定期的にバージョンアップを行っていく必要があり、それらの対応コストも踏まえると、ECSよりも長期的な視点で運用コストが膨れ上がっていくことが予想されます。
AWS上でコンテナを活用できるスタイルズのAWSコンテナ構築、運用サービスはこちら→
EKSの学習コストとメンテナンスコストの高さは本当か?
Kubernetesの運用を行っていくうえで覚える必要がある内容としては、Kubernetesを構成するyamlファイルの設定内容や、Kubernetesを運用する上で利用するkubectlコマンドの使い方です。また、内部構造についてどのような構造になっているのか、外部との通信はどのように行えばいいのか、といった基本的な概念についても覚える必要があります。
ECSでは、AWSのCLIコマンドがそのまま利用可能であり、AWS VPCやELBといった、AWSの他のサービスと連携することで外部通信や監視等の運用が可能です。したがって、ECSのほうがEKSよりも圧倒的に学習コストが低くなります。また、先述の通り、EKSは3か月に1回程度、バージョンアップ作業を行う必要があるため、運用コストもECSよりはかかってしまいます。
ただし、オンプレミスや他のクラウドでKubernetesを利用している場合は、逆に運用を標準化することができるため、運用コストが下がります。したがって、ECSとEKSの使い分けとしては、
- ECSはAWSというプラットフォームでコンテナを動かすためのもので、他の環境でKubernetesを使っていない場合や、コンテナに慣れていない場合
- EKSはKubernetesというプラットフォームでコンテナを動かすためのもので、他の環境でもKubernetesを使っている場合
に利用するといいでしょう。
十分な技術スキルと経験がなければECSを選ぼう
ECSは様々な機能があり、コンテナでITシステムを構築するためのインフラとして十分に役割を果たすことができます。また、コンテナを使うための入門としても最適です。コンテナの運用管理に十分なスキルがない場合には、ECSを利用していくといいでしょう。コンテナに関するナレッジ等がたまった場合や、オンプレミス、他のクラウド(AzureやGCP)など、マルチプラットフォームでコンテナを運用していく必要性が生じた場合は、EKSを検討していくといいでしょう。