あるFinTech企業は、Amazon API GatewayとAWS Lambdaで構築した決済処理APIを運用しています。通常時のレイテンシーは50ms未満ですが、月末の処理ピーク時(約1時間に集中)に一部のリクエストで2〜3秒のコールドスタート遅延が発生し、SLA(サービスレベル合意)違反が生じています。月末の1時間だけプロビジョニングを増やしてコールドスタートを排除しつつ、平常時のコストを最小化するための最適な構成はどれですか?
プロビジョニングされた同時実行数(Provisioned Concurrency)は、指定した数のLambda実行環境を事前に初期化された状態で常時維持する機能であり、コールドスタートを完全に排除できます。Application Auto Scalingのスケジューリングアクションと組み合わせることで、月末ピーク開始前にProvisioned Concurrencyを増加させ、終了後に削減してコストを最適化できます。 選択肢Aの予約済み同時実行数(Reserved Concurrency)は関数が使用できる同時実行数の上限を設定する機能であり、実行環境を事前初期化する機能ではないためコールドスタートは依然発生します。他の関数による同時実行枠の侵食を防ぐ目的で使います。 選択肢Cのメモリサイズを10,240MBに設定することで、CPU処理速度が向上してコールドスタートの所要時間を短縮できますが、コールドスタート自体をゼロにすることはできず、常時最大メモリを消費するため平常時のコストが過大になります。 選択肢DのSnapStart機能は、Java(11/17/21)・Python・.NETなど一部のランタイムに対応していますが、Node.jsには非対応です。SnapStartはデプロイ時のスナップショットから復元することでコールドスタートを大幅に短縮しますが、Provisioned Concurrencyのような需要に応じた動的なスケール制御はできず、月末ピーク時の同時実行数を柔軟に管理する要件には不向きです。