無限ノック › DVA 練習問題一覧 › 問題
DVAAWSのサービスを使用した開発

ある企業の商品検索APIはLambda関数で実装されており、通常時は低トラフィックですが、セール開始時に数秒で同時リクエストが急増します。開発者は以下の2つの要件を同時に満たしたいと考えています。 ・トラフィックスパイク時のコールドスタートによるレイテンシーを排除したい(実行環境をあらかじめ初期化しておきたい) ・この関数がAWSアカウント全体のコンカレンシー上限(デフォルト1000)を使い切らないよう、最大同時実行数を制限したい どの設定を組み合わせるべきですか?

A
プロビジョンドコンカレンシーのみを設定して実行環境を事前初期化する
プロビジョンドコンカレンシーは実行環境を事前初期化してコールドスタートをなくしますが、最大同時実行数を制限する機能はありません。プロビジョンドを超えたリクエストは通常のオンデマンドコンカレンシーを使用し、アカウント全体のプールを消費し続けます。
B
予約済みコンカレンシーのみを設定して最大同時実行数を制限する
予約済みコンカレンシーはこの関数の最大同時実行数を制限し他関数のコンカレンシーを保護しますが、実行環境を事前初期化する機能はありません。スパイク時にはコールドスタートが発生し、レイテンシー排除の要件を満たせません。
C
プロビジョンドコンカレンシーと予約済みコンカレンシーを組み合わせて設定する
✓ 正解
プロビジョンドコンカレンシーで実行環境を事前初期化してコールドスタートをなくし、予約済みコンカレンシーで最大同時実行数の上限を設けてアカウント全体のプールを保護します。2つの要件を同時に満たす組み合わせです。
D
Lambda関数の最大実行時間(タイムアウト)を短縮してコンカレンシーの消費を抑える
タイムアウト短縮は同時実行数(リクエスト数×平均実行時間)を多少抑える効果がありますが、コールドスタートを排除する機能も最大同時実行数に上限を設ける機能も持ちません。2つの要件をいずれも直接解決できません。

解説

2つの要件を同時に満たすには、2種類のコンカレンシー設定を組み合わせる必要があります。 ①プロビジョンドコンカレンシー(Provisioned Concurrency):指定数の実行環境をあらかじめ初期化しておく設定です。リクエスト到着時に初期化済み環境で即座に実行できるため、コールドスタートによるレイテンシーを排除できます。 ②予約済みコンカレンシー(Reserved Concurrency):この関数が使用できる最大同時実行数を制限する設定です。アカウント全体のコンカレンシープールから指定数を確保し、他の関数のコンカレンシーを圧迫しないよう上限を設けます。 プロビジョンドコンカレンシーだけでは最大同時実行数を制限できず、予約済みコンカレンシーだけではコールドスタートは防げません。両者を組み合わせることで2つの要件を同時に実現できます。 選択肢Aのプロビジョンドコンカレンシーのみではコールドスタートを防げますが、最大同時実行数を制限する機能がないためアカウント全体のプールを消費し続けます。 選択肢Bの予約済みコンカレンシーのみでは最大同時実行数を制限できますが、実行環境の事前初期化機能がないためコールドスタートは発生します。 選択肢DのLambdaタイムアウト短縮はコンカレンシー消費量に間接的に影響しますが、コールドスタートの排除も最大同時実行数の上限設定もできません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る