あるオンラインゲーム会社は、数百万人が同時接続するゲームプラットフォームから、ログイン・レベルクリア・課金などのプレイヤーイベントをAmazon Kinesis Data Streamsに取り込んでいます。 以下の要件を満たすリアルタイム処理パイプラインを構築したいと考えています。 - プレイヤーごとの5分間スライディングウィンドウ(イベント時刻基準)でエンゲージメントスコアを継続的に算出する - モバイルネットワーク遅延により最大10分遅れて到着するイベントを正しく集計に反映させる - 短時間に多数の課金イベントが発生する異常パターンを30秒以内に検知してアラートを発報する - 集計結果をAmazon S3とAmazon DynamoDBに出力する この要件を最も効果的に満たすAWSサービスはどれですか?
Amazon Managed Service for Apache Flink を使用し、Kinesis Data Streamsをソースとしてイベント時刻ウィンドウとウォーターマークを実装する。 Amazon Managed Service for Apache Flink(旧Amazon Kinesis Data Analytics)は真のストリーミングエンジンであり、イベント時刻ベースのウィンドウ処理とウォーターマーク機能を標準でサポートしています。最大10分の遅延到着イベントをウォーターマークで制御しながら正確に集計でき、複雑なイベントパターン検知(CEP)により30秒以内のアラートもネイティブに実現できます。複数の出力先(S3・DynamoDB)への同時書き込みも容易です。 選択肢Aは、Amazon Data Firehoseはデータ配信サービスであり、ステートフルなウィンドウ集計や異常パターン検知をサポートしないため不適切です。 選択肢Cは、AWS Glue Streaming ETLはSparkマイクロバッチモデルを採用しており、サブ分単位のリアルタイム検知が困難で、複雑なCEPにも不向きです。 選択肢Dは、LambdaはステートレスであるためDynamoDBでウィンドウ状態を自前管理する必要があり、並行実行時の一貫性確保が難しく、大規模環境では運用コストが高くなります。