Q48 — AWS SAA-C03 第14章

第 48/100 問 | ← 第14章

Q1048. ある企業は食品配達サービスを運営しています。最近の成長に伴い、注文処理システムがピーク時のトラフィックにおいてスケーリングの問題を抱えています。現在のアーキテクチャでは、アプリケーションから注文を受信するAmazon EC2インスタンスがAuto Scalingグループで構成されています。また、別のAuto Scalingグループに属するEC2インスタンスが注文の履行(フルフィルメント)を行っています。注文受付プロセスは高速ですが、注文履行プロセスには時間がかかる場合があります。スケーリングイベントによってデータが失われてはなりません。ソリューションアーキテクトは、ピーク時のトラフィック時間帯において、注文受付プロセスと注文履行プロセスの両方が十分にスケール可能であることを保証する必要があります。これらの要件を満たすソリューションはどれですか?

正解: D. 2つのAmazon Simple Queue Service (Amazon SQS)キューをプロビジョニングします。1つ目のSQSキューを注文受付用に使用し、2つ目のSQSキューを注文履行用に使用します。EC2インスタンスをそれぞれのキューからメッセージをポーリングするように設定します。各キュー内のメッセージ数に基づいてAuto Scalingグループをスケールさせます。

解説

注文受付および注文履行の両プロセスがピーク時のトラフィックにおいて十分にスケール可能であり、かつスケーリングイベントによるデータ損失を防ぐためには、以下の選択肢Dが最適です。 D. 2つのAmazon Simple Queue Service (Amazon SQS)キューをプロビジョニングします。1つ目のSQSキューを注文受付用に使用し、2つ目のSQSキューを注文履行用に使用します。EC2インスタンスをそれぞれのキューからメッセージをポーリングするように設定します。各キュー内のメッセージ数に基づいてAuto Scalingグループをスケールさせます。 理由: 1. SQSによるデカップリング:  ・SQSを活用することで、注文受付プロセスと注文履行プロセスを分離(デカップリング)できます。これにより、注文受付は履行プロセスの完了を待たずに即座に実行可能となり、全体のシステム応答性が向上します。 2. スケーラビリティ:  ・別々のSQSキューを用いることで、注文履行キュー内のメッセージ数に基づき、注文履行用のAuto Scalingグループを独立してスケールできます。これにより、注文の急増にも効率的に対応可能です。 3. データ損失の防止:  ・SQSは、メッセージ(注文)を正常に処理されるまでキュー内に保持するため、スケーリングイベントや処理遅延によるデータ損失を防ぎます。 4. ポーリング方式:  ・EC2インスタンスがSQSキューをポーリングしてメッセージを取得することで、需要に応じた動的な処理が可能となり、リソースの効率的な利用が実現されます。 他の選択肢の検討: A. Amazon CloudWatchによるCPUUtilization監視+最小容量の固定設定:  ・CPU使用率の監視は有用ですが、最小容量を固定するだけでは、ワークロード変動への動的対応ができません。また、メッセージ処理の効率化に関する仕組みも提供しません。 B. CloudWatchアラーム+SNSによるAuto Scalingグループの動的作成:  ・過剰に複雑なアプローチであり、キュー駆動型の処理という根本的な課題に対処しておらず、実装・運用コストも高くなります。 C. SQSの利用は正しいものの、キュー内のメッセージ数に基づくスケーリングが明記されていません:  ・キューの存在だけでは、負荷に応じた自動スケーリングが保証されず、ピーク時に依然としてボトルネックが発生する可能性があります。 結論: 選択肢Dは、注文受付および履行の両プロセスを堅牢かつスケーラブルに処理でき、ピーク時におけるデータ整合性と応答性を確保する、耐障害性の高いアーキテクチャを提供します。