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

ソリューションアーキテクト – アソシエイト

正解 C問題
要復習(もう一度解きたい問題) 1 2 3 4
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
顧客は、ある Web アプリケーションを使用して、Amazon S3 バケットに注文データをアップロードすることができます。すると、Amazon S3 イベントが発生し、AWS Lambda 関数がトリガされ、メッセージが Amazon SQS キューに挿入されます。1 台の Amazon EC2 インスタンスによって、キューからメッセージが読み取られて処理され、一意の注文番号をパーティションキーとする Amazon DynamoDB テーブル (オンデマンドキャパシティモード) に格納されます。来月のトラフィック量は 10 倍に増える見込みです。
ソリューションアーキテクトは、スケーリングに関する問題がアーキテクチャに発生する可能性を調べています。増加するトラフィックを処理するためにスケーリングできるようにする際、設計の見直しが最も必要であると思われるコンポーネントはどれですか。
  • AWS Lambda 関数
  • Amazon SQS キュー
  • Amazon EC2 インスタンス
  • Amazon DynamoDB テーブル
解説 頻出度★★★★
この問題は、「S3 → Lambda → SQS → EC2 → DynamoDB」というパイプラインを 1 つずつ点検し、トラフィック 10 倍に対して唯一自動でスケールしないコンポーネントを特定できるかがポイント。「1 台の EC2 インスタンス」だけが台数固定で、処理能力の上限を決めている

A. AWS Lambda 関数

AWS Lambda は受信したイベント数に応じて実行環境を自動的に並列起動するサーバーレスサービスです。S3 イベントが 10 倍になっても、同時実行数の範囲内で自然にスケールします。
同時実行数のクォータに達する可能性はありますが、それは引き上げ申請で対応できる範囲であり、アーキテクチャの作り直しは不要。「設計の見直しが最も必要」とは言えません。

B. Amazon SQS キュー

Amazon SQS はフルマネージドのキューで、保持できるメッセージ数に実質的な上限がありません。キューの容量やスループットのために利用者が設計を変更する必要はありません。
むしろ SQS は急増したメッセージを一時的に受け止め、後段を保護するクッションとして働いており、この構成の中で最も心配の少ない部分です。

正解

C. Amazon EC2 インスタンス

キューからメッセージを取り出すコンシューマーが「1 台の EC2 インスタンス」に固定されているため、処理スループットはこの 1 台の性能で頭打ちになります。
トラフィックが 10 倍になるとSQS にメッセージが滞留し続け、処理遅延が際限なく拡大します。加えて 1 台構成は単一障害点 (SPOF) でもあります。
Auto Scaling グループ化し、キューの深さ (ApproximateNumberOfMessagesVisible) に基づくスケーリングポリシーでコンシューマーを水平スケールさせる設計変更が必要です。これが正解。

D. Amazon DynamoDB テーブル

Amazon DynamoDB はパーティションキーが一意の注文番号(高カーディナリティ)のため書き込みが多数のパーティションへ均等に分散し、ホットパーティションが発生しません。
さらにオンデマンドキャパシティモードでは需要に応じてスループットが自動調整されるため、10 倍の増加でも設計変更は不要です。

構成図

Amazon S3(注文データ)
   │ S3 イベント
   ▼
AWS Lambda(イベント数に応じて自動で並列実行)
   │ メッセージ送信
   ▼
Amazon SQS(実質無制限にバッファ)
   │ ポーリング
   ▼
Amazon EC2(1 台のみ・固定)★ここだけスケールしない=ボトルネック
   │ 書き込み
   ▼
Amazon DynamoDB(オンデマンドで自動スケール)
これだけ覚える(記憶フック)
問題文に「1 台の EC2」と書かれたら、そこがボトルネック。Lambda・SQS・DynamoDB は放っておいても伸びる。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
来月トラフィックが 10 倍に増える 各コンポーネントが自動でスケールするか否かを 1 つずつ判定する消去法の問題
→選択肢(A・B・C・D)を順に検討
S3 イベントで AWS Lambda 関数がトリガーされる Lambda はイベント駆動で自動的に並列実行され、設計を変えずにスケールする
→選択肢(A)を消す
メッセージが Amazon SQS キューに挿入される SQS はフルマネージドで実質無制限にバッファでき、利用者側の設計変更は不要
→選択肢(B)を消す
一意の注文番号をパーティションキーとする DynamoDB(オンデマンド) キーが高カーディナリティで分散が均等、かつオンデマンドで自動スケールする
→選択肢(D)を消す
1 台の Amazon EC2 インスタンスがキューを読み取り処理する 台数が固定=処理能力の上限が固定。10 倍のメッセージを捌けず、SPOF でもある
→選択肢(C)が正解
ひっかけポイント
  • 「キューにメッセージが溜まる」と聞いて SQS の問題だと誤読しない。溜まる原因は取り出す側(EC2)が遅いことであり、SQS 自体は仕様どおり正常に動いている
  • 1 台の Amazon EC2 インスタンス」という数量表現が最大のヒント。問題文で台数が固定で明記されたコンポーネントは、ほぼ確実にスケーリングの弱点として問われる
  • DynamoDB はパーティションキーが偏れば(例:注文日や固定値)ホットパーティションでスロットリングし得るが、本問はわざわざ「一意の注文番号をパーティションキーとする」と書いて、その論点を封じている
  • Lambda にも同時実行数のクォータはあるが、これはクォータ引き上げで解決できる話。「設計の見直しが最も必要」な箇所を選ぶ問題なので、EC2 に軍配が上がる
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「EC2 は Auto Scaling グループで稼働している」に変わったら EC2 はボトルネックから外れ、DynamoDB のプロビジョンドキャパシティなど別の固定要素が正解軸に。
「DynamoDB のパーティションキーが注文日(同日に書き込みが集中)」 ホットパーティションによるスロットリングが論点になり、DynamoDB の設計見直しが正解に。
「EC2 の処理を疎結合のままスケールさせたい。運用負荷は最小に」 キューの深さに基づく Auto Scaling、または EC2 を Lambda / ECS Fargate へ置き換える解が正解軸。
「注文の処理順序を厳密に保証したい」 SQS FIFO キューが正解軸に。ただしスループット上限とのトレードオフが論点になる。
処理に失敗したメッセージを失わずに保全・調査したい」 デッドレターキュー (DLQ) の設定が正解軸に変わる。
関連サービスの解説 Amazon DynamoDB
Amazon EC2
Amazon Simple Queue Service (Amazon SQS)
Amazon Simple Storage Service (Amazon S3)
AWS Lambda
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 67%
No.7 解説
顧客は、ある Web アプリケーションを使用して、Amazon S3 バケットに注文データをアップロードすることができます。すると、Amazon S3 イベントが発生し、AWS Lambda 関数がトリガされ、メッセージが Amazon SQS キューに挿入されます。1 台の Amazon EC2 インスタンスによって、キューからメッセージが読み取られて処理され、一意の注文番号をパーティションキーとする Amazon DynamoDB テーブル (オンデマンドキャパシティモード) に格納されます。来月のトラフィック量は 10 倍に増える見込みです。
ソリューションアーキテクトは、スケーリングに関する問題がアーキテクチャに発生する可能性を調べています。増加するトラフィックを処理するためにスケーリングできるようにする際、設計の見直しが最も必要であると思われるコンポーネントはどれですか。
  • AWS Lambda 関数
  • Amazon SQS キュー
  • Amazon EC2 インスタンス
  • Amazon DynamoDB テーブル

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