無限ノック › DEA 練習問題一覧 › 問題
DEAデータの取り込みと変換

ある企業はAmazon Kinesis Data Streamsを使用してストリーミングデータを処理しています。現在、3つの異なるコンシューマーアプリケーションが同じストリームからデータを読み取っていますが、コンシューマーの追加に伴い、ReadProvisionedThroughputExceededエラーが発生し始めました。各コンシューマーはレコードの処理遅延を最小限に抑える必要があります。ストリームのシャード数を増やすことなく、この問題を解決する最も費用対効果の高い方法は何ですか。

A
各コンシューマーを拡張ファンアウト(EFO)コンシューマーとしてストリームに登録する
✓ 正解
拡張ファンアウト(EFO)を使用すると、各コンシューマーは独自の専用読み取りスループット(シャードあたり最大2MB/秒)を持つことができ、コンシューマー間でのパイプの競合を防ぎながら遅延を大幅に削減できます。
B
Kinesis Client Library (KCL) のバージョンをアップグレードしてポーリング頻度を増やす
Kinesis Client Library (KCL) のバージョンを上げても、基本となるストリーム全体の共有読み取りクォータ(シャードあたり2MB/秒、5トランザクション/秒)の制限自体は回避できないため根本解決になりません。
C
Amazon Data Firehoseを追加し、コンシューマー間のデータ配信を分散させる
Amazon Data FirehoseはストリーミングデータをS3やRedshiftなどのデータストアにバッチ処理してロードするためのサービスであり、リアルタイムで競合するコンシューマーの読み取り問題の解決策としては不適切です。
D
Kinesis Data Streamsのデータ保持期間を延長して読み取りの競合を減らす
ストリーム内のデータ保持期間を延長しても、データが古くなるまで保存されるだけであり、同時読み取りを実行する複数コンシューマー間のAPIスループット制限やReadProvisionedThroughputExceededは解決しません。

解説

Amazon Kinesis Data Streamsの拡張ファンアウト(Enhanced Fan-Out: EFO)機能を使用すると、各コンシューマーはシャードあたり最大2MB/秒の専用読み取りスループットを獲得できます。通常の読み取りではストリーム全体のシャードごとに2MB/秒の共有クォータとなるため、複数コンシューマーがポーリングするとスロットリングが発生しやすくなります。EFOを有効にすることで遅延も約70ミリ秒に短縮されます。KCLのバージョンアップやポーリング頻度の増加は共有クォータの制限を回避できません。Amazon Data Firehoseはバッチ配信向けでありリアルタイム処理に不向きです。データ保持期間の延長はスループット制限の解決には全く無関係です。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDEAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DEA の問題一覧に戻る