AWS Fargate によるサーバーレスコンテナ運用 - ECS と EKS での活用パターン
Fargate によるサーバーレスコンテナの運用、ECS と EKS での使い分け、タスクサイジングとコスト最適化の手法を解説します。
Fargate の仕組みと EC2 起動タイプとの違い
Fargate は ECS と EKS のサーバーレスコンピューティングエンジンです。EC2 起動タイプではコンテナを実行する EC2 インスタンスのプロビジョニング、スケーリング、パッチ適用を自分で管理しますが、Fargate ではこれらが完全に抽象化されます。タスク定義で vCPU (0.25 から 16) とメモリ (0.5 GiB から 120 GiB) を指定するだけで、AWS がコンテナの実行環境を自動的にプロビジョニングします。各タスクは独立した microVM で実行されるため、タスク間のカーネル共有がなく、セキュリティ分離が強化されています。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
ECS on Fargate と EKS on Fargate の使い分け
ECS on Fargate は AWS ネイティブのコンテナオーケストレーションで、タスク定義、サービス、クラスタの 3 つの概念でシンプルに運用できます。ALB との統合、Service Connect によるサービスメッシュ、CloudMap によるサービスディスカバリが標準で提供されます。EKS on Fargate は Kubernetes の Pod を Fargate 上で実行します。Kubernetes のエコシステム (Helm、Argo CD、Prometheus など) を活用したい場合や、マルチクラウドでの Kubernetes 標準化を進めている場合に選択します。ただし、EKS on Fargate では DaemonSet が使用できない、Pod ごとに ENI が割り当てられるため起動が EC2 ノードより遅いなどの制約があります。
コスト最適化
Fargate の料金は vCPU 秒とメモリ GB 秒の従量課金です。タスクのサイジングを適切に行うことがコスト最適化の鍵です。CloudWatch Container Insights で実際の CPU・メモリ使用率を計測し、過剰にプロビジョニングされたタスクのリソースを削減します。Fargate Spot はオンデマンドの最大 70% 割引で利用でき、中断時に SIGTERM シグナルが送信されてから 30 秒の猶予があります。キューベースのワーカーやバッチ処理など、中断耐性のあるワークロードに適しています。Compute Savings Plans は Fargate、Lambda、EC2 に横断的に適用でき、1 年コミットメントで最大 50% の割引を受けられます。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ
Fargate はコンテナ運用からインフラ管理を排除するサーバーレスコンピューティングエンジンです。ECS on Fargate でシンプルに始め、Kubernetes が必要になったら EKS on Fargate に移行できます。Fargate Spot と Savings Plans を活用してコストを最適化し、Container Insights でリソース使用率を継続的にモニタリングすることが重要です。
AWS の優位点
- EC2 インスタンスの管理が不要で、タスクごとに vCPU とメモリを指定するだけでコンテナが実行される
- ECS on Fargate はシンプルなコンテナオーケストレーションに、EKS on Fargate は Kubernetes エコシステムとの統合が必要な場合に選択する
- Fargate Spot はオンデマンドと比較して最大 70% 割引で、中断耐性のあるバッチ処理やキューワーカーに最適
- タスクごとに独立した ENI (Elastic Network Interface) が割り当てられ、セキュリティグループによるタスクレベルのネットワーク分離を実現する
- Savings Plans (Compute) の適用で、1 年または 3 年のコミットメントにより最大 50% のコスト削減が可能