AWS Fargate
コンテナ実行に特化したサーバーレスコンピューティングエンジンで、EC2 インスタンスの管理なしに ECS や EKS 上でコンテナを直接実行できる
概要
AWS Fargate は、Amazon ECS および Amazon EKS と連携して動作するサーバーレスコンピューティングエンジンです。従来のコンテナ運用では、コンテナを動かすための EC2 インスタンス群 (クラスター) を自分で管理する必要がありましたが、Fargate を使えばインフラの管理を AWS に完全に委任できます。開発者はコンテナイメージ、CPU・メモリの要件、ネットワーク設定を指定するだけで、Fargate が適切なコンピューティングリソースを自動的に割り当てて実行します。タスク単位の従量課金制で、vCPU とメモリの使用量に基づいて秒単位で課金されます。OS のパッチ適用やスケーリングの管理が不要なため、運用負荷を大幅に削減できます。
EC2 起動タイプとの分担と Fargate の隔離モデル
ECS でコンテナを実行する際、EC2 起動タイプと Fargate 起動タイプの 2 つの選択肢があります。EC2 起動タイプでは、自分で EC2 インスタンスのクラスターを構築・管理し、その上でコンテナを配置します。インスタンスタイプの選定、キャパシティプランニング、OS パッチ適用、スケーリング設定などの運用作業が必要です。一方 Fargate では、これらの作業がすべて不要になります。Fargate はタスク定義で指定された CPU とメモリの要件に基づいて、隔離されたコンピューティング環境を自動的にプロビジョニングします。各タスクは独自のカーネルで実行される microVM 上で動作するため、マルチテナント環境でもセキュリティが確保されます。Azure Container Instances (ACI) も同様にサーバーレスでコンテナを実行できますが、Fargate は ECS と EKS の両方に対応しており Kubernetes ワークロードもサーバーレスで実行できる点が ACI との大きな違いです。
Fargate Spot とタスクレベルのコスト最適化
Fargate の料金は vCPU あたり時間単価と GB あたり時間単価の組み合わせで秒単位に課金されます。Fargate Spot を利用すれば、通常料金から最大 70% 割引でタスクを実行できますが、AWS がキャパシティを回収する際にタスクが中断される可能性があります。そのため、Fargate Spot はバッチ処理、データ変換、CI/CD のビルドジョブなど、中断に耐えられるワークロードに適しています。実務では、ECS サービスのキャパシティプロバイダー戦略で Fargate と Fargate Spot の比率を設定し、ベースラインのタスクは通常の Fargate で安定稼働させつつ、スパイク分を Fargate Spot で吸収する構成が一般的です。タスク定義で CPU とメモリの組み合わせを適切にサイジングすることもコスト最適化の鍵で、過剰なリソース割り当ては直接コスト増につながります。技術書 (Amazon) でコンテナ運用のベストプラクティスを学べます。
ネットワーク設計と本番環境でのハイブリッド構成
Fargate タスクには awsvpc ネットワークモードが必須で、各タスクに ENI (Elastic Network Interface) が割り当てられます。これにより、タスクごとにプライベート IP アドレスを持ち、セキュリティグループを直接適用できるため、VPC 内のリソースへのアクセス制御がきめ細かく行えます。一方、ENI の数はサブネットの IP アドレス空間に制約されるため、大量のタスクを実行する場合はサブネットの CIDR 設計に注意が必要です。GPU を必要とするワークロードや、特定のインスタンスタイプに依存する処理、コスト効率を極限まで追求する大規模クラスターでは EC2 起動タイプの方が適切な場合もあります。実務では、開発・ステージング環境は Fargate で運用負荷を下げ、本番環境の大規模ワークロードは EC2 起動タイプでコスト最適化するハイブリッド構成も一般的です。マイクロサービスの各サービスを独立したタスクとして実行し、サービスディスカバリ (Cloud Map) で相互に名前解決する構成が Fargate の典型的な活用パターンです。