AWS認定資格 WEB問題集&徹底解説
ソリューションアーキテクト-プロフェッショナル
問題文と選択肢
・受信した生体データをリアルタイムに分析できること
・生体データの処理が高い耐久性を持ち、弾力的(スケーラブル)かつ並列に実行できること
・分析処理の結果は、後日のデータマイニングに備えて永続化すること
収集プラットフォームの初期要件を満たすアーキテクチャはどれですか。
- Amazon S3 を利用して受信センサーデータを収集します。毎日スケジュール実行されるバッチのデータパイプラインで Amazon S3 上のデータを分析し、結果を Amazon Redshift クラスターに保存します。
- Amazon Kinesis を利用して受信センサーデータを収集します。Kinesis クライアントライブラリ (KCL) を用いたアプリケーションでデータを分析し、Amazon EMR を使用して結果を Amazon Redshift クラスターに保存します。
- Amazon SQS を利用して受信センサーデータを収集します。Amazon Kinesis を使用して Amazon SQS からのデータを分析し、結果を Microsoft SQL Server の Amazon RDS インスタンスに保存します。
- Amazon EMR を利用して受信センサーデータを収集します。Amazon EMR からのデータを Amazon Kinesis で分析し、結果を Amazon DynamoDB に保存します。
A. Amazon S3 を利用して受信センサーデータを収集します。毎日スケジュール実行されるバッチのデータパイプラインで Amazon S3 上のデータを分析し、結果を Amazon Redshift クラスターに保存します。
Amazon S3 は耐久性の高い保存先だが、「毎日スケジュール実行されるバッチ」ではリアルタイム分析の要件を満たせない。2 秒ごとに届くデータを 1 日 1 回まとめて分析するのでは、健康傾向の即時把握という目的に応えられない。
また、多数のデバイスが 2 秒ごとに小さなオブジェクトを直接 PUT する設計は、ストリーム処理と比べて非効率でもある。リアルタイム性という第一要件で落ちる。
B. Amazon Kinesis を利用して受信センサーデータを収集します。Kinesis クライアントライブラリ (KCL) を用いたアプリケーションでデータを分析し、Amazon EMR を使用して結果を Amazon Redshift クラスターに保存します。
Amazon Kinesis Data Streams は大量のデバイスから連続的に届くデータをリアルタイムに取り込むためのサービスで、データはシャードに分散され複数のアベイラビリティーゾーンに同期的に複製(高耐久)される。シャードを増減すれば弾力的にスケールし、シャード単位で並列に処理できるため、「高耐久・弾力的・並列」という 2 つ目の要件をそのまま満たす。
Kinesis クライアントライブラリ (KCL) を使ったアプリケーションがストリームからレコードを取得してリアルタイムに分析し、1 つ目の要件を満たす。
分析結果を Amazon EMR 経由で Amazon Redshift に格納すれば、後日のデータマイニング(大規模な分析クエリ)に備えた永続化という 3 つ目の要件も満たせる。3 要件すべてに答える唯一の選択肢。
C. Amazon SQS を利用して受信センサーデータを収集します。Amazon Kinesis を使用して Amazon SQS からのデータを分析し、結果を Microsoft SQL Server の Amazon RDS インスタンスに保存します。
Amazon SQS はジョブの分散処理に使うメッセージキューであり、ストリームデータの取り込み基盤としては不適。メッセージは消費すると削除され、複数のコンシューマーが同じデータを繰り返し読む(リプレイする)ことができないため、ストリーム分析の基盤にならない。
さらに「Kinesis で SQS からのデータを分析する」という構成自体が不自然(Kinesis は SQS のコンシューマーではない)。
結果の保存先である Microsoft SQL Server の RDS も、大規模な分析・データマイニング用途では Redshift に劣る。
D. Amazon EMR を利用して受信センサーデータを収集します。Amazon EMR からのデータを Amazon Kinesis で分析し、結果を Amazon DynamoDB に保存します。
データの流れが逆になっているのが最大の誤り。Amazon EMR は Hadoop / Spark によるバッチ分析基盤であって、デバイスからのデータを直接受け止める取り込み口ではない。
取り込みに Kinesis、分析に EMR というのが本来の並びであり、「EMR で収集して Kinesis で分析する」は成立しない。
また DynamoDB は低レイテンシーのキーバリューアクセスに優れるが、データマイニングのような大規模な集計・探索クエリの基盤としては Redshift の方が適切。
構成図
ペット用首輪(30KB JSON / 2 秒ごと) ▼ Amazon Kinesis Data Streams(シャードで並列・弾力的に取り込み) ▼ KCL アプリケーション(リアルタイム分析) ▼ Amazon EMR ──分析結果を永続化──▶ Amazon Redshift(データマイニング)
「デバイスから絶え間なく流れてくるデータをリアルタイムに」ときたら Amazon Kinesis。S3 のバッチでも SQS でもない。
正解への思考ルート
問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。| 要件 | 判断ポイント |
|---|---|
| 30KB の JSON を 2 秒ごとに大量のデバイスが送信し続ける | 連続的に流れ込むストリームデータの取り込みは Amazon Kinesis の役割。キュー(SQS)でも S3 直置きでもない →選択肢(A・C)を消す |
| 受信データのリアルタイム分析が必要 | 「毎日スケジュール実行のバッチ」ではリアルタイム要件を満たせない →選択肢(A)を消す |
| 処理が高耐久・弾力的・並列であること | Kinesis は複数 AZ への複製(耐久性)とシャードによる並列処理・スケールを備える →選択肢(B)が正解 |
| 分析結果を永続化し、後からデータマイニングする | 大規模な分析クエリの受け皿は Amazon Redshift。SQL Server の RDS や DynamoDB は分析基盤として不適 →選択肢(C)を消す |
| 各サービスの「取り込み → 分析 → 保存」の並び順が妥当か | EMR は分析側であって取り込み口ではない。Kinesis と EMR の順序が逆の構成は成立しない →選択肢(D)を消す |
ひっかけポイント
- 選択肢 D はデータの流れが逆(EMR で収集 → Kinesis で分析)。登場するサービス名が正解と同じなので、単語だけ拾うと引っかかる。順序まで読むこと
- 選択肢 C の「SQS で収集」は一見もっともらしいが、SQS はキューであってストリームではない。読んだメッセージは消え、複数アプリでの並列読み出し・リプレイができない
- 選択肢 A は S3・Redshift という正しそうなサービスを並べつつ、「毎日スケジュール実行」の 1 語でリアルタイム要件を外している
- 保存先が DynamoDB か Redshift かで迷ったら目的を見る。「データマイニング/大規模集計」なら Redshift、「低レイテンシーの単一キー参照」なら DynamoDB
出題バリエーション
同じ知識が本番では条件を変えて出題されます。| 問題文がこう変わったら | 正解はこう変わる |
|---|---|
| 「取り込んだストリームをコード開発なしで S3 や Redshift へ配信したい」 | Amazon Data Firehose(旧 Kinesis Data Firehose)が正解軸に。KCL アプリの自作は不要。 |
| 「ストリームに対して SQL で継続的な集計を行いたい」 | Amazon Managed Service for Apache Flink(旧 Kinesis Data Analytics)が正解に。 |
| 「デバイスが数百万台規模で、双方向通信やデバイス管理も必要」 | AWS IoT Core が入口になり、ルールエンジンから Kinesis や S3 へ流す構成が正解軸に。 |
| 「分析結果をダッシュボードで可視化して飼い主に見せたい」 | Amazon QuickSight(データソースは Redshift / S3)が加わる。 |
| 「首輪のデータを異常検知(急な心拍上昇など)してすぐ通知したい」 | Kinesis → AWS Lambda によるリアルタイム処理+Amazon SNS 通知が正解軸に。 |
・受信した生体データをリアルタイムに分析できること
・生体データの処理が高い耐久性を持ち、弾力的(スケーラブル)かつ並列に実行できること
・分析処理の結果は、後日のデータマイニングに備えて永続化すること
収集プラットフォームの初期要件を満たすアーキテクチャはどれですか。
- Amazon S3 を利用して受信センサーデータを収集します。毎日スケジュール実行されるバッチのデータパイプラインで Amazon S3 上のデータを分析し、結果を Amazon Redshift クラスターに保存します。
- Amazon Kinesis を利用して受信センサーデータを収集します。Kinesis クライアントライブラリ (KCL) を用いたアプリケーションでデータを分析し、Amazon EMR を使用して結果を Amazon Redshift クラスターに保存します。
- Amazon SQS を利用して受信センサーデータを収集します。Amazon Kinesis を使用して Amazon SQS からのデータを分析し、結果を Microsoft SQL Server の Amazon RDS インスタンスに保存します。
- Amazon EMR を利用して受信センサーデータを収集します。Amazon EMR からのデータを Amazon Kinesis で分析し、結果を Amazon DynamoDB に保存します。