ある企業が AWS 上で大規模なデータ処理パイプラインを設計しており、1 日に 10 億件のイベントを処理する必要があります。各イベントは 1KB 以下で、5 分以内にリアルタイム処理と、90 日分の履歴データを分析するバッチ処理の両方が必要です。ストリーム処理とバッチ処理を統合した「ラムダアーキテクチャ」を AWS で実装するには、どの設計が最も適切ですか?
- A. Amazon SQS で全イベントを受信し、Lambda で処理して RDS に保存する
- B. Amazon RDS に全イベントを書き込み、リアルタイムクエリとバッチクエリを同一データベースで処理する
- C. 全イベントを DynamoDB に書き込み、DynamoDB Streams でバッチ処理をトリガーする
- D. Amazon Kinesis Data Streams でリアルタイムストリームを受信し、Kinesis Data Analytics(Apache Flink)でストリーム処理(速度層)を行う。Kinesis Data Firehose で全イベントを S3 の Parquet 形式で保存し(バッチ層)、定期的に Glue ETL ジョブで集計・加工して S3 データレイクを構築する。Athena でアドホック分析を提供するラムダアーキテクチャを実装する
解答と解説を見る
正解: D
ラムダアーキテクチャ(Lambda Architecture)は速度層(Speed Layer)とバッチ層(Batch Layer)で構成されます。Kinesis Data Streams + Flink の速度層は 5 分以内のリアルタイム処理を担当し、S3 + Glue のバッチ層は 90 日分の履歴データの完全処理を担当します。Kinesis Firehose で S3 への自動保存が実現し、1 日 10 億件のイベントにも対応できます。 A: SQS + Lambda + RDS は大規模なイベント処理(10 億件/日)には RDS の書き込みスケールが不十分で、ラムダアーキテクチャのバッチ層も実装されていません。 B: 単一 RDS に全イベントを書き込むことは、1 日 10 億件のスループットに対してストレージとクエリ性能の両面で限界があります。 C: DynamoDB は高スループット書き込みに対応しますが、90 日分の大規模なバッチ分析には Athena のようなサーバーレスクエリエンジンが適しており、DynamoDB の全スキャンは高コストです。
📚 関連サービスの解説: Amazon Kinesis ・ Amazon S3