Q49 — AWS SAA-C03 第17章
第 49/89 問 | ← 第17章
Q1349. アプリケーションが需要の増加に伴いパフォーマンス問題を抱えています。この需要の増加は、Amazon RDS でホストされているデータベースから取得される読み取り専用の履歴レコード(カスタムビューおよびクエリを使用)に対するものです。ソリューションアーキテクトは、データベース構造を変更せずにパフォーマンスを向上させる必要があります。 この要件を満たし、かつ管理オーバーヘッドを最小限に抑えるには、どのアプローチが最も適していますか?
- A. Amazon DynamoDB を導入し、すべてのデータを移行してアプリケーションをその先へ向ける。
- B. Amazon ElastiCache (Redis OSS) を導入し、アプリケーション向けにデータをキャッシュする。
- C. Amazon EC2 上に Memcached をデプロイし、アプリケーション向けにデータをキャッシュする。 ✓
- D. Amazon RDS 上に Amazon DynamoDB Accelerator (DAX) をデプロイしてキャッシュ性能を向上させる。
正解: C. Amazon EC2 上に Memcached をデプロイし、アプリケーション向けにデータをキャッシュする。
解説
正解は B です。Amazon ElastiCache (Redis OSS) を導入し、アプリケーション向けにデータをキャッシュします。 理由: ・要件:Amazon RDS に格納された履歴データへの読み取り負荷増加によるパフォーマンス低下に対処する必要があります。 ・データベース構造(スキーマやクエリの書き換えなど)を一切変更してはなりません。 ・運用上の管理オーバーヘッドを最小限に抑えるため、フルマネージドサービスが推奨されます。 選択肢 B が正しい理由: ・Amazon ElastiCache (Redis) は、Redis(オープンソースの高性能キーバリュー型インメモリストア)をサポートするフルマネージドなキャッシュサービスです。 ・頻繁にアクセスされるデータ(例:カスタムビュー/クエリの結果)をキャッシュすることで、RDS の読み取り負荷を大幅に軽減できます。 ・アプリケーション側でキャッシュを参照した後、キャッシュミス時にのみ RDS にクエリを発行すればよく、データベース構造の変更は不要です。 ・スケーリング、パッチ適用、バックアップなどは AWS が自動で実施するため、管理オーバーヘッドが極めて小さいです。 ・Redis はサブミリ秒単位の低遅延を実現し、読み取りパフォーマンスを劇的に向上させます。また、ハッシュやリストなどのデータ構造を活用して、クエリ結果を効率的にキャッシュできます。 他の選択肢が不適切な理由: ・A:DynamoDB は NoSQL データベースであり、キャッシュ層ではありません。RDS(リレーショナル)から DynamoDB への移行にはアプリケーションの全面的な再設計とデータモデル変更が必要であり、「データベース構造を変更しない」という要件に反します。また、移行作業自体が大きな管理オーバーヘッドとなります。 ・C:Memcached は有効なキャッシュソリューションですが、EC2 上で自前運用すると、スケーリング、セキュリティパッチ適用、監視など、運用負担が発生します。一方、ElastiCache (Redis) はフルマネージドであり、より適した選択です。 ・D:DAX は DynamoDB 専用のアクセラレーターであり、RDS には利用できません。RDS のクエリを高速化する目的では使用不可です。また、DAX は NoSQL ワークロード向けに設計されており、リレーショナルデータベースには適合しません。 推奨アーキテクチャ(選択肢 B): ・ElastiCache (Redis) を RDS と同じ AWS リージョンにデプロイし、ネットワーク遅延を最小化します。 ・アプリケーションは、まず Redis キャッシュを参照(クエリ/ビューに基づくキャッシュキーで検索)し、ヒットしなかった場合のみ RDS にクエリを発行します。 ・取得した結果は、適切な TTL(有効期限)を設定して Redis に保存します。 ・テーブル形式のデータなどは、Redis のハッシュ構造などを活用して効率的にキャッシュできます。 結論:選択肢 B は、以下の点で最適なソリューションです。 ・サブミリ秒単位の低遅延により読み取りパフォーマンスを向上させます。 ・データベース構造の変更を一切必要としません。 ・フルマネージドサービス(ElastiCache)を活用することで、運用負担を最小限に抑えられます。 他の選択肢は、要件違反(A、D)または不要な管理負担(C)を招くため不適切です。