あるスタートアップ企業が、モバイルアプリのバックエンドを AWS 上にゼロから構築しています。1 日のトラフィックは非常に変動が激しく、深夜はほぼゼロ、ピーク時は毎秒 10,000 リクエストに達します。ユーザーデータの読み取りが書き込みの 80% を占め、レイテンシーは P99 で 100ms 以下が要件です。データはリレーショナルモデルで、複雑な JOIN クエリが必要です。インフラ運用負荷を最小化しながらコスト効率よく設計するには、どのアーキテクチャが最適ですか?
- A. AWS Fargate で ECS タスクを実行し、Amazon DynamoDB をデータベースとして使用する。DAX(DynamoDB Accelerator)で読み取りキャッシュを実現する
- B. Amazon API Gateway + AWS Lambda でサーバーレスアーキテクチャを構築し、Amazon Aurora Serverless v2 をデータベースとして使用する。Aurora のリードレプリカと ElastiCache for Redis で読み取りの 80% をキャッシュし、P99 レイテンシーを確保する
- C. Amazon EC2 スポットインスタンスのフリートでアプリケーションを実行し、Amazon Aurora PostgreSQL プロビジョニングタイプで Multi-AZ + リードレプリカを構成する
- D. Amazon EC2 Auto Scaling グループにアプリケーションサーバーをデプロイし、Amazon RDS Multi-AZ PostgreSQL をバックエンドデータベースとして使用する。ElastiCache Redis で読み取りキャッシュを構成する
解答と解説を見る
正解: B
API Gateway + Lambda のサーバーレス構成はゼロから無制限のスケールに自動対応し、深夜のアイドル時はほぼコストがかかりません。Aurora Serverless v2 は需要に応じてキャパシティを自動スケールし、リレーショナルモデルと複雑な JOIN をサポートします。ElastiCache Redis で読み取り 80% をキャッシュすることで P99 100ms の要件を達成できます。 D: EC2 Auto Scaling + RDS Multi-AZ は機能しますが、深夜のアイドル時もインスタンスコストが発生し、コスト効率が低下します。インフラ管理の運用負荷も Lambda より高くなります。 A: DynamoDB はリレーショナルモデルと複雑な JOIN クエリには不向きです。JOIN が必要なデータモデルには RDS/Aurora が適しています。 C: スポットインスタンスはコスト削減に有効ですが、中断リスクがあり、P99 レイテンシー 100ms の要件への影響や運用の複雑性が増します。深夜のトラフィックゼロ時のコスト最適化もサーバーレスほど効果的ではありません。
📚 関連サービスの解説: Amazon API Gateway ・ AWS Lambda