Fargate
コンテナのためのサーバーレスコンピューティングエンジン
AWSコンテナ
Fargate とは
AWS Fargate は、ECS および EKS のコンテナをサーバーレスで実行するコンピューティングエンジンである。EC2 インスタンスのプロビジョニング、パッチ適用、スケーリングが不要で、コンテナの CPU とメモリを指定するだけでタスクが実行される。
EC2 起動タイプとの比較
| 観点 | Fargate | EC2 起動タイプ |
|---|---|---|
| インフラ管理 | 不要 | EC2 の管理が必要 |
| スケーリング | タスク単位で自動 | Auto Scaling Group の設定 |
| コスト | vCPU + メモリの秒課金 | EC2 インスタンス時間課金 |
| GPU | 非対応 | 対応 |
| カスタマイズ | 制限あり | OS レベルで自由 |
| 起動速度 | 数十秒 | インスタンス起動 + タスク配置 |
Fargate は運用負荷が低い代わりに、同等スペックの EC2 より単価が高い。常時稼働で高負荷なワークロードは EC2 起動タイプ + Savings Plans の方がコスト効率が良い場合がある。
Lambda との使い分け
| 観点 | Lambda | Fargate |
|---|---|---|
| 実行時間 | 最大 15 分 | 無制限 |
| メモリ | 最大 10 GB | 最大 120 GB |
| コンテナイメージ | 10 GB まで | 制限なし |
| 同時実行 | 1000 (デフォルト) | タスク数で制御 |
| コールドスタート | あり (100ms〜数秒) | タスク起動 (数十秒) |
| 課金 | リクエスト + 実行時間 | vCPU + メモリ (秒) |
| 適用場面 | 短時間の API、イベント処理 | 長時間バッチ、常駐サービス |
15 分以内で完了するイベント駆動の処理は Lambda、それ以上の長時間処理や常駐サービスは Fargate が適する。
Fargate Spot
Fargate Spot は、AWS の余剰キャパシティを使って最大 70% 割引でタスクを実行する。中断される可能性があるため、バッチ処理やキューワーカーなど中断耐性のあるワークロードに適する。
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ログドライバーを設定しないと、コンテナのログが消失する
関連書籍も参考になる。