あるチームがDynamoDBのスロットリング問題を解決しようとしている。CloudWatchのReadThrottleEventsとWriteThrottleEventsが高い値を示しており、特定の時間帯に集中していることがわかった。根本原因の調査と対策として正しいものを2つ選択してください。
- A. DynamoDBのConsumedReadCapacityUnitsとConsumedWriteCapacityUnitsのメトリクスをパーティションキー別に確認してホットパーティションを特定する
- B. DynamoDBをグローバルテーブルに変更してトラフィックを複数リージョンに分散させる
- C. DynamoDBのプロビジョンドキャパシティを即座に2倍にしてスロットリングを解消する
- D. アプリケーションのリトライロジックに指数バックオフとジッターを実装して、スロットリング時の再試行の衝突を分散させる
- E. OnDemandモードに切り替えてすべてのスロットリング問題を永久に解決する
解答と解説を見る
正解: A, D
ホットパーティションの特定(選択肢A)は根本原因調査の第一歩。CloudWatchのConsumedCapacityUnitsをパーティションキー別にCloudWatch ContributorInsightsで確認し、特定のキーへのアクセス集中を検出する。原因がわかれば、キーの設計変更・キャッシュ導入・書き込みシャーディングといった根本対策を実施できる。指数バックオフとジッターの実装(選択肢D)はスロットリング発生時の対症療法として重要で、複数クライアントの同時リトライによるサンダーリングハードを防ぐ。AWS SDKのデフォルトリトライはあるが、アプリケーション固有の適切なジッター付き指数バックオフを追加することが推奨される。選択肢Cのキャパシティ倍増はホットパーティション問題では効果が限定的(各パーティション単位の上限は変わらない)。選択肢BのグローバルテーブルはDR用途であり、スロットリング解決にはならない。選択肢EのOnDemandはスロットリングを大幅に減らせるが「永久に解決」は誇大表現で、急激なスパイクでは依然スロットリングが発生しうる。
📚 関連サービスの解説: Amazon DynamoDB