キャッシュ層追加・DB読み取りレプリカ活用によるパフォーマンス改善
読み取り負荷分散、キャッシュ導入によるレイテンシ改善効果の測定方法を解説します。
既存システムでデータベースがボトルネックになっている場合、最も費用対効果の高い改善策の 一つがキャッシュ層の追加と読み取りレプリカの活用です。本記事ではその改善アプローチを 既存システム改善の文脈で解説します。
SAA レベル:基礎概念
読み取り負荷が問題になる典型的な兆候
- データベースのCPU使用率が恒常的に高い
- 読み取りクエリのレイテンシが増加している
- 書き込みよりも読み取りの比率が圧倒的に多い(Read Heavyなワークロード)
SAA 試験のポイント
これらの兆候が見られる場合、まず検討すべきはリードレプリカの追加やElastiCacheの導入です。データベースのインスタンスサイズを単純に上げる(垂直スケーリング)よりも、根本的な負荷分散になる、という基本的な改善の優先順位がSAAで問われます。
SAP レベル:高度な設計シナリオ
既存システムへの段階的なキャッシュ導入
SAP 試験のポイント
稼働中のシステムにキャッシュを後から導入する際、SAPレベルではアプリケーションコードへの影響を最小化しながら段階的に導入するアプローチが問われます。まず「読み取り頻度が高く、更新頻度が低い」特定のクエリ(商品マスタの取得等)から対象を絞り込み、Lazy Loadingパターンでキャッシュを追加し、効果を測定してから対象を拡大していく、という進め方が実務的です。
Step 1: 最もアクセス頻度の高いクエリを特定(X-RayやDBのスロークエリログから分析)
Step 2: そのクエリ結果をElastiCacheでキャッシュ(Lazy Loading)
Step 3: レイテンシ・DB負荷の改善効果を測定
Step 4: 効果が確認できたら、対象クエリを段階的に拡大
読み取りレプリカへのトラフィック振り分け
SAP 試験のポイント
既存のアプリケーションが単一のデータベースエンドポイントに直接接続している場合、リードレプリカを追加しても、アプリケーション側で読み取りクエリと書き込みクエリを明示的に振り分けるロジックを実装しない限り、効果が得られません。SAPレベルでは、Aurora のリーダーエンドポイント(複数のリードレプリカに自動的に負荷分散する専用エンドポイント)を活用し、アプリケーション側の実装をシンプルに保ちながら読み取り負荷分散を実現する設計が問われます。
改善効果の測定方法
SAP 試験のポイント
「キャッシュを導入したので改善したはず」という主観的な判断ではなく、SAPレベルでは改善前後でのCloudWatchメトリクス(DB CPU使用率、平均レイテンシ、キャッシュヒット率)を定量的に比較することが求められます。特にキャッシュヒット率が低い場合、キャッシュのTTL設定やキャッシュキーの設計に問題がある可能性があり、追加のチューニングが必要と判断できます。
| 指標 | 改善前 | 改善後 | 評価 |
|---|---|---|---|
| DB CPU使用率 | 85% | 40% | 大幅改善 |
| 平均レイテンシ | 250ms | 80ms | 改善 |
| キャッシュヒット率 | - | 92% | 良好 |
設計上の落とし穴
「キャッシュを追加したのにDB負荷が下がらない」というケースでは、キャッシュキーの設計が細かすぎて、ヒット率が実質的に低くなっている(例: タイムスタンプを含めてしまいキャッシュが毎回ミスする)という原因が典型的です。SAPレベルでは、改善効果が出ない場合の原因切り分け(キャッシュキー設計、TTL設定、対象クエリの選定ミス)を行える診断力が問われます。
まとめ
- SAA: 読み取り負荷の兆候とキャッシュ・リードレプリカによる改善の基本方針を理解する。
- SAP: 段階的なキャッシュ導入のアプローチ、リーダーエンドポイントの活用、定量的な改善効果測定と原因切り分けができる。
次は CDN活用によるレイテンシ改善を見ていきましょう。