📖

ElastiCache基礎まとめ

2021/08/15に公開

はじめに

現在AWS DVA勉強中の者です。DVAでは、ElastciCacheが試験範囲ですが筆者は実務でElastiCacheを使用したことがないため(MemCached,Redisと使用用途位はなんとなく知っている)改めて基礎をまとめてみたいと思います。

ElastiCacheとは

ElastiCacheとは、オープンソースで用いられるMemCachedとRedisに対応するAWSが管理する完全マネージド型のインメモリデータストアです。SSDやHDDを使用するRDSと比較すると高速なメモリ上で完結するインメモリデータストアのため、ディスクIOがなく、かなり高速に読み書きを実現することができます。

  • ElastiCacheを使用するメリット
    • ハイパフォーマンス
      インメモリデータストアのため、ミリ秒単位の応答が必要な要件に対しても対応することができます。
    • フルマネージド型
      AWSが管理するフルマネージド型のため、ユーザがセットアップ、障害復旧などのオペレーションや運用を意識することがありません。
    • スケーラブル
      需要に合わせてスケールアウト、スケールインなどを実現することができます。

ElastiChaceエンジン

ElastiCacheがサポートしているエンジンは

  • MemCached
  • Redis
    になります。

MemCachedとRedisの比較になります。以下の機能比較から実現したい要件に沿って選択する形になります。
詳しくは(https://aws.amazon.com/jp/elasticache/redis-vs-memcached/)

MemCached Redis
ミリ秒単位のレイテンシー
データのパーティション
プログラミング言語のサポート
柔軟なデータ構造 -
マルチスレッドアーキテクチャ -
スナップショット -
レプリケーション -
トランザクション -
Pub/Sub -
Luaスクリプト -
地理空間サポート -

ユースケース

ElastiChaceを利用するユースケースは以下です。いろいろありますが、主なユースケースは「データベースキャッシュ」、「セッション管理」だと思います。

  • データベースキャッシュ
  • セッション管理
  • メタデータ蓄積
  • Pub/Sub処理
  • リアルタイム分析

キャッシュ戦略

ElastiChaceには、2種類のキャッシュ方法があります。

遅延読み込み

遅延読み込みは、アプリケーションがデータをリクエストするときは、常にElastiCacheに最初にリクエストします。ElastiCacheにデータが存在する場合は、そのままアプリケーションにデータを返却します。ElastiCacheにデータが存在しない場合は、データストアにデータをリクエストし、アプリケーションにデータを返却します。その後、アプリケーションからElastiCacheに対してデータを書き込みます。

  • メリット
    • リクエストされたデータのみキャッシュするため、キャッシュがデータでいっぱいになることを回避できます。
  • デメリット
    • データが更新された場合に、キャッシュミスが起こらないとキャッシュされたデータは更新されないため、データが古くなる可能性があります。
    • キャッシュミスした場合は、データの取得に時間がかかります。(キャッシュへのリクエスト、DBへのリクエスト、キャッシュへの書き込みが行われるため)

ライトスルー

ライトスルーは、データがデータベースに書き込まれるときや、更新される時に常に、ElastiCacheにもデータを書き込みます。

  • メリット
    • キャッシュのデータが古くならなく、常に最新のデータの状態になります。
  • デメリット
    • すべてのデータをキャッシュに書き込みために、キャッシュがデータでいっぱいになり、そのほとんどのデータがアクセスされない可能性があります。

TTL

キャッシュ戦略に関わる重要な要素としてTTLがあります。遅延読み込みでは、古いデータがキャッシュに残ってしまう。ライトスルーでは、不要なデータがキャッシュに残ってしまうといったデメリットがありました。これらを解決するのがTTLです。TTLを設定すると一定時間経ったデータはキャッシュ上から揮発されます。TTLを使用することで、データが古くなる前にデータを消去、不要なデータを一定期間経過後に削除することができるためリソースの確保にもつながります。

終わりに

ElastiCacheについてざっくりまとめてみました。試験が終了して余裕が出てきたら実際に構築してみて挙動を確かめてみたいと思います。最後まで目を通してくださりありがとうございます。

Discussion