SAA弾力性に優れたアーキテクチャの設計
物流会社は、EC2上で稼働するモノリシックな注文処理システムを運用しています。繁忙期には注文量が通常の20倍に増加し、処理が追いつかず一部の注文が失われる問題が発生しています。会社は注文を一切失わず、かつ運用負荷を最小限に抑えながらトラフィックスパイクを吸収できるアーキテクチャへの刷新を求めています。次のうち、最もこの要件を満たすソリューションはどれですか?
A注文受付と処理コンポーネントの間にAmazon SQSキューを配置し、AWS Lambdaを使ってキューから注文を非同期処理する
✓ 正解
SQSはスパイク時の受付と処理を疎結合にするバッファとして機能し、注文をキューに保持することで損失を防ぎます。LambdaはSQSキューの長さに応じて自動スケールするため、EC2管理が不要で、運用負荷が最小化されます。
BEC2インスタンスを最大インスタンスタイプにスケールアップし、繁忙期にスケジュールスケーリングポリシーで台数を増やす
EC2をスケールアップしても急激な注文増加への即応性が低く、スケジュール設定では予測困難な実際のスパイクに対応できません。また継続的に大きなインスタンスを稼働させるためコスト効率も悪いです。
CAmazon Kinesis Data Streamsで注文をバッファリングし、Auto ScalingグループのEC2インスタンスで処理する
Kinesis Data Streamsはストリーム分析や実時間データ処理に向きており、注文バッファとしてはSQSほど最適ではありません。またコンシューマー側のスケーリング管理が複雑になり、運用コストが増加します。
DAmazon ElastiCacheをデータベース前段に配置してデータベース負荷を分散させる
ElastiCacheをデータベース前段に配置するとデータベースへの読み込み負荷を削減できますが、処理ボトルネック自体の解消にはなりません。スパイク時の処理能力不足という根本問題には対策できません。
解説
SQSは受付と処理を疎結合にするバッファとして機能し、スパイク時も注文をキューに保持することで損失を防ぎます。LambdaはキューのDepthに応じて自動スケールするため、EC2管理が不要で運用負荷が最小化されます。
選択肢Bは、EC2のスケールアップはスパイクへの即応性が低く、急激な注文増加時に一部注文の損失を防ぐことができません。
選択肢Cは、Kinesis Data Streamsはストリーム分析向きで、注文バッファとしてはSQSほど最適ではなく、コンシューマー側のスケーリング管理が複雑になります。
選択肢Dは、ElastiCacheをデータベース前段に配置してもDB負荷を削減できるだけで、処理ボトルネック自体の解消にはなりません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSAAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →