ある企業の商品検索APIはLambda関数で実装されており、通常時は低トラフィックですが、セール開始時に数秒で同時リクエストが急増します。開発者は以下の2つの要件を同時に満たしたいと考えています。 ・トラフィックスパイク時のコールドスタートによるレイテンシーを排除したい(実行環境をあらかじめ初期化しておきたい) ・この関数がAWSアカウント全体のコンカレンシー上限(デフォルト1000)を使い切らないよう、最大同時実行数を制限したい どの設定を組み合わせるべきですか?
2つの要件を同時に満たすには、2種類のコンカレンシー設定を組み合わせる必要があります。 ①プロビジョンドコンカレンシー(Provisioned Concurrency):指定数の実行環境をあらかじめ初期化しておく設定です。リクエスト到着時に初期化済み環境で即座に実行できるため、コールドスタートによるレイテンシーを排除できます。 ②予約済みコンカレンシー(Reserved Concurrency):この関数が使用できる最大同時実行数を制限する設定です。アカウント全体のコンカレンシープールから指定数を確保し、他の関数のコンカレンシーを圧迫しないよう上限を設けます。 プロビジョンドコンカレンシーだけでは最大同時実行数を制限できず、予約済みコンカレンシーだけではコールドスタートは防げません。両者を組み合わせることで2つの要件を同時に実現できます。 選択肢Aのプロビジョンドコンカレンシーのみではコールドスタートを防げますが、最大同時実行数を制限する機能がないためアカウント全体のプールを消費し続けます。 選択肢Bの予約済みコンカレンシーのみでは最大同時実行数を制限できますが、実行環境の事前初期化機能がないためコールドスタートは発生します。 選択肢DのLambdaタイムアウト短縮はコンカレンシー消費量に間接的に影響しますが、コールドスタートの排除も最大同時実行数の上限設定もできません。