無限ノック › DEA 練習問題一覧 › 問題
DEAデータオペレーションとサポート

あるECサイトでは、毎秒2万件のユーザーアクションをAmazon Kinesis Data Streamsで受信しており、次の要件があります。①ユーザーのセッション(最後のイベントから10分間操作がない場合に終了する動的ウィンドウ)ごとにコンバージョン率を集計する。②セッション終了から30秒以内にAmazon OpenSearch Serviceへ集計結果を書き込む。③インフラのサイジングや管理を最小限にする。以下のアーキテクチャのうち、すべての要件を満たすものはどれですか?

A
Amazon Managed Service for Apache Flink アプリケーションを作成し、Kinesis Data Streamsからイベントを読み込む。Flink ネイティブのセッションウィンドウ(gap=10分)でコンバージョン率を集計し、Flink の OpenSearch コネクタで直接書き込む
✓ 正解
Flink ネイティブのセッションウィンドウ(SessionWindows.withGap)はフルマネージド環境でウィンドウをフレームワーク内部のステートで管理します。ウィンドウが閉じた瞬間にイベント駆動でレコードを下流へ送出し、OpenSearch コネクタで直接書き込むことでセッション終了後30秒以内の配信要件を満たします。インフラ管理も不要です。
B
Amazon Managed Service for Apache Flink アプリケーションを作成し、Kinesis Data Streamsからイベントを読み込む。Flink ネイティブのセッションウィンドウ(gap=10分)でコンバージョン率を集計後、Amazon Data Firehose(デフォルトバッファリング間隔300秒)経由でOpenSearch Service へ配信する
Amazon Data Firehose の OpenSearch Service へのデフォルトバッファリング間隔は300秒です。Flink 側でセッション集計が完了しても Firehose のバッファが解放されるまで300秒以上の待機が生じ、セッション終了後30秒以内という要件を構造的に満たせません。
C
AWS Glue Streaming ETL ジョブ(Glue 4.0)を作成し、Kinesis Data Streamsから読み込む。Spark Structured Streaming の session_window 関数とウォーターマーク(遅延許容10分)でコンバージョン率を集計し、Spark-OpenSearch コネクタで書き込む
Spark Structured Streaming の session_window はウォーターマークの進行でウィンドウ完了を判断するため、遅延許容10分の設定ではセッション終了後もウォーターマークが十分に進むまで追加待機が発生します。Flink のイベント駆動型処理と異なり、セッション終了から出力までの遅延が大きく30秒以内の保証が困難です。
D
AWS Glue Streaming ETL ジョブを作成し、Kinesis Data Streamsからイベントを読み込む。セッション状態をAmazon DynamoDB テーブルで管理し、AWS Lambda 関数が30秒間隔でタイムアウトセッションを検出して集計結果をOpenSearch Service へ書き込む
DynamoDB を外部ステートストアとしてLambda が30秒間隔でポーリングする構成は、各イベントのDynamoDB 読み書きレイテンシが蓄積します。また Lambda のポーリング間隔により最大30秒のセッション終了検出遅延が発生し、OpenSearch への書き込みまでの合計遅延が30秒以内の要件を超える可能性があります。

解説

Amazon Managed Service for Apache Flink(旧称 Kinesis Data Analytics for Apache Flink)はフルマネージドのApache Flink 実行環境を提供し、サーバーやクラスターの管理が不要です。Flink ネイティブのセッションウィンドウ(SessionWindows.withGap)は「最後のイベントから指定時間イベントがない場合にウィンドウを閉じる」動的ウィンドウをフレームワーク内部のステートで管理します。処理はイベント駆動型であり、ウィンドウが閉じた瞬間に結果が下流へ送出されます。組み込みのOpenSearch コネクタで直接書き込むことでセッション終了後ほぼ瞬時に反映でき、30秒以内の要件を確実に満たします。 選択肢BのManaged Service for Apache Flinkは、Amazon Data FirehoseのOpenSearch Service 向けデフォルトバッファリング間隔が300秒であるため、Flink 側の処理完了後にさらに300秒以上の遅延が生じ、30秒以内の要件を構造的に満たせない。 選択肢CのAWS Glue Streaming ETL(session_window 方式)は、Spark Structured Streaming の session_window 関数がウォーターマークの進行に基づきウィンドウを閉じるため、遅延許容10分の設定ではセッション終了後もウォーターマークが十分に進むまで数十分間結果が保留される可能性があり、30秒以内の要件を満たせない。 選択肢DのAWS Glue Streaming ETL(DynamoDB外部ステート方式)は、DynamoDB を外部ステートストアとしLambda が30秒間隔でポーリングする構成であり、各イベントのDynamoDB 読み書きによるレイテンシ増大と、ポーリング間隔による最大30秒の検出遅延が重なり、要件を満たせない可能性が高い。

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

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

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