ある企業が、Amazon Aurora Serverless v2 を使って Web アプリケーションのバックエンドデータベースを運用している。多くのクエリが同じ結果を繰り返し取得しており、不要な Aurora への負荷が発生している。アプリケーション層での変更を最小限にして、クエリ結果をキャッシュし Aurora への負荷を下げたい。最も適切なソリューションはどれか。
- A. Aurora のクエリキャッシュ機能を有効化する。
- B. Amazon ElastiCache for Memcached をアプリケーションとAurora の中間に配置し、頻繁にアクセスされるクエリ結果をキャッシュする。
- C. Amazon RDS Proxy をデータベースの前段に配置し、コネクションプーリングで Aurora への接続数を削減する。
- D. Aurora Serverless v2 の最大 ACU を増やして処理能力を向上させる。
解答と解説を見る
正解: B
Amazon ElastiCache for Memcached はシンプルなキー-バリューキャッシュとして機能し、よく実行されるクエリの結果をキャッシュに保存することで、同じクエリが来た際は Aurora にアクセスせずにキャッシュから高速に返せる。TTL でキャッシュの有効期間を制御でき、Aurora への不要な負荷を大幅に削減できる。アプリケーションの変更はキャッシュ読み取り/書き込みロジックの追加だが、Memcached クライアントは多くの言語で提供されている。選択肢Aの Aurora クエリキャッシュ機能は MySQL 5.7 までのクエリキャッシュに相当するが、Aurora では標準のクエリキャッシュ機能は MySQL 8.0 と同様に削除されており、使用できない。選択肢CのRDS Proxy はコネクションプーリングによるデータベース接続数の削減には効果があるが、クエリ結果のキャッシュは行わないため Aurora への実際のクエリ負荷は変わらない。選択肢DのACU 増加は処理能力を向上させるが、コスト増加となり不要なクエリの繰り返し実行という根本問題を解決しない。
📚 関連サービスの解説: Amazon ElastiCache ・ Amazon Aurora