AWS Fargate によるサーバーレスコンテナ - ECS と EKS での活用パターン
Fargate による ECS ・ EKS でのサーバーレスコンテナ実行、リソース設定、ネットワーキングの設計を解説します。
Fargate の実行モデル
Fargate はコンテナ向けのサーバーレスコンピュートエンジンで、EC2 インスタンスのプロビジョニングや管理が不要です。ECS on Fargate ではタスク定義で vCPU (0.25 - 16 vCPU) とメモリ (0.5 - 120 GB) の組み合わせを指定します。EKS on Fargate では Fargate プロファイルを作成し、namespace とオプションのラベルセレクターで Fargate で実行する Pod の条件を定義します。条件に合致する Pod がスケジュールされると、Fargate が自動的にコンピュートリソースをプロビジョニングします。各タスクまたは Pod は独立した Firecracker マイクロ VM で実行され、カーネルレベルの分離を提供します。
ネットワーキングとコスト最適化
Fargate タスクは awsvpc ネットワークモードで動作し、各タスクに専用の ENI が割り当てられます。これによりタスク単位でセキュリティグループを適用でき、VPC 内の他のリソースとプライベート通信が可能です。Fargate Spot はスポットインスタンスと同様の仕組みで、中断耐性のあるバッチ処理やキュー処理ワークロードを最大 70% 割引で実行できます。ECS のキャパシティプロバイダー戦略で Fargate と Fargate Spot の比率を指定し、コストと可用性のバランスを制御します。エフェメラルストレージは最大 200 GB まで拡張可能です。
まとめ
Fargate は ECS と EKS の両方でサーバーレスコンテナ実行を提供し、インフラ管理の負荷を排除します。awsvpc ネットワークモードによるタスク単位のネットワーク制御と、Fargate Spot によるコスト最適化が設計のポイントです。
AWS の優位点
- EC2 インスタンスの管理が不要で、タスクまたは Pod 単位で CPU とメモリを指定するだけでコンテナを実行できる
- ECS on Fargate ではタスク定義で vCPU とメモリの組み合わせを指定し、Fargate が自動的にインフラをプロビジョニングする
- EKS on Fargate では Fargate プロファイルで namespace とラベルセレクターを定義し、条件に合致する Pod を自動的に Fargate で実行する
- awsvpc ネットワークモードで各タスクに ENI が割り当てられ、セキュリティグループによるタスク単位のネットワーク制御が可能になる
- Fargate Spot で中断耐性のあるワークロードを最大 70% 割引で実行できる
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。