AWS Fargate
コンテナ実行に特化したサーバーレスコンピューティングエンジンで、EC2 インスタンスの管理なしに ECS や EKS 上でコンテナを直接実行できる
概要
AWS Fargate は、Amazon ECS および Amazon EKS と連携して動作するサーバーレスコンピューティングエンジンです。従来のコンテナ運用では、コンテナを動かすための EC2 インスタンス群 (クラスター) を自分で管理する必要がありましたが、Fargate を使えばインフラの管理を AWS に完全に委任できます。開発者はコンテナイメージ、CPU・メモリの要件、ネットワーク設定を指定するだけで、Fargate が適切なコンピューティングリソースを自動的に割り当てて実行します。タスク単位の従量課金制で、vCPU とメモリの使用量に基づいて秒単位で課金されます。OS のパッチ適用やスケーリングの管理が不要なため、運用負荷を大幅に削減できます。
Fargate の動作原理と EC2 起動タイプとの違い
ECS でコンテナを実行する際、EC2 起動タイプと Fargate 起動タイプの 2 つの選択肢があります。EC2 起動タイプでは、自分で EC2 インスタンスのクラスターを構築・管理し、その上でコンテナを配置します。インスタンスタイプの選定、キャパシティプランニング、OS パッチ適用、スケーリング設定などの運用作業が必要です。一方 Fargate では、これらの作業がすべて不要になります。Fargate はタスク定義で指定された CPU とメモリの要件に基づいて、隔離されたコンピューティング環境を自動的にプロビジョニングします。各タスクは独自のカーネルで実行されるため、マルチテナント環境でもセキュリティが確保されます。Fargate Spot を利用すれば、通常料金から最大 70% 割引でタスクを実行することも可能です。
Azure Container Instances との比較
Azure で Fargate に相当するサービスは Azure Container Instances (ACI) です。ACI もサーバーレスでコンテナを実行できますが、Fargate と比較するといくつかの違いがあります。Fargate は ECS と EKS の両方に対応しており、Kubernetes ワークロードもサーバーレスで実行できますが、ACI は Azure Kubernetes Service (AKS) との統合が Virtual Nodes 経由に限定されます。また、Fargate はタスクごとに ENI (Elastic Network Interface) が割り当てられ、VPC 内のリソースにプライベートにアクセスできる設計が標準です。料金面では、Fargate は vCPU あたり時間単価と GB あたり時間単価の組み合わせで課金され、Fargate Spot による大幅な割引オプションがある点が ACI との差別化ポイントです。
Fargate を選ぶべきユースケース
Fargate はインフラ管理の負荷を最小化したいチームに最適です。マイクロサービスアーキテクチャの各サービスを独立したタスクとして実行する場合、バッチ処理やデータ変換パイプラインを定期実行する場合、CI/CD パイプラインのビルドジョブを実行する場合などに適しています。一方、GPU を必要とするワークロードや、特定のインスタンスタイプに依存する処理、コスト効率を極限まで追求する大規模クラスターでは EC2 起動タイプの方が適切な場合もあります。実務では、開発・ステージング環境は Fargate で運用負荷を下げ、本番環境の大規模ワークロードは EC2 起動タイプでコスト最適化するハイブリッド構成も一般的です。