DVAAWSのサービスを使用した開発
製品カタログをDynamoDBテーブルに保存しているECサイトがあります。以下の状況と要件があります。
・読み取りトラフィックが非常に多く、GetItemおよびQuery操作が全体の95%を占めている
・現在のDynamoDB読み取り遅延は数ミリ秒
・マーケティングチームからトップページのロード時間を1ms以下に短縮したいという要件が追加された
・既存のアプリケーションコードへの変更を最小限に抑える必要がある
この要件を達成する方法として、最も適切なものはどれですか?
AAmazon DynamoDB Accelerator (DAX) クラスターをプロビジョニングし、アプリケーションの接続先をDynamoDBエンドポイントからDAXエンドポイントに変更する
✓ 正解
DAXはDynamoDB互換のAPIを持つインメモリキャッシュで、エンドポイントの変更のみで導入でき、読み取りをマイクロ秒で処理する。コード変更を最小限に抑えつつ1ms以下の要件を達成できる。
BAmazon ElastiCache for Redis クラスターを導入し、アプリケーションにキャッシュの読み書きロジックとキャッシュ無効化処理を実装する
ElastiCache for Redisは高性能なキャッシュだが、DynamoDB APIと互換性がなく、キャッシュのread-through/write-throughロジックやキャッシュ無効化をアプリケーション側で実装する必要があり、コード変更が大幅に増える。
CDynamoDBのプロビジョンドキャパシティを大幅に増加させてAuto Scalingを設定し、読み取りスループットとレイテンシを最適化する
プロビジョンドキャパシティの増加はスループット(RCU)を向上させるが、レイテンシをマイクロ秒単位に改善する効果はなく、1ms以下の要件を達成できない。
DDynamoDBテーブルをグローバルテーブルに変換し、アプリケーションサーバーに最も近いリージョンのレプリカから読み取るよう構成する
グローバルテーブルは複数リージョンへのデータ複製によって地理的冗長性とリージョン単位のレイテンシ改善を提供するが、同一リージョン内の読み取りレイテンシをマイクロ秒に短縮する機能ではない。
解説
DynamoDB Accelerator(DAX)はDynamoDB専用のインメモリキャッシュサービスで、読み取りレイテンシをミリ秒からマイクロ秒に短縮します。DAXはDynamoDB互換のAPIを提供するため、接続エンドポイントをDAXに向け直すだけでアプリケーションコードへの変更を最小限に抑えられます。GetItemやQueryなどの読み取り操作を透過的にキャッシュし、キャッシュヒット時は1ms以下での応答が可能です。
選択肢BのElastiCache for Redisは汎用キャッシュとして高性能ですが、DynamoDB APIと互換性がなく、アプリケーション側でキャッシュロジックとキャッシュ無効化処理を独自実装する必要があり、コード変更が大幅に増えます。
選択肢CのプロビジョンドキャパシティはDynamoDBのスループット上限を引き上げますが、読み取りレイテンシをマイクロ秒レベルに短縮する効果はありません。
選択肢Dのグローバルテーブルは地理的に分散したレプリカを提供しますが、同一リージョン内での読み取りレイテンシをマイクロ秒に改善するものではありません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →