無限ノック › SAA 練習問題一覧 › 問題
SAA高性能なアーキテクチャの設計

あるニュースアグリゲーションサービスは新着記事をリアルタイムでユーザーに配信しています。記事が公開されてから2秒以内にアクティブな全ユーザーのフィードに反映される必要があります。同時接続ユーザー数はピーク時50,000人で、フロントエンドはReactで構築されています。インフラの運用負荷を最小限に抑えつつリアルタイム配信を実現するアーキテクチャとして最も適切なものはどれですか?

A
Amazon API GatewayのREST APIとAWS Lambdaを組み合わせ、クライアントが2秒ごとにポーリングしてDynamoDBから最新記事を取得する
2秒間隔のポーリングでは「公開から2秒以内」の配信を保証できません。50,000ユーザーが2秒ごとにポーリングすると毎秒25,000リクエストが継続発生しコストとLambda実行オーバーヘッドが増大します。
B
AWS AppSyncのGraphQLサブスクリプションとDynamoDB Streamsを連携させ、記事追加イベントを接続中の全クライアントにリアルタイムでプッシュ配信する
✓ 正解
AppSyncのサブスクリプションはDynamoDB Streamsとネイティブに連携し2秒以内のプッシュ配信を実現できます。WebSocket接続管理はAppSyncが自動処理するため自前の接続管理コードが不要で、50,000同時接続にも対応し運用負荷を最小化できます。
C
Amazon API GatewayのWebSocket APIとAWS Lambdaを組み合わせ、接続状態をDynamoDBで管理してブロードキャスト処理を自前で実装する
API Gateway WebSocket APIはリアルタイムプッシュを実現できますが、接続IDのDynamoDB管理・50,000接続へのブロードキャストロジックをLambdaで自前実装する必要があり、AppSyncと比較して実装・運用負荷が大幅に増加します。
D
Application Load BalancerとAmazon EC2でServer-Sent Eventsを実装し、Amazon ElastiCache for Redisでpub/subメッセージルーティングを行う
ALB + EC2 + SSEは技術的には実現可能ですが、EC2管理・Auto Scaling・ElastiCacheのpub/sub実装など運用タスクが多く、マネージドサービスで実現できる場合と比較して「運用負荷を最小限に抑える」要件に最も反します。

解説

選択肢BのAWS AppSyncはGraphQLのマネージドサービスで、サブスクリプション機能により接続中クライアントにデータ変更をリアルタイムでプッシュ配信できます。DynamoDB Streamsとのネイティブ統合により新記事のDynamoDB書き込みが自動的にサブスクリプションをトリガーし、2秒以内に全クライアントへ配信されます。WebSocket接続の管理・スケーリングはAppSyncが担うため自前の接続管理コードが不要で、50,000同時接続にも対応し運用負荷を最小化できます。 選択肢AのAmazon API Gateway REST APIによるポーリングは「公開から2秒以内」の保証ができません。50,000ユーザーが2秒ごとにリクエストすると毎秒25,000リクエストが継続発生しコストも増大します。 選択肢CのAmazon API Gateway WebSocket APIはリアルタイムプッシュに対応できますが、接続IDの管理・ブロードキャストロジック・DynamoDBでの状態管理を全て自前実装する必要があり運用負荷が大きくなります。 選択肢DのALB + EC2 + SSE(Server-Sent Events)は技術的に実現可能ですが、EC2管理・Auto Scaling設定・ElastiCacheとのpub/sub実装など運用タスクが多く「運用負荷を最小限に抑える」要件に反します。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでSAAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← SAA の問題一覧に戻る