概要
AWSが提供する代表的なキャッシュサービスである、ElastiCache。
効率的に使用するためのキャッシュ戦略について勉強したのでまとめてみます。
ElastiCacheの概要・特徴
- フルマネージド型のインメモリデータサービス、インメモリキャッシュを提供するサービス
- アプリケーションのパフォーマンスが向上させ、マイクロ秒単位の応答時間を実現
- 自動スケーリング機能を提供し負荷の変号に対しても柔軟に対応できる。また、データの暗号化アクセスコントロールなどのセキュリティ機能も豊富
キャッシュ戦略について
ElastiCacheを効率的に使用するための主な戦略として、以下の3つの方法が考えられる。
- 遅延読み込み
- 書き込みスルー
- TTLの追加
遅延読み込み
遅延読み込みの概要
必要な時にのみキャッシュにデータをロードするキャッシュ戦略。
例として、ElasticCacheがアプリケーションとデータベースの間にある場合を考える。
- アプリケーションがデータをリクエストする場合は、最初にElastiCacheキャッシュへリクエストを行う
- リクエストがキャッシュヒット(リクエストされたデータがキャッシュ内に存在し、かつ有効期限内である状態)である場合
- ElastiCacheはアプリケーションにデータを返す
- リクエストがキャッシュミス(リクエストされたデータがキャッシュ内に存在しない、もしくはキャッシュ内に存在しているが有効期限が切れている状態)である場合
遅延読み込みのメリット・デメリット
- メリット
- 要求されたデータのみがキャッシュされるので、リソースの無駄を省いて、キャッシュの容量を節約できる
- デメリット
- キャッシュミスが発生した時のみキャッシュのデータが更新されるため、キャッシュのデータは古い可能性がある
- キャッシュミスが発生した場合、データ読み取りに時間がかかる(以下の手順が発生するため)
- キャッシュへデータのリクエスト
- DBへデータのリクエスト
- キャッシュのデータ更新
書き込みスルー
書き込みスルーの概要
データがデータベースへ書き込まれたり、更新されたりするたびに、キャッシュのデータも更新するキャッシュ戦略。
書き込みスルーのメリット・デメリット
- メリット
- データベースへ書き込み処理が発生するたびにキャッシュ内のデータは更新されるため、キャッシュ内のデータは常に最新になる
- デメリット
- 全てのデータをキャッシュするため、読み取られないデータもキャッシュし、リソースの無駄遣いになる
TTLの追加
TTLを追加することでキャッシュの有効期限を設定する。
有効期限が切れたデータはキャッシュ内から削除されるため、古くなったデータがキャッシュを圧迫することがなくなる。有効期限を設定することで、遅延読み込み、書き込みスルーそれぞれのデメリットを解消することができる。
まとめ
- 遅延読み込みはキャッシュミスの時にデータベースからのデータをリクエストし、アプリケーションがキャッシュを更新する。読み込まれるデータのみがキャッシュされるので、リソースを効果的に使えるが、キャッシュが古くなっている可能性あり
- データの書き込みが発生するたびに、キャッシュのデータも更新される。キャッシュデータは常に最新となっているが、すべてのデータをキャッシュするため、多くのリソースが必要となる
- TTLを設定することで、遅延読み込み、書き込みスルーのデメリットを軽減することができる
参考