AWS Fargate によるサーバーレスコンテナ運用 - ECS と EKS での活用パターン
インスタンス管理不要のサーバーレスコンテナで、ECS と EKS での使い分けとタスクサイジングによるコスト最適化を紹介します。
Fargate の仕組みと EC2 起動タイプとの違い
Fargate は ECS と EKS のサーバーレスコンピューティングエンジンです。EC2 起動タイプではコンテナを実行する EC2 インスタンスのプロビジョニング、スケーリング、パッチ適用を自分で管理しますが、Fargate ではこれらが完全に抽象化されます。タスク定義で vCPU (0.25 から 16) とメモリ (0.5 GiB から 120 GiB) を指定するだけで、AWS がコンテナの実行環境を自動的にプロビジョニングします。各タスクは独立した microVM で実行されるため、タスク間のカーネル共有がなく、セキュリティ分離が強化されています。
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% の割引を受けられます。 Fargate について体系的に学びたい方は、関連書籍 (Amazon)も参考になります。
まとめ
Fargate はコンテナ運用からインフラ管理を排除するサーバーレスコンピューティングエンジンです。ECS on Fargate でシンプルに始め、Kubernetes が必要になったら EKS on Fargate に移行できます。Fargate Spot と Savings Plans を活用してコストを最適化し、Container Insights でリソース使用率を継続的にモニタリングすることが重要です。