Lambda SnapStart と Provisioned Concurrency の違いを教えてください

Lambda SnapStart と Provisioned Concurrency の違いを教えてください

2025.09.26

困っていた内容

コールドスタート対策のため、Lambda SnapStart と Provisioned Concurrency を検討しています。
どのような違いがあり、コールドスタート対策にはどちらが推奨されるか教えてください。

どう対応すればいいの?

コールドスタートの排除が目的の場合、Provisioned Concurrency をご検討ください。

Lambda SnapStart は、初期化された実行環境のキャッシュを利用し、起動時のレイテンシーを低減する機能です。ベストエフォートであり、ワークロードに依存してパフォーマンスが向上しない場合もあります。

Provisioned Concurrency は、指定した数の初期化された実行環境をウォームアップし、意図的にウォームスタートを実現する機能です。指定した範囲内の同時実行数であれば 2 桁ミリ秒台で応答できる状態が期待できます。

Lambda SnapStart Or Provisioned Concurrency Difference

なお、SnapStart はコールドスタートしないことを保証しませんが、予測不可能なスパイクのあるワークロードにおける起動レイテンシーの低減に効果的です。

また、SnapStart は追加費用がかかりますが、コールドスタート時の初期化時間短縮により、Lambda のトータルコストが安くなる場合もあります。

ワークロードや期待する効果に応じて使い分けてください。

なお、SnapStart と Provisioned Concurrency は同時に有効化できません。

参考資料

Q.Lambda SnapStart と Provisioned Concurrency (PC) のどちらを選択すればよいですか?

Lambda SnapStart は、1 回限りの初期化コードの実行中に発生する可変レイテンシーを低減することで、関数の起動時間を高速化するのに役立つパフォーマンス最適化機能です。Lambda SnapStart は起動レイテンシーを低減しますが、ベストエフォート型の最適化として機能し、コールドスタートの排除を保証するものではありません。レイテンシー要件が厳しく、起動時間が 2 桁 (ミリ秒) 必要なアプリケーションでは、PC を使用することをお勧めします。

…(中略)…

Q.同じ機能で Lambda SnapStart と PC の両方を有効にできますか?

いいえ。Lambda SnapStart と PC を同時に、同じ機能で有効にすることはできません。

SnapStart はこれら追加の利用費用がかかりますが、通常、コールドスタートは呼び出しの 1% 未満で発生 します。つまりリストアでSnapStart の利用費用が発生するといっても 99% タイルの呼び出しでは課金されない、ということと、SnapStart によって、従来の SnapStart を使わない場合のコールドスタートの度に行われていた初期化処理の時間分、つまりもともとの関数の Invocation の利用料金分が削減されますので、実行回数が多いワークロードなどは SnapStart を利用したほうがトータルではコストが安くなることがあります。

SnapStart を使用するタイミング

Lambda SnapStart は、モジュールの依存関係やフレームワークのロードなど、1 回限りの初期化コードによって生じるレイテンシーの変動に対処するように設計されています。これらのオペレーションの最初の呼び出し時は、完了に数秒かかることがあります。最適なシナリオでは、SnapStart を使用すると、このレイテンシーが数秒から 1 秒未満に短縮されます。SnapStart は、大規模な関数呼び出しで使用すると最も効果的です。頻繁に呼び出されない関数では、パフォーマンスが同じように向上されない場合があります。

…(中略)…

プロビジョニングされた同時実行は、関数を、初期化され、2 桁ミリ秒台で応答できる状態に維持します。アプリケーションに SnapStart で適切に対処できない厳格なコールドスタートレイテンシー要件がある場合は、プロビジョニングされた同時実行を使用します。

この記事をシェアする

FacebookHatena blogX

関連記事