AWS Fargate とは?AWS のサーバーレスコンテナ
AWS Fargate はコンテナ向けのサーバーレス compute エンジンです。task ごとに CPU とメモリを指定すると、AWS が基盤となるキャパシティをプロビジョニングして実行します。
ECS や EKS では、通常は誰かがコンテナをホストするための EC2 インスタンスのフリートを管理します。Fargate はその仕事を取り除きます。各 task が必要とするものを定義すれば、Fargate が AWS のプロビジョニング・パッチ適用済みキャパシティ上で実行します。サイジング、スケール、セキュリティ確保が必要なノードはありません。
Fargate は EC2 launch とどう違うか
EC2 launch type ではインスタンスに料金を払い管理し、task をそこへ詰め込みます。Fargate では task が要求した CPU とメモリの分だけを task 単位で支払います。ノードのフリートがないため、キャパシティプランニング、OS のパッチ適用、bin-packing を気にする必要がありません。
task 単位の分離
各 Fargate task は独自のカーネル境界を持つ独立した環境で実行されるため、共有ホスト上の co-tenant なコンテナよりも強い分離が得られます。これはマルチテナントやセキュリティに敏感な workload にとって重要です。
トレードオフ
- 運用のオーバーヘッドが少なく、管理するサーバーがない。
- task 単位の料金は、密に詰め込んだ EC2 より高くつくことがある。
- ホストやインスタンスタイプへの制御が少ない。
- スパイクの多い、バースト的な、あるいは低運用の workload に最適。
ECS と EKS で動作する
Fargate は launch type であり、別個のオーケストレーターではありません。ECS の task definition や EKS の pod は引き続き定義し、Fargate はただ compute を供給します。つまり同じ cluster 内で Fargate と EC2 のキャパシティを混在させられます。
CI/CD での役割
パイプラインはイメージを ECR へプッシュし、Fargate 向けに構成された ECS サービスを更新します。AWS はデプロイ時に task の compute をプロビジョニングします。ノードのフリートがないためデプロイはより単純で、事前にスケールしておくものもありません。認証には通常の IAM/OIDC role を使います。
重要なポイント
- Fargate はコンテナをサーバーレスに実行し、管理すべきノードなしで task 単位に compute をサイジングします。
- 別個のシステムではなく、ECS と EKS の launch type として機能します。
- パイプラインは ECR へプッシュし、Fargate ベースのサービスを更新することでデプロイします。