Fargate

コンテナのためのサーバーレスコンピューティングエンジン

AWSコンテナ
Fargate」の技術書を見る (6 冊) →

Fargate とは

AWS Fargate は、ECS および EKSコンテナサーバーレスで実行するコンピューティングエンジンである。EC2 インスタンスのプロビジョニング、パッチ適用、スケーリングが不要で、コンテナの CPU とメモリを指定するだけでタスクが実行される。

EC2 起動タイプとの比較

EC2 起動タイプとの主な違いを以下に比較する。

観点FargateEC2 起動タイプ
インフラ管理不要EC2 の管理が必要
スケーリングタスク単位で自動Auto Scaling Group の設定
コストvCPU + メモリの秒課金EC2 インスタンス時間課金
GPU非対応対応
カスタマイズ制限ありOS レベルで自由
起動速度数十秒インスタンス起動 + タスク配置

Fargate は運用負荷が低い代わりに、同等スペックの EC2 より単価が高い。常時稼働で高負荷なワークロードは EC2 起動タイプ + Savings Plans の方がコスト効率が良い場合がある。

Lambda との使い分け

Lambda との使い分けを以下に整理する。

観点LambdaFargate
実行時間最大 15 分無制限
メモリ最大 10 GB最大 120 GB
コンテナイメージ10 GB まで制限なし
同時実行1000 (デフォルト)タスク数で制御
コールドスタートあり (100ms〜数秒)タスク起動 (数十秒)
課金リクエスト + 実行時間vCPU + メモリ (秒)
適用場面短時間の API、イベント処理長時間バッチ、常駐サービス

15 分以内で完了するイベント駆動の処理は Lambda、それ以上の長時間処理や常駐サービスは Fargate が適する。

Fargate Spot

Fargate Spot は、AWS の余剰キャパシティを使って最大 70% 割引でタスクを実行する。中断される可能性があるため、バッチ処理やキューワーカーなど中断耐性のあるワークロードに適する。

ECS on Fargate の構成

ECS on Fargate の構成を図で示す。

[ALB][ECS Service (Fargate)]
              ├── Task A (vCPU: 0.5, Memory: 1GB)
              ├── Task B (vCPU: 0.5, Memory: 1GB)
              └── Task C (vCPU: 0.5, Memory: 1GB)

ECS Service がタスクの数を維持し、ALB がトラフィックを分散する。タスク定義で CPU、メモリ、コンテナイメージ、環境変数を指定する。

よくある落とし穴

  • ENI の制限: Fargate タスクは 1 つの ENI を使用する。VPC のサブネットに十分な IP アドレスが必要
  • イメージプルの時間: 大きなコンテナイメージはタスク起動が遅くなる。ECR にイメージを置き、マルチステージビルドでイメージを軽量化する
  • ログの設定漏れ: awslogs ログドライバーを設定しないと、コンテナのログが消失する

関連書籍も参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事