TOP>コラム一覧>【初心者必見】クラウドネイティブとは③―クラウドネイティブをAWSで始める場合の基礎知識~Amazon EC2とEKSの選び方

【初心者必見】クラウドネイティブとは③―クラウドネイティブをAWSで始める場合の基礎知識~Amazon EC2とEKSの選び方

はじめに

こんにちは。CTCの朴木です。
初心者必見「クラウドネイティブとは?」シリーズ。

に続いての③では、クラウドネイティブをAWSで始める場合の基礎知識として、コンテナを使ってアプリケーションを動かす場合、どのAWSサービスを使うのが良いのか?を解説します。

AWSでコンテナを実行しようとするとき、関連するサービスとしてAmazon EKSとAmazon ECSが存在します。今回はこの2つの違いとそれぞれのメリット、デメリットと、選択基準を正しく理解しましょう。

Amazon EKSとAmazon ECSの違いは?どちらを使用すればよい?

AWSには、マネージドなコンテナプラットフォームとしてAmazon EKS(Elastic Kubernetes Service)とAmazon ECS(Elastic Container Service)があります。

どちらも前回②で解説したコンテナオーケストレーションを提供するサービスですが、名称や用途が似通っているため、違いがよく分からない、両方を使う必要がある?など、混乱しがちです。

結論から言えば、AWSでコンテナを実行するためには、どちらかのサービスを使えばOKです。
まずは、それぞれの違いを見ていきましょう。

EKSとECSを分かりやすく分解すると、「コントロールプレーン」と「データプレーン」の2つになります。

コントロールプレーンは、その名のとおりコンテナ環境を管理するサービス。

EKSのコントロールプレーンは、名前のとおりKubernatesが搭載されています。そのため、既にKubernatesを使ってコンテナでアプリ開発をされているエンジニアの方がAWSへ移行するときの選択肢になります。Kubernetesの文脈でコンテナを管理したい場合は、EKSを選択しましょう。

一方、ECSのコントロールプレーンは、Kubernatesを使っていません。AWS自身が開発したコンテナ管理ツールを使うことになります。他の環境でKubernatesを使っておらず馴染みがない、コンテナ環境をAWSで統一していく計画がある、一からKubernatesをはじめるラーニングコストを減らしたい方は、ECSを選択することになります。

データプレーンの選択肢:「Amazon EC2」と「Amazon Fargate」のメリット・デメリット

次に、データプレーンの方をみてみましょう。データプレーンとは、コンテナを稼働させるサーバーリソースとOSのレイヤーです。こちらはECSとEKSのいずれも、AWS EC2を使うかAWS Fargateを使うかが、選択できます。

Amazon ECSとは「Amazon Elastic Container Service」のことで、Amazon EC2インスタンスを用いたDockerコンテナを管理するサービスです。

EC2を使うメリットは、通常のEC2と同様にインスタンスタイプを選べるため、OSやマシンサイズをアプリの状況によってチューニングできる点です。一方、EC2のデメリットとしてはサーバーリソースの設計が必要であり、運用面ではOSの管理業務(パッチ適応など)が発生する点です。

Amazon FargateとはECSとEKSで動作する、ホストマシンを意識せずにコンテナを実行できる環境です。

Amazon Fargateを使うメリットは、コンテナとコンテナの実行環境の2重管理が不要になること。Amazon Fargateは、インスタンスタイプの選定などは全て自動で行ってくれますので、インフラの運用をできるだけしたくない場合は、Fargateを選択しましょう。一方、Amazon Fargateのデメリットとしては特定のEC2インスタンス(GPU)が対応していないなど、柔軟性には欠ける部分があります。

Amazon EKSとAmazon ECSのコスト比較

次に、料金の面はどうでしょうか?それぞれ、どういった課金になるか調べてみました。
※料金の課金形態は2022年11月時点のものです。今後AWSのサービス変更に伴い変わる可能性がありますのでご注意ください。

まずコントールプレーンレイヤーについて。

EKSは、利用するKubernatesが時間単価で課金されます。
一方、ECSで使うクラスターサービスは、課金がありません。

次に、データプレーンのレイヤーについて。
前述の通り、ECSとEKSで使うリソースはEC2かFargateを選べます。

Amazon EC2を使う場合は、EC2のオンデマンドの時間課金と同様です。
Amazon Fargateの場合は、1時間あたりのメモリ利用料とvCPU利用料で課金されます。

コンテナのメリットは「アプリを起動している時のみリソースを起動させる」ことなので、EC2やFargateが24時間動きっぱなしになることはありませんが、やはりコンピューターリソースを使うデータプレーン側のコストは気になると思います。

AWSのコスト最適化の仕組みとして、Compute Savings plansを購入し、ECSやEKSのEC2および、Fargateインスタンスで利用することもできます。ただし、Compute Savings plansはEC2などのサーバーインスタンスの1時間あたりの利用料を1年間もしくは3年間コミットするものです。

ECSやEKSが使うサーバーリソースは常時稼働していないことが前提だと思いますので、「どのぐらい買うべきか」のシミュレーションが非常に難しいところです。

もう一歩踏み込んでお話すると、Compute Savings plansは、同じAWSアカウントの中で共有されますので、ECSやEKSが利用するEC2/Fargateの利用を見込んで購入し、実際にリソースを使わない時間が発生してしまった場合、他に動いているEC2インスタンスに対しても割引が自動的に効く仕組みになっています。

今後、クラウドネイティブ化が進み、コンテナ実行環境におけるコスト最適化への関心が高まってくるに伴い、ECSやEKSが利用するリソースに対してのAWSコスト最適化ができる仕組みが整ってくるものと思います。

まとめ

いかがでしょうか。このシリーズでは3回に渡って、①クラウドネイティブとは?その実現のためのステップ、②実現のためのアーキテクチャー「コンテナ」と「Kubernates」とは? そして③クラウドネイティブをAWSで始める場合の基礎知識として、コンテナを使ってアプリケーションを動かす場合にどのAWSサービスを使うのが良いのか?について、解説しました。

CTCでは、エンタープライズ企業のDX(デジタル・トランスフォーメーション)に欠かせないクラウドネイティブの実現のための、さまざまなAWAソリューションパッケージを提供しています。

ぜひお気軽に、お問い合わせください!

CTCは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。

お問い合わせ

関連コラム

【著者プロフィール】

朴木 瞳(ほうのき ひとみ)

伊藤忠テクノソリューションズ株式会社 クラウドエンジニア

AWSのインフラ構築や技術QAを経験し、現在はアカウント管理に従事。従量削減のためのRIのコストシミュレーションにおいてお客様を支援中。

TOP>コラム一覧>【初心者必見】クラウドネイティブとは③―クラウドネイティブをAWSで始める場合の基礎知識~Amazon EC2とEKSの選び方

pagetop