DVAAWSのサービスを使用した開発
読み取りが非常に多いゲームのリーダーボードをDynamoDBに保存しています。同一のトッププレイヤー一覧が秒間数万回読み取られ、読み取りレイテンシをマイクロ秒オーダーにしつつDynamoDBのRCUコストを大幅に削減したいと考えています。アイテムは整合性が多少遅れても許容されます。アプリケーションコードの変更は最小限にしたいです。最も適切な対策はどれですか。
ADynamoDB Accelerator(DAX)クラスターを導入し、DAXクライアント経由でキャッシュを利用する
✓ 正解
DAXはDynamoDB専用のインメモリキャッシュでヒット時はマイクロ秒応答を実現し、繰り返し読まれるデータのRCUを大幅に削減します。SDK互換のDAXクライアントへ切り替える最小限の変更で導入でき、結果整合許容の本要件に最適です。
BElastiCache for Memcachedを別途構築し、読み取りごとにアプリ側でキャッシュ更新ロジックを実装する
ElastiCache for Memcachedは汎用キャッシュのため、キャッシュの読み書き・無効化ロジックをすべてアプリ側で実装する必要があります。コード変更が大きく、最小限の変更という要件に反します。
Cテーブルの読み取りキャパシティモードをオンデマンドに切り替える
オンデマンドモードはキャパシティのプロビジョニングを自動化するだけで、キャッシュ機能ではありません。マイクロ秒レイテンシの実現や読み取りコストの大幅削減には直結しないため要件を満たしません。
D結果整合性のある読み取り(eventually consistent read)に変更してRCUを半減させる
結果整合性読み取りはRCU消費を半減できますが、DynamoDB自体の応答は数ミリ秒オーダーでマイクロ秒には届きません。秒間数万回の同一読み取りに対するコスト削減効果も限定的です。
解説
DAXはDynamoDB専用のフルマネージドなインメモリキャッシュで、キャッシュヒット時はマイクロ秒オーダーの応答を実現します。DAXクライアントはDynamoDB SDKと互換性が高く、エンドポイントの切り替え程度の最小変更で導入できます。繰り返し読まれる同一データのRCUを大幅に削減でき、結果整合が許容される本ケースに最適です。
選択肢BのMemcachedは汎用キャッシュでキャッシュ更新・無効化ロジックをアプリ側で実装する必要があり変更が大きい。
選択肢Cのオンデマンドはキャパシティ管理を自動化するがキャッシュではなくレイテンシ短縮やコスト削減には直結しない。
選択肢Dの結果整合読み取りはRCUを半減できるがマイクロ秒レイテンシには届かず削減幅も限定的。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →