Q74 — AWS SAA-C03 第15章
第 74/100 問 | ← 第15章
Q1174. ある企業が、自社製品の最新情報を表示するオンラインポータルを開発しました。このポータルのコードはAWS Lambda関数としてデプロイされ、Amazon API Gatewayを介して公開されています。システムのデータはAmazon DynamoDBに格納されています。 Amazon CloudWatchのメトリクスを確認したところ、一部の製品が他の製品よりも人気があり、より頻繁に閲覧されていることがわかりました。企業は、運用オーバーヘッドを追加することなく、最も人気のある製品に対して可能な限り最速の読み取り応答時間を実現したいと考えています。 コード変更の数を最小限に抑えつつ、データベースへの呼び出し回数を削減するには、どのソリューションが最も適していますか?
- A. DynamoDB Accelerator (DAX) を設定します。Lambda関数内の GetItem API 呼び出しを、DAXクラスターエンドポイントを指すように更新します。 ✓
- B. キャッシュ・アサイド(cache-aside)戦略を採用したAmazon OpenSearch Serviceクラスターを作成します。Lambda関数内の GetItem API 呼び出しを、OpenSearch Serviceのエンドポイントを指すように更新します。
- C. Amazon ElastiCache (Redis OSS) クラスターを作成します。Lambda関数のコードを更新し、GetItem API 呼び出しに対してRedisクラスターを用いた遅延読み込み(lazy loading)キャッシュ戦略を実装します。
- D. Amazon ElastiCache (Memcached) クラスターを作成します。Lambda関数のコードを更新し、GetItem API 呼び出しに対してMemcachedクラスターを用いたライトスルー(write-through)キャッシュ戦略を実装します。
正解: A. DynamoDB Accelerator (DAX) を設定します。Lambda関数内の GetItem API 呼び出しを、DAXクラスターエンドポイントを指すように更新します。
解説
データベースへの呼び出し回数を削減し、最も人気のある製品に対する読み取り応答時間を可能な限り高速化しつつ、コード変更の数を最小限に抑えるための最適なソリューションは、以下の通りです。 A. DynamoDB Accelerator (DAX) を設定し、Lambda関数内の GetItem API 呼び出しを DAX クラスターエンドポイントを指すように更新する。 ### 解説: DynamoDB Accelerator (DAX) は、DynamoDB専用のインメモリキャッシュサービスであり、既存のDynamoDBアプリケーションとシームレスに統合され、読み取り中心のワークロードに対して高速なパフォーマンスを提供します。 最小限のコード変更:DAXを利用するには、GetItem API呼び出し先をDynamoDBエンドポイントからDAXクラスターエンドポイントに変更するだけで済み、非常に少ない工数で大幅なパフォーマンス向上が見込めます。 ### その他の選択肢について: B:Amazon OpenSearch Service を利用する場合、アーキテクチャの大幅な変更や追加の管理オーバーヘッドが発生するため、コード変更を最小限に抑えるという要件には不適切です。 C:Amazon ElastiCache (Redis) を利用する場合、アプリケーションコード内にキャッシュ戦略を実装する必要があり、複雑さと運用オーバーヘッドが増加します。 D:Amazon ElastiCache (Memcached) を利用する場合も、同様にLambda関数のコード変更が必要となり、DAXと比較して実装が複雑になります。 したがって、選択肢 A が、最小限の運用オーバーヘッドで読み取りパフォーマンスを最大限に高める最も効率的かつ効果的なソリューションです。