AWS Fargate によるサーバーレスコンテナ運用 - ECS と EKS での活用パターン

Fargate によるサーバーレスコンテナの運用、ECS と EKS での使い分け、タスクサイジングとコスト最適化の手法を解説します。

Fargate の仕組みと EC2 起動タイプとの違い

この記事は約 3 分で読めます。 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% のコスト削減が可能

同じテーマの記事

コンテナデプロイの簡素化 - AWS App Runner で実現するゼロ設定デプロイ AWS App Runner を使ったコンテナ Web アプリケーションのデプロイ方法を解説。ECS/Fargate との使い分け、自動スケーリング、VPC 統合、CI/CD パイプラインとの連携まで実践的に紹介します。 AWS App Runner で最速のコンテナデプロイ - ソースコードから本番環境まで数分で App Runner によるソースコードまたはコンテナイメージからの自動デプロイ、オートスケーリング、VPC 接続の設定を解説します。 AWS App Runner でコンテナ Web アプリを即座にデプロイ - ソースコードからの自動ビルドと HTTPS 公開 App Runner によるコンテナアプリケーションのデプロイ、自動スケーリング、カスタムドメインの設定を解説します。 AWS App2Container で既存アプリをコンテナ化 - Java/.NET アプリの ECS/EKS 移行 App2Container による既存アプリケーションの分析、Dockerfile 生成、ECS/EKS へのデプロイを解説します。 コンテナ最適化 OS - Bottlerocket でコンテナホストのセキュリティと運用を強化する AWS Bottlerocket を使ったコンテナホストの最適化を解説。最小限の OS 設計、自動更新、不変インフラ、ECS/EKS との統合を紹介します。 Amazon ECR のコンテナイメージ管理 - ライフサイクルポリシーとイメージスキャン ECR のプライベートリポジトリ管理、ライフサイクルポリシーによるイメージクリーンアップ、イメージスキャンの運用を解説します。 コンテナオーケストレーション - Amazon EKS で実現する Kubernetes 運用の最適化 Amazon EKS を活用した Kubernetes のマネージド運用を解説します。