見出し画像

Amazon ECSについてまとめてみた

AWS初心者向けにAmazon ECSについて解説します!

Amazon ECSとは

Amazon ECS は、フルマネージドコンテナオーケストレーションサービスであり、コンテナ化されたアプリケーションを簡単にデプロイ、管理、およびスケーリングできます。

https://aws.amazon.com/jp/ecs/

ECSはElastic Container Serviceの略で、Dockerのコンテナを管理するサービスです。
コンテナはアプリとアプリの実行環境を1つの箱=コンテナにして動作させる技術のことで、このコンテナを使えばPCの環境が違っていたとしても、アプリを簡単に実行できます。
ECSはフルマネージドなので、AWS側がコンテナ管理の面倒なところを色々とやってくれます。
色々とカタカナが出てきたので整理すると、

コンテナ:
アプリケーションとその依存関係を一つのパッケージにまとめる技術です。コンテナは、アプリケーションを独立して実行するための環境を提供し、ホストOS(オペレーティングシステム)のリソースを共有します。コンテナは軽量で、柔軟性が高く、移植性に優れています。これにより、開発者はアプリケーションを異なる環境で迅速かつ容易にデプロイできます。

Docker:
コンテナ技術を実装し、管理するためのオープンソースプラットフォームです。Dockerは、アプリケーションの開発、配布、運用を効率化することができます。Dockerイメージと呼ばれるテンプレートを使用して、アプリケーションの実行環境を定義し、Dockerコンテナとしてパッケージ化します。これにより、アプリケーションはどの環境でも同じように実行できるようになります。

コンテナオーケストレーション:
複数のコンテナを管理・調整するプロセスです。オーケストレーションは、コンテナのデプロイ、スケーリング、ネットワーキング、および可用性の維持など、コンテナライフサイクル全体をカバーします。


ECSはコンテナは管理するサービスであり、実際にECSを動かす環境としてまた別のサービスを選択する必要があります。
選択肢としてはEC2と Fargateというのがあり、どちらもAWS上の仮想サーバーなのですが、これらの上でECSを動かします。

AWS Fargateとは

AWS Fargate は、サーバーレスで従量制料金のコンピューティングエンジンであり、サーバーを管理することなくアプリケーションの構築に集中することができます。

https://aws.amazon.com/jp/fargate/

EC2と Fargateはどちらも選択できるのですが、FargateはAWSが保守とか管理とか代行してくれて手間が減るので、Fargateを選ぶとそこらへんが楽になります。(EC2はサーバー構築や保守・管理が面倒になりがち)

あとはECSを設定時に出てくる用語について、混乱の元になるので解説すると↓

タスク:
ECS内で実行されるDockerコンテナのインスタンスです。タスクは、タスク定義に基づいて作成・実行され、アプリケーションの実行に必要なリソースや設定が含まれています。

タスク定義:
タスク(コンテナ)を実行するための設計図です。タスク定義には、使用するDockerイメージ、CPUとメモリの割り当て、環境変数、ポートマッピング、ボリューム設定、IAMロールなどの情報が含まれています。タスク定義を作成・更新することで、タスクの挙動を制御できます。

サービス:
タスクを長期間実行するための管理単位です。サービスは、タスクのデプロイ、スケーリング、ロードバランシングを行い、タスクの実行状態を維持します。サービスは、特定のタスク定義を使用して作成され、指定された数のタスクが常に実行されるように保証します。また、サービスは、タスクが失敗した場合に自動的に再起動し、アプリケーションの可用性を向上させます。

クラスター:
タスクおよびサービスのリソースを管理する論理グループです。クラスター内で実行されるタスクは、EC2インスタンスやFargate(サーバーレスコンテナ)といった計算リソースを共有します。クラスターを使用することで、複数のアプリケーションやサービスのリソースを効率的に管理できます。


この記事が気に入ったらサポートをしてみませんか?