Skip to content
Latchkey

Fargate vs Lambda: コンテナかfunctionか?

Fargateは時間制限なしでserverlessコンテナを実行し、Lambdaは呼び出しと実行時間に応じて課金される短命なserverless functionsを実行します。

Lambdaは、リクエスト単位の課金とほぼゼロのアイドルコストで、イベント駆動の短命なワークロードに優れていますが、実行時間とパッケージサイズに上限があります。Fargateは、既存のコンテナイメージを使い、サーバーを管理せずに、安定したまたは長時間動くサービス向けに長命なコンテナ (ECSまたはEKSで) を実行します。Lambdaはバースト的なイベントワークロードを重視し、Fargateは永続的なコンテナ化サービスを重視します。

FargateLambda
単位コンテナtaskFunction
実行時間厳しい制限なし最大15分
課金vCPU/メモリを秒単位リクエスト単位 + 実行時間
Cold starttaskの起動高速、緩和可能
最適な用途長時間動くサービスバースト的なイベント駆動

ユースケースとコスト

Lambdaは、実行中のみ課金されるAPI、イベント処理、スパイク的なトラフィックに向いています。Fargateは、継続的に動く、Lambdaの制限を超える、またはすでにコンテナとして出荷されているサービスに向いています。安定した高い稼働率にはFargate (またはEC2) の方が安上がりなことが多く、バースト的またはアイドルの多いワークロードではLambdaが勝ります。

CIとdeployでは

Lambdaはzip/コンテナイメージ経由でdeployし、FargateはECRへのイメージpushにtask-definitionの更新を加えて、すべてOIDCでCIからdeployします。いずれもマネージドrunnerからdeployでき、より速いrunnerがパッケージング、イメージのbuild、rolloutを短縮します。

結論

短命、イベント駆動、またはスパイク的なワークロードでアイドルコストがほぼゼロなら: Lambda。長時間動くコンテナベースのサービスやLambdaの制限を超えるものなら: Fargate。多くのアーキテクチャは両方を組み合わせます - イベントとグルーにLambda、永続サービスにFargate。

関連ガイド