Q54 — AWS SAA-C03 第16章

第 54/100 問 | ← 第16章

Q1254. ゲーム会社が、ゲームスコアを表示するWebアプリケーションを運用しています。このアプリケーションは、Application Load Balancer(ALB)の後ろでAmazon EC2インスタンス上で動作しており、データはAmazon RDS for MySQLデータベースに格納されています。ユーザーは、データベースの読み取りパフォーマンスの劣化により、長時間の遅延や中断を経験しています。同社は、ユーザー体験の向上を望んでいます。この要件を満たすソリューションはどれですか?

正解: A. データベースの前にAmazon ElastiCache(Redis OSS)キャッシュを使用する。

解説

この要件——データベースの読み取りパフォーマンスを向上させ、ユーザーの遅延・中断を解消する——を最も適切に満たすのは、選択肢A(Amazon ElastiCache(Redis OSS)をデータベースの前に配置)です。以下に詳細な分析を示します。 【主な要件】 ・読み取りパフォーマンスの向上(ユーザー遅延の原因はDB読み取りの遅さ) ・中断の低減(データベースのボトルネックが原因と推定) ・既存のEC2+ALB+RDS for MySQLアーキテクチャとの互換性維持 【各選択肢の検討】 A. Amazon ElastiCache(Redis OSS)キャッシュ:最適な選択肢 ・頻繁にアクセスされるデータ(例:ゲームスコア、ユーザープロフィール)をメモリ上にキャッシュし、RDSへの読み取り負荷を大幅に削減します。 ・Redisはサブミリ秒レベルのレイテンシを実現し、読み取りパフォーマンスを劇的に向上させます。 ・既存アプリケーション(EC2)との統合が容易で、Redisへのクエリを試みてキャッシュミス時にRDSへフォールバックするように変更できます。 ・コスト効率も高く、RDSの過剰プロビジョニングよりも安価です。 B. Amazon RDS Proxy:読み取り性能向上には不適 ・RDS Proxyは接続管理(コネクションオーバーヘッドの削減、コネクションストーム防止)を改善しますが、読み取りクエリ自体の速度を向上させる機能はありません。 ・書き込み重視のワークロードや接続数制限の課題には有効ですが、今回の「読み取り遅延」の根本原因には対応しません。 C. AWS Lambdaへの移行:過剰かつ非現実的 ・既存のEC2ベースアプリケーションをLambdaへ全面移行するのは、工数・リスクともに大きく、本質的な読み取りパフォーマンス問題の解決にはなりません(LambdaからRDSへ直接アクセスすれば、依然として遅延が発生)。 ・さらに、Lambdaのコールドスタートにより、一部ユーザーでレイテンシが悪化する可能性があります。 D. Amazon Aurora Global Database:本ケースには不適切 ・Aurora Global Databaseは、マルチリージョンでのディザスタリカバリおよび、地理的に離れたリージョン間での低レイテンシ読み取りを目的としており、単一リージョン内でのRDS読み取り性能向上には寄与しません。 ・また、既存のMySQL環境からAuroraへの移行は追加の複雑性と互換性リスクを伴います。 【なぜ選択肢Aが最適か】 ・読み取り性能向上という課題に対して、キャッシュは最も高速かつ確立された解決策です(特に繰り返し取得されるスコアデータに極めて有効)。 ・既存アーキテクチャへの影響が最小限(アプリケーションにRedisクライアントを追加し、キャッシュロジックを実装するのみ)。 ・ゲーム業界では、Redisを用いたリアルタイムスコアボード実装が広く採用されており、実績と信頼性に優れます。 ・トラフィック増加に応じてElastiCacheクラスターを自動スケール可能であり、将来的な拡張性も確保されます。 【選択肢Aの実装ステップ例】 1. Amazon ElastiCache(Redis OSS)をデプロイ:高可用性のため、Cluster Mode Enabled構成を選択。 2. アプリケーションの修正:EC2上のアプリケーションが、まずRedisからスコアを取得。キャッシュミス時はRDSを参照し、取得結果をTTL付きでRedisに保存。 3. パフォーマンス最適化:大量の読み取りクエリにはRedisパイプラインを活用。CloudWatchでキャッシュヒット率を監視。 4. スケーリング:読み取り負荷増加時には、Redisの読み取りレプリカを追加。 正解:A このソリューションは、既存アーキテクチャへの最小限の変更で、最も迅速かつ効果的に読み取りパフォーマンスを向上させます。