AWS Elastic Container Service (ECS) は、Amazon 独自のコンテナーオーケストレーションプラットフォームです。使いやすさが特徴ですが、コンテナーオーケストレーションの事実上の標準である Kubernetes に対する本当の代替手段と言えるのでしょうか?
本稿では、ECS を純粋な Kubernetes と比較するのは完全には適切でないと主張します。なぜなら ECS は Kubernetes が提供していない フルマネージドな体験を提供するからです。さらに、同じ条件で比較可能にする第 3 の選択肢として Amazon Elastic Kubernetes Service (EKS) を検討します。また、NetApp Cloud Volumes ONTAP が AWS 上で ECS、EKS、あるいは純粋な Kubernetes に対してどのようにストレージを提供できるかも紹介します。
Amazon Elastic Container Service(Amazon ECS) は、Docker コンテナーを実行・管理するコンテナーオーケストレーションサービスです。Amazon クラウド上で仮想マシンのクラスターを稼働させ、複数の アベイラビリティーゾーン(AZ) にわたって、これらのマシン上のコンテナー群の管理・スケーリング・スケジューリングを行います。
ECS は、クラスターの状態をプログラム的に確認・変更し、コンテナーに対して操作を実行し、さらにクラスターに関連する IAM、CloudWatch、CloudTrail といった Amazon サービスへ直接アクセスできる便利な方法を提供します。

Amazon ECS の利点:
ECS ではコンテナーを、仮想マシンを直接管理することなく稼働させることができます。サービスが VM を自動的にプロビジョニングし、その上でコンテナーを管理します。
Amazon ECS はデフォルトでセキュアに構成されています。すべてのコンテナーは Virtual Private Cloud(VPC) 内で起動され、分離された安全なネットワークを利用します。
ECS は、コンテナ化されたワークロードに有用な他の Amazon サービスと密接に統合されています。例:Elastic Load Balancing、CloudWatch、CloudFormation、IAM。
コンテナーは不変であるため、多くのワークロードを Amazon EC2 スポットインスタンス 上で実行できます(スポットインスタンスは予告なしに終了される可能性があります)。これにより、オンデマンドインスタンスと比べて最大 90% のコスト削減が可能です。
Kubernetes は、コンテナーオーケストレーションのための オープンソースフレームワーク です。もともとは Google によって開発され、世界最大規模のコンテナ化システムを運用してきた経験に基づいています。現在では広く普及しており、コンテナーオーケストレーションの 事実上の標準 とされています。
Kubernetes の主な機能:

図 – Kubernetes クラスター(出典:Kubernetes.io)
Kubernetes と Amazon ECS の比較は、完全に公平とは言えません。なぜなら Amazon ECS は、コンテナーオーケストレーションのプラットフォーム と、これを運用しハードウェアリソースを提供する マネージドサービス の 2 要素を 1 つの製品に統合しているのに対し、Kubernetes はそのうち オーケストレーション部分のみ を提供しているからです。
現在、多くの企業が Kubernetes の複雑さを軽減し、より迅速に本番稼働できるようにする マネージド Kubernetes サービス を採用しています。代表例として Amazon Elastic Kubernetes Service (EKS)、Azure Kubernetes Service (AKS)、Google Kubernetes Engine (GKE) があります。これらのサービスは Kubernetes に管理レイヤーを追加し、Amazon ECS と直接比較できるようにしています。
Kubernetes の利点
Kubernetes コンテナーは VM に直接アクセスすることなく実行できます。また、AWS Fargate や Azure Container Instances と統合された、真のサーバーレス Kubernetes ソリューションも存在します。
Kubernetes は独自のプライベートネットワークを構築し、隔離された安全なネットワークリソースを提供します。
Amazon ECS と異なり、Kubernetes はプラットフォームに依存せず、あらゆるクラウドベンダーやオンプレミス環境で動作可能です。Kubernetes ワークロードは可搬性が高く、ハイブリッドクラウドやマルチクラウド戦略をサポートします。
Kubernetes は大規模なオープンソースコミュニティに支えられ、豊富なツールやプラグインのエコシステム、強力なサポート、そして積極的な開発ロードマップを備えています。
Kubernetes は、あらゆるコンテナーオーケストレーションプラットフォームの中で最も豊富な本番運用経験を持ち、ほぼすべてのスケールで堅牢かつ信頼性の高い実績を示しています。
AWS ECS は、AWS 内でコンテナーサービスを管理する方法を提供します。
しかし、Kubernetes を直接 AWS サービス内で運用したい場合はどうでしょうか?
ここで登場するのが Amazon Elastic Kubernetes Service(Amazon EKS) です。これは AWS における Kubernetes の 管理プラットフォーム です。
EKS は Kubernetes プロジェクトによって認証されているため、Kubernetes エコシステムで利用している既存のアプリケーション、ツール、プラグインはすべて EKS 上で動作することが保証されています。
以下に ECS と EKS の主な相違点を示します。
| Amazon ECS | Amazon EKS | |
| 価格 | ECS 自体は無料で、使用した Amazon EC2 リソースに対してのみ料金を支払います。 | EKS管理レイヤでは、クラスタあたり月額144ドルの追加コストが発生します。 |
| 導入の容易さ | AWSマネジメント コンソールから直接、タスクをシームレスに導入します。 | クラスタの構成と導入にはKopsやCloudFormationのテンプレートを使用しますが、これはより複雑です。 |
| 互換性 | Amazon固有。 | マルチクラウド環境とハイブリッド クラウド環境をサポートします。 |
Amazon ECS、EKS、そして自己管理型 Kubernetes の選択は、プロジェクトの規模と種類によって異なります。
コンテナ化されたワークロードを導入する際、Kubernetes と Amazon ECS の両方には特定の制約があり、追加のサポートなしでエンタープライズレベルでの利用を難しくすることがあります。例えば、データベースなどでコンテナー内にデータを永続的に保存する必要がある場合のコストや、テスト目的でコンテナー内のデータが必要な場合などです。まさにここで役立つのが NetApp Cloud Volumes ONTAP です。
NetApp Cloud Volumes ONTAP は、エンタープライズ向けデータ管理のリーディングソリューションであり、AWS、Azure、Google Cloud 上に構築された安全で実績あるストレージ管理サービスを提供します。NetApp Trident を活用することで、Azure Disk、Amazon EBS、Google Persistent Disk 上にストレージボリュームを動的かつ自動的にプロビジョニングでき、ユーザー側での手間は一切不要です。
Cloud Volumes ONTAP は、ファイルサービス、データベース、DevOps、アプリケーションワークロードといった主要なエンタープライズユースケースをサポートします。特に Kubernetes ストレージ分野では、コンテナ化されたワークロードの永続ストレージ要件を満たすための緊密な統合を実現し、クラウドネイティブでは利用できない強力な機能群を提供します。
その主な機能には以下が含まれます: