この記事について
AWSにおけるコンテナオーケストレーションツールとして定番になっているECSとサーバレスでECSを稼働させるFargateについて、入門向けに説明します。
まだECSやFargateについて知らない、理解してない方がいればぜひご一読ください。
また別の記事にFargateを利用してWebサイトを構築する方法についても記載しておりますので、併せてご参照いただけると幸いです。
この記事のゴール
ECSとFargateが何かを理解する
ECSとは
- AWSが提供するフルマネージドコンテナオーケストレーションサービス
- オーケストレーション = 管理
オーケストレーションがある世界/ない世界
オーケストレーションがない世界(管理対象1つ)
オーケストレーションサービスがない世界(管理対象複数)
オーケストレーションがある世界
つまりECSとは
コンテナをいい感じに管理してくれるサービス
参考:AWSのオーケストレーションサービス
Fargateとは
- ECSで利用可能なサーバレスコンテナ実行環境
- ECSの基盤となるインスタンスの管理をオフロードする
- つまり管理者はインスタンスの運用から解放される
コントロールプレーン/データプレーン
AWS(ECSやEKS)のコンテナサービスはコントロールプレーンとデータプレーンの2つで構成される。
データプレーンには2種類ある
ではデータプレーンはEC2とFargateどちらを利用するべきか? => 特別な理由がない限りはFargateを使うべし!
Fargateだと若干ランニングコストが高くなる、ただしインスタンス管理の運用コストが発生しない。
それに対してEC2だとランニングコストは安くなるが、インスタンス管理の運用コストが発生する。
運用コストを考慮するとEC2の方が安くなるわけではないので、運用コストがかからないFargateを利用した方が良い。
参考
FargateとEC2を比較した結果、FargateではなくEC2を剪定したケースもあります。
https://tech.uzabase.com/entry/2022/12/01/175423
本格的な検討をする際は優先度や料金シミュレーションをするべきだと思います。
ECSの構成要素
- クラスター
- タスク
- タスク定義
- サービス
クラスター
ただの箱
- サービスとタスクを分離するための論理グループ
- 実行環境やIAM権限の境界線
タスク
アプリケーションを実行するコンテナ群
- アプリケーションの実行単位
- 1つ以上のコンテナから構成される
- (同じタスクのコンテナは同じホスト上で稼働する)
タスク定義
タスクの金型
- タスクを構成するテンプレート
- アプリケーションを構成する1つ以上のコンテナを定義する
- JSON形式で記述される
サービス
タスクの管理人
- 起動タイプを指定(Fargate or EC2)
- タスク実行数を定義
- タスク数を維持
- ELBと連携
ECSにおけるコンテナの実行方法
ECSにおいてコンテナを実行させる方法は2つある。
方法1. タスクから直接実行
- コンテナが終了したら、タスクも終了
- バッチ処理などにて利用する
方法2. サービスから実行
- 指定したタスク数を維持する
- ELBなどの他サービスとの連携が可能
- Webアプリケーションなどの常時起動処理にて利用する
ECSで稼働するアプリケーションの更新方法
タスク定義の新しいリビジョンを作成して、サービスにてリビジョンの指定を更新する
更新後(サービスが参照するタスク定義のリビジョンが更新される)
まとめ
- ECSとは
- AWSが提供するフルマネージドコンテナオーケストレーションサービス
- オーケストレーション = 管理
- コンテナをいい感じに管理してくれるサービス
- Fargateとは
- ECSで利用可能なサーバレスコンテナ実行環境
- ECSの基盤となるインスタンスの管理をオフロードする
- 管理者はインスタンスの運用から解放される
- ECSの構成要素
- クラスター =
ただの箱
- タスク =
アプリケーションを実行するコンテナ群
- タスク定義 =
タスクの金型
- サービス =
タスクの管理人
- クラスター =