PR

FargateとECSの違いを整理してみた【AWS】

AWS
記事内に広告が含まれています。

Amazon ECS(Amazon Elastic Container Service)とAWS Fargateは、説明だけ聞いているとイマイチ理解できない・・・

そんな方も多いのではないでしょうか。

両方ともコンテナサービスですが、ドキュメントだけみてると一体何が違うのか理解しにくい。

私も正しく理解できなかったので、この機会にECSとFargateの違いを整理してみました。

この記事でわかること
  • Amazon ECSのサービス概要
  • AWS Fargateのサービス概要
  • Amazon ECSとAWS Fargateの違い

Amazon ECSとは

Amazon ECSは、コンテナオーケストレーションツールのサービスです。

コンテナオーケストレーションツールとは、複数のコンテナを効率的に管理、デプロイ、スケール、モニタリングするツールです。

Amazon ECSでは、以下のメリットがあります。

リソース効率

コンテナをタスクという単位で管理し、リソースの効率的な配分を行います。これにより、アプリケーションの実行に必要なリソースを最適化することができます。さらに、コンテナをスケールアップ、スケールダウンでき、アプリケーションの可用性を維持することが可能です。

自動復旧

Amazon ECSは、コンテナ、ロードバランサへのヘルスチェックを実施し、異常と判断されたタスクの置き換えを行います。これにより、常に正常稼働しているコンテナが維持され、可用性が向上します。

Amazon ECSの構成

Amazon ECSは、以下の構成で成り立ってます。

タスク

Amazon ECSで起動したコンテナ群は「タスク」と呼びます。タスク内のコンテナは同一のノード上で実行されます。タスクは、「タスク定義」と呼ばれるタスクの設計書に基づいて起動されます。

ノード

コンテナが実行されるコンピューティングリソース(環境)です。タスクを実行するノードは、EC2、またはFargateを使用することが可能です。

タスク定義

Amazon ECS上で管理するタスクを構成するための設定ファイルです。タスクを実行するための設計図みたいなものになります。

タスク定義には、各タスクで使用するDockerイメージや、各コンテナのCPUやメモリ、IAMロールなどを定義します。

Amazon ECSではこのタスク定義に従ってタスクを生成します。

サービス

Amazon ECSクラスタ内で実行されるタスクの必要数を定義するものです。

特定の数のタスクを常に実行することを設定します。このサービスの機能により、タスクのデプロイ、スケーリング、負荷分散を管理します。

タスクで障害が発生した場合に再起動し、指定された数のタスクが常に稼働していることを保証します。

サービスの例

Webサーバを例とした場合、ApacheやNginxなどのタスクを定義し、サービスの数を「3」とした場合、Webサーバのコンテナが常に三つ起動している状態になります。これによりトラフィックの分散などが行えます。

クラスタ

ECSのクラスタは、タスク、またはサービスの論理グループです。以下のようなイメージでグループ化できます。

+-----------------------+
|       クラスタ        |
|  +-----------------+  |
|  |  タスク1       |  |
|  |  (Webサーバー) |  |
|  +-----------------+  |
|  +-----------------+  |
|  |  タスク2       |  |
|  |  (データベース) |  |
|  +-----------------+  |
|  +-----------------+  |
|  |  タスク3       |  |
|  |  (キャッシュ)   |  |
|  +-----------------+  |
+-----------------------+

Amazon ECS Anywhere

Amazon ECS Anywhereは、オンプレミスのサーバや独自の仮想マシンでコンテナベースのアプリケーションを実行、管理できるECSの機能です。ECS Anywhereを利用すると、オンプレミスの環境でコンテナオーケストレーションのためのソフトウェアを入れる必要がないので、オーケストレーションツールをインストールするのに比べると運用管理が軽減されます。

AWS Fargateとは

Amazon ECS、Amazon EKSと連携できるコンテナを実するサーバーレスコンピューティングです。Fargateを利用することでサーバの管理が不要になるため、運用管理が楽になります。

AWS Fargateのメリット

サーバの管理が不要になるため、メンテナンスが不要です。コンテナ環境にEC2を利用するのに比べ、スケーリングやパッチ適用などの運用管理を行う必要がありません。

また、コンピューティングリソースの使用分のみ支払いが行われ、コストが最適化されます。

AWS Fargateの構成要素

Fargateの構成要素はありません。Amazon ECSのコンテナホストとして利用される用途のためです。

上でも説明しましたが、Amazon ECSで利用する際のコンテナホストは、Fargate、または、EC2を選択することができます。

Amazon ECSで利用するコンテナホストは、以下のように選択します。

  • AWS Fargate・・・OSなどの運用管理が不要なるので、基本的にはFargateを利用。
  • EC2・・・独自エージェントやツールのインストールができるので、カスタマイズが必要な場合はEC2を選択します。

Amazon ECSとAWS Fargateの違い

ECSはコンテナオーケストレーションツール、Fargateはコンテナホストです。

AWSでコンテナを利用する場合は、Amazon ECSを利用し、Amazon ECS内で利用するコンテナホストにFargateを指定する、という使い方となります。

このように利用するため、AWS FargateはAmazon ECSを利用する時に指定できる一つの設定という捉え方で問題ありません。

まとめ

  • AWSのコンテナサービスのメインはAmazon ECS
  • AWS Fargateは、Amazon ECSで指定するコンテナホストのサービス
  • そのため、FargateはAmazonECSの設定の一つという位置付け

AmazonECSとAWS Fargateの違いについて、各サービスを解説しながら紹介しました。Amazon ECSはコンテナオーケストレーションツール、AWS Fargateはコンテナホストのサービスという違いで、Amazon ECSの設定でAWS Fargateを選択する、という使い方になります。

コンテナ技術は、マイクロサービス型のアプリケーションを開発する際に必須の技術ですので、AWSのコンテナサービスをしっかり把握することで、AWSクラウド上でマイクロサービスを開発できるようになりましょう

本記事が皆様の参考になれば幸いです。

AWSのクラウドサービスは、日々機能が追加されていきます。
最新情報はAWS公式サイト(ECS)を参照ください。

関連記事:【AWS】LambdaをJavaで作成するには?環境構築から実行方法まで解説!

コメント

タイトルとURLをコピーしました