AWS認定資格 WEB問題集&徹底解説

ソリューションアーキテクト-プロフェッショナル

正解 B問題
要復習(もう一度解きたい問題) 1 2 3 4
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
あるソリューションアーキテクトが、ビッグデータアプリケーションのコストを削減する必要があります。現在のアーキテクチャは以下の通りです:

- 500台のデバイスが Amazon Kinesis Data Streams にデータを送信
- 各デバイスは個別のシャード(合計500シャード)を使用し、毎秒50KB〜150KBのデータを送信
- AWS Lambda 関数がデータを処理し、結果を Amazon S3 に保存
- 別の Lambda 関数が1時間ごとに Amazon Athena クエリを実行し、外れ値を Amazon SQS キューに送信(通常10〜50メッセージ/時間)
- 2台の EC2 インスタンス(各 t3.medium)が SQS キューを24時間常時ポーリングし、外れ値を処理

このアーキテクチャのコストを最も大幅に削減する方法は何ですか?
  • 外れ値処理用の EC2 インスタンスのタイプを t3.medium から t3.small に変更する
  • 5 台のデバイスで 1 つの Amazon Kinesis Data Streams のシャードを共有するようにデバイスを再構成する
  • Amazon SQS キューを処理する EC2 インスタンスを AWS Lambda 関数に置き換え、Amazon SQS をイベントソースとして設定する
  • Amazon EC2 Auto Scaling グループを導入し、Amazon SQS キューの深さに応じて EC2 インスタンスをスケールさせる
解説 頻出度★★★★★
この問題は、「複数のコスト要素 × どれが支配的か」を見抜く問題で、常時課金され続ける 500 本の Kinesis シャードこそが最大のコスト源だと気づき、シャードの使用効率を上げる選択肢を選べるかがポイント

A. 外れ値処理用の EC2 インスタンスのタイプを t3.medium から t3.small に変更する

t3.medium から t3.small へのダウンサイジングは、2 台分で月額数十ドル程度の削減にしかならない。
しかもこの EC2 は SQS を 24 時間ポーリングし続ける構成のままで、アイドル時間に課金され続ける無駄は解消されない。
「最も大幅に削減する」という設問の要求に対して、削減規模が 2 桁以上小さく、最適解にならない。

正解

B. 5 台のデバイスで 1 つの Amazon Kinesis Data Streams のシャードを共有するようにデバイスを再構成する

Amazon Kinesis Data Streams(プロビジョンドモード)はシャード時間に対して課金され、1 シャードあたり月額約 11 ドル。500 シャードでは月額約 5,500 ドルに達し、このアーキテクチャで圧倒的に支配的なコストである。
一方、1 シャードは書き込み 1MB/秒(1,000 レコード/秒)まで受け付けられるのに対し、各デバイスは最大 150KB/秒しか送っていない。5 台をまとめても最大 750KB/秒で 1MB/秒の上限内に収まり、シャードを 500 本から 100 本へ削減できる。
データを捨てることも処理を変えることもなく、月額約 4,400 ドル(約 80%)の削減となるため、これが最も効果の大きい対策となる。

C. Amazon SQS キューを処理する EC2 インスタンスを AWS Lambda 関数に置き換え、Amazon SQS をイベントソースとして設定する

常時ポーリングする EC2 をイベント駆動の AWS Lambda に置き換えるのは、アーキテクチャとしては正しい改善である。1 時間に 10〜50 メッセージという間欠処理なら、Lambda の実行時間課金はごくわずかで済む。
しかし削減できるのは t3.medium 2 台分(月額約 60 ドル)にすぎず、シャード削減の約 4,400 ドルとは規模が違う。
「最も大幅に」削減する対策を 1 つ選ぶ本問では、コストの支配要因に手を付けていないため不正解となる。

D. Amazon EC2 Auto Scaling グループを導入し、Amazon SQS キューの深さに応じて EC2 インスタンスをスケールさせる

Auto Scaling でキューの深さに応じてスケールさせても、ベースラインのインスタンスは動き続けるため削減幅は限定的で、対象は同じ月額約 60 ドルの EC2 コストにとどまる。
1 時間ごとに 10〜50 メッセージという負荷は現状 2 台で十分にさばけており、スケールアウトの必要性自体が薄い。
Kinesis のシャード課金には一切影響しないため、最大のコスト源が手つかずのまま残る。

これだけ覚える(記憶フック)
Kinesis の請求はシャード時間。1 シャード=1MB/秒。デバイス数ではなくスループットで割り当てるのが正解。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
500 デバイスに対しシャードを 500 本プロビジョニングしている Kinesis Data Streams はシャード時間課金。500 シャード=月額約 5,500 ドルで、このアーキテクチャの支配的コスト
→選択肢(B)が正解
各デバイスの送信量は最大 150KB/秒 1 シャードの書き込み上限は 1MB/秒。5 台(最大 750KB/秒)なら 1 シャードに収まり、100 シャードまで削減できる
→選択肢(B)が正解
外れ値処理は 1 時間あたり 10〜50 メッセージ(間欠的) EC2 常時稼働は無駄だが、対象は t3.medium 2 台=月額約 60 ドル。削減余地の絶対額が小さい
→選択肢(C・D)は候補だが劣後
「最もコストを大幅に削減する」方法を 1 つ選ぶ 各案の削減額を概算して比較する。インスタンスのダウンサイジングは数十ドル規模で、シャード削減(約 4,400 ドル)に遠く及ばない
→選択肢(A)を消す
ひっかけポイント
  • 選択肢 C は「常時ポーリングの EC2 を Lambda に置き換える」という教科書的に正しい改善で、つい選びたくなる。しかし本問が問うのは削減額の大きさであり、月額約 60 ドルの対象を最適化しても意味が薄い
  • 「デバイス 1 台につきシャード 1 本」という構成を当然の前提として読み飛ばさない。シャードはスループット単位であって、送信元ごとに用意するものではない
  • シャード削減の可否は最大値 150KB/秒 で計算する。平均値(50KB/秒)で「20 台まとめられる」と考えるとピーク時に ProvisionedThroughputExceededException を起こす
  • 選択肢 A の t3.small へのダウンサイズは、コスト削減案として形だけ成立しているためもっともらしいが、桁が違う。SAP では「何が最大のコストドライバーか」を必ず先に特定する
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
トラフィックが予測不能で、シャード数の見積もりを避けたい Kinesis Data Streams のオンデマンドモード(スループット課金)が正解軸に。
EC2 の常時ポーリングによる運用負荷をなくしたい(コストは主眼でない)」 SQS をイベントソースにした Lambda(選択肢 C)が正解に浮上する。
「デバイスが各 800KB/秒を送信している」 1 シャード=1MB/秒のため集約の余地はほぼ無くなり、シャード削減は不正解になる。
「Athena のクエリコストを下げたい」 S3 データの Parquet 化・パーティショニング・圧縮(スキャン量削減)が正解軸に。
「Kinesis のデータをコード無しで S3 に配信したい」 Amazon Data Firehose による配信が正解軸になる。
関連サービスの解説 Amazon Athena
Amazon EC2
Amazon EC2 Auto Scaling
Amazon Kinesis Video Streams
Amazon RDS
Amazon S3 Glacier
Amazon SageMaker
Amazon Simple Queue Service (Amazon SQS)
Amazon Simple Storage Service (Amazon S3)
AWS Lambda
Elastic Load Balancing (ELB)
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 43%
No.7 解説
あるソリューションアーキテクトが、ビッグデータアプリケーションのコストを削減する必要があります。現在のアーキテクチャは以下の通りです:

- 500台のデバイスが Amazon Kinesis Data Streams にデータを送信
- 各デバイスは個別のシャード(合計500シャード)を使用し、毎秒50KB〜150KBのデータを送信
- AWS Lambda 関数がデータを処理し、結果を Amazon S3 に保存
- 別の Lambda 関数が1時間ごとに Amazon Athena クエリを実行し、外れ値を Amazon SQS キューに送信(通常10〜50メッセージ/時間)
- 2台の EC2 インスタンス(各 t3.medium)が SQS キューを24時間常時ポーリングし、外れ値を処理

このアーキテクチャのコストを最も大幅に削減する方法は何ですか?
  • 外れ値処理用の EC2 インスタンスのタイプを t3.medium から t3.small に変更する
  • 5 台のデバイスで 1 つの Amazon Kinesis Data Streams のシャードを共有するようにデバイスを再構成する
  • Amazon SQS キューを処理する EC2 インスタンスを AWS Lambda 関数に置き換え、Amazon SQS をイベントソースとして設定する
  • Amazon EC2 Auto Scaling グループを導入し、Amazon SQS キューの深さに応じて EC2 インスタンスをスケールさせる

(会員限定)当問題の評価をお願いします。改善に活用します。