無限ノック › SAA 練習問題一覧 › 問題SAA 弾力性に優れたアーキテクチャの設計
あるIoTプラットフォームが、10万台のデバイスからのテレメトリデータをAmazon Kinesis Data Streams(10シャード)で受信しています。一部のシャードがスループット上限(書き込み1MB/秒または1,000レコード/秒)に頻繁に達してProvisionedThroughputExceededExceptionが発生しています。調査の結果、特定メーカー製の多数のデバイスが、パーティションキーにメーカーコード(manufacturer_id)のみを使用していることがホットシャードの原因と判明しました。最小限の変更で問題を恒久的に解決する方法はどれか。
A シャード数を10から100に増やし、AWS提供のKinesis Scaling Utilityを使用して段階的にシャードをスプリットする
シャード数を増やしても、パーティションキーの偏りが解消されない限り特定シャードへの集中は継続する。根本原因への対処ではなく一時的な緩和策にとどまるため、恒久的な解決にならない。
B パーティションキーをdevice_idを含む値(例:manufacturer_id + device_id)に変更し、レコードが複数シャードに均等に分散されるようにする
✓ 正解
パーティションキーにdevice_idを含めることでハッシュ値が分散し、10万台のデバイスが全シャードに均等に割り当てられる。プロデューサー側の変更のみでホットシャードを恒久的に解消できる最適な対処。
C Kinesis Data Firehoseに切り替えてS3にバッファリングし、S3イベント通知でLambdaをトリガーして後続処理を実行する
Firehoseはリアルタイム処理をニアリアルタイムのバッチ処理に変えるアーキテクチャ変更であり、既存のリアルタイム処理要件を損なう可能性がある。最小限の変更という要件にも反する。
D Kinesis Enhanced Fan-Outを有効化し、コンシューマーごとに専用スループット(2MB/秒)を確保して処理遅延を解消する
Enhanced Fan-OutはKinesisコンシューマーの読み取りスループット(2MB/秒/コンシューマー)を向上させる機能。書き込み側のシャード偏りには無効であり、ProvisionedThroughputExceededExceptionは解消されない。
解説 ホットシャード問題の根本原因はパーティションキーの偏りです。同一のmanufacturer_idを持つ多数のデバイスが同一シャードにマッピングされるため、そのシャードだけが飽和します。パーティションキーにdevice_idを加えて一意性を高めると、Kinesisがキーのハッシュ値に基づいて全シャードに均等に分散し、ホットシャードが解消されます。変更はデータ送信側のパーティションキー生成ロジックのみで、ストリームのシャード数やコンシューマーの変更は不要です。
選択肢Aのシャード数増加は一時的な緩和になりますが、パーティションキーの偏りが残る限り特定シャードへの集中は再発します。
選択肢Cの Kinesis Data Firehoseはリアルタイムストリーム処理をS3バッファリング経由のニアリアルタイム処理に変更するアーキテクチャ大改修であり、最小限の変更という要件に反します。
選択肢DのEnhanced Fan-OutはKinesisコンシューマー側(読み取り)の専用スループットを向上させる機能であり、プロデューサー側の書き込み偏りには効果がありません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSAAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →