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

API GatewayのREST APIが、Lambdaを介してDynamoDBから商品情報を返す読み取り中心のエンドポイントを公開しています。同一のクエリ文字列による繰り返しリクエストが非常に多く、Lambda呼び出しとDynamoDB読み取りの両方のコストを削減したいです。バックエンドの呼び出し自体を減らせる、最も運用負荷の低い方法はどれですか。

A
API Gatewayのステージキャッシュを有効化し、クエリ文字列をキャッシュキーに含めてレスポンスをキャッシュする
✓ 正解
ステージキャッシュはレスポンス全体をAPI Gateway内に保持し、ヒット時はLambdaを呼ばず応答するためLambda呼び出しとDynamoDB読み取りの両方を削減できます。クエリ文字列をキャッシュキーに含め、ステージ設定のみで完結するため運用負荷も最小です。
B
DynamoDBの前段にDAXクラスターを配置し、頻繁に読み取られる項目をキャッシュする
DAXはDynamoDBの読み取りをマイクロ秒級に高速化しますが、Lambda関数自体は毎回呼び出されるためLambdaコストは削減できません。さらにクラスター管理やVPC構成が増え、要件のLambda呼び出し削減と低運用負荷を満たしません。
C
Lambda関数にプロビジョンドコンカレンシーを設定し、初期化済み環境で応答を高速化する
プロビジョンドコンカレンシーはコールドスタートを抑えて応答を速くするだけで、Lambdaの呼び出し回数やDynamoDBの読み取り回数は減りません。常時稼働コストも追加されるため、バックエンドコスト削減という要件に反します。
D
API Gatewayの前段にCloudFrontディストリビューションを別途作成し、レスポンスをキャッシュする
CloudFrontを前段に置けばキャッシュでバックエンド呼び出しを減らせますが、別ディストリビューションの作成・キャッシュ設定・証明書管理などの運用が増えます。API Gateway組み込みのキャッシュと比べ運用負荷が高く、最適ではありません。

解説

API Gatewayのステージキャッシュは、エンドポイントのレスポンスをAPI Gateway内にキャッシュし、キャッシュヒット時はバックエンド統合(Lambda)を呼び出さずに応答を返します。 これによりLambda呼び出しとDynamoDB読み取りの両方が削減されます。 クエリ文字列をキャッシュキーに含めれば、パラメータごとに正しくキャッシュを分離できます。 ステージ設定で有効化するだけで完結するため、運用負荷も最小です。 選択肢のDAXはDynamoDB読み取りを高速化しますが、Lambdaは毎回呼び出され続けLambdaコストは削減できません。 選択肢のプロビジョンドコンカレンシーは高速化のみで呼び出し回数・読み取り回数は減らず、常時課金も発生します。 選択肢のCloudFront追加でもキャッシュ可能ですが、別ディストリビューションの管理が増え運用負荷が高くなります。

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

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

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