AWS Glue Streaming ETLジョブでKinesis Data Streamsを読み取り、DynamoDBとの結合・重複排除・S3へのParquet書き込みを行う
✓ 正解
AWS Glue Streaming ETLはKinesis Data StreamsをネイティブサポートするマネージドSparkストリーミングサービスです。DynamoDBとのJOIN、dropDuplicates()による重複排除、Parquet形式でのS3書き込みをSparkコードで実装でき、クラスター管理が不要です。マイクロバッチ処理でニアリアルタイム要件も満たします。
B
Amazon Data FirehoseにLambdaトランスフォーマーを設定してDynamoDBルックアップとParquet変換を行う
Amazon Data FirehoseはLambdaトランスフォーマーと組み合わせても、DynamoDBとの動的JOINや重複排除ロジックの実装がLambdaの実行時間制限(最大15分)やステートレスな性質と相性が悪く、大規模ストリームには不向きです。
C
Amazon Managed Service for Apache FlinkでDynamoDBと結合し、S3にParquetで書き込む
Amazon Managed Service for Apache Flink(旧:Kinesis Data Analytics for Flink)はFlinkアプリケーションを実行するサービスです。FlinkはJava/Scala/PyFlinkで実装するため、チームのApache Sparkスキルを直接活用できません。
D
Amazon EMR on EC2クラスターでSpark Structured Streamingを使いKinesis Data Streamsを処理する
EMR on EC2は技術的には要件を満たせますが、クラスターのプロビジョニング・管理・スケーリングが必要で、マネージドサービスを求める要件に対して運用負荷が高くなります。
解説
AWS Glue Streaming ETLはKinesis Data StreamsをネイティブサポートするマネージドSparkストリーミングサービスです。DynamoDBとのJOIN、dropDuplicates()による重複排除、Parquet形式でのS3書き込みをSparkコードで実装でき、クラスター管理が不要です。マイクロバッチ処理でニアリアルタイム要件も満たします。
選択肢BのAmazon Data FirehoseはLambdaトランスフォーマーと組み合わせても、DynamoDBとの動的JOINや重複排除ロジックの実装がLambdaの実行時間制限(最大15分)やステートレスな性質と相性が悪く、大規模ストリームには不向きです。
選択肢CのAmazon Managed Service for Apache Flink(旧:Kinesis Data Analytics for Flink)はFlinkアプリケーションを実行するサービスです。FlinkはJava/Scala/PyFlinkで実装するため、チームのApache Sparkスキルを直接活用できません。
選択肢DのEMR on EC2は技術的には要件を満たせますが、クラスターのプロビジョニング・管理・スケーリングが必要で、マネージドサービスを求める要件に対して運用負荷が高くなります。