無限ノック › DVA 練習問題一覧 › 問題DVA トラブルシューティングと最適化
IoTデバイスのテレメトリデータを収集するAmazon Kinesis Data Streamsパイプラインがあります。10個のシャードで構成されていますが、CloudWatchのIncomingRecordsメトリクスを確認すると2つのシャードにデータが集中しており、`WriteProvisionedThroughputExceeded`エラーが頻発しています。残り8つのシャードはほぼ使用されていません。このホットシャード問題の根本原因と解決策の組み合わせとして最も適切なものはどれですか?
A 原因:全体のシャード数が不足しており書き込みスループットが上限に達している。解決策:シャードを分割(Resharding)して合計シャード数を20に増やす
Reshardingはシャード数を増やして全体スループット容量を拡大するが、パーティションキーの偏りが継続する限り同じ少数のシャードへの集中は変わらず根本的な解決にはならない。
B 原因:パーティションキーのバリエーションが少なく特定シャードにハッシュが集中している。解決策:乱数サフィックスを付加するなど分散性の高いパーティションキーを使用する
✓ 正解
Kinesisはパーティションキーのハッシュ値でシャードを決定するため、キーのバリエーションが少ないと特定シャードにデータが集中する。乱数サフィックスを付加するなど多様なパーティションキーを使用することで全シャードに均等分散でき、ホットシャードを解消できる。
C 原因:コンシューマーの処理速度が遅くバックプレッシャーが発生している。解決策:Enhanced Fan-Outを使用してコンシューマーのスループットを向上させる
Enhanced Fan-Outはコンシューマー(読み取り側)のスループットをシャードあたり2MB/秒に向上させる機能であり、プロデューサー(書き込み側)の特定シャードへの集中という問題の原因・解決策とは無関係。
D 原因:PutRecord APIの呼び出し頻度が高く書き込みレートが限界に達している。解決策:PutRecords APIを使用して複数レコードをバッチ送信しAPIコール数を削減する
PutRecords APIは複数レコードのバッチ送信でAPIコール数を削減し効率化するが、各レコードのパーティションキーが変わらない限りシャードへの振り分けは同じであり、ホットシャード問題の根本解決にはならない。
解説 Kinesisのシャードへのデータ振り分けはパーティションキーのMD5ハッシュ値によって決まります。パーティションキーのバリエーションが少ない場合(例:デバイスタイプが数種類のみ、固定文字列)、同じシャードへの書き込みが集中するホットシャードが発生します。解決策はデバイスIDや乱数を組み合わせたランダム性の高いパーティションキーを使用し、ハッシュ値を全シャードに均等に分散させることです。
選択肢AのReshardingはシャード数を増やして全体スループットを増やしますが、偏ったパーティションキーを使い続ける限り同じシャードへの集中は継続するため根本解決にならない。
選択肢CのEnhanced Fan-Outはコンシューマーの読み取りスループット向上機能であり、プロデューサー側の書き込み集中の原因・解決策とは無関係。
選択肢DのPutRecords APIはAPIコール効率を改善するが、パーティションキーが偏っている限りホットシャードは解消されない。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →