TxKxZxWx's blog

AWS SAA取得に向けて学習

AWS SAA取得に向けて 59日目 「ElastiCacheの概要」 セクション12:キャッシュの活用

セクション12:「キャッシュの活用」

------------------------------------------

 

 

「ElastiCacheの概要」

 

 

⑩キャッシュの利用

繰り返し取り出すデータやコンテンツについてはキャッシュを利用する構成とする。

 

関連する主要サービス:

CloudFront, ElastiCache, S3(キャッシュをやりとりするストレージとして)

 

 

インメモリキャッシュ

ElastiCacheはメモリ+キャッシュというデータベース。

 

 

データを保持するHW

PCなどの機器でデータを保存するためのHWはメモリとHDDなどのディスクがある。

メモリはより高性能で高速に処理ができるHW。
SSDはメモリを使ったハードディスク。

メモリを使用した方が性能が上がる。

 

メモリ型DB

データをメモリ上で動作をさせるとディスク上で動作させる場合と比較して大幅に高速に処理が可能。

つまり、メモリDBをうまく利用することでデータの高速処理を実現できる。

 

 

キャッシュとは

一度アクセスしたデータを保存して次回アクセス時に高速にアクセスできるようにする仕組み。

 

一度アクセスするとキャッシュが保存され、次にアクセスした際にデータベースからデータを取り出さなくても一時的に保存されたキャッシュにアクセスすることによって高速にアクセスすることができる。

 

そのキャッシュ自体をメモリに保存してやりとりをするのがインメモリキャッシュの仕組み。

 

 

ElastiCache

分散インメモリキャッシュサービスの構築・管理及びスケーリングを容易に実施することができるサービス。

  • キャッシュクラスタを数クリックで起動。
  • フルマネージド型でモニタリング、自動障害検出、復旧、拡張、パッチ適用、バックアップに対応し高可用性を実現。
  • 広く利用されている2種類のエンジンmemcached,/redisから選択可能。

Image from Gyazo

 

 

オープンソースのRedisとMemcachedを利用可能で汎用性あり。

 

Redis

  • 高速に値をRead/Writeできるインメモリキャッシュ型DB。
  • シングルスレッドで動作するインメモリキャッシュDBで全てのデータ操作は排他的。
  • スナップショット機能がある。
  • データを永続化できる 

 

Memcached

  • 高速に値をRead/Writeできるインメモリキャッシュ型DB。
  • マルチスレッドで動作するインメモリキャッシュDB。
  • スナップショット機能がない。
  • データを永続化できない。
  • フェイルオーバーや復元ができない。 

 

 

シンプルに、一時的に使用したい場合は「Memcached」の方が簡単に使用できる。

より複雑に使用したい場合は「Redis」

ユースケースはどちらも似ているが、どこまで複雑に機能を使用するかで使い分ける。 

 

 

ユースケース

データアクセスを高速にしたいケースがあればキャッシュの活用を検討する。

 

 

 

キャッシュすべきデータを特定して、他のDBと合わせて利用するのが標準的な構成方法。

 

 キャッシュ未使用で単体でDBを使用すると処理能力が低下しパフォーマンスが低下する可用性がある。

⬇︎

そこでアクセス頻度の高いデータをキャッシュに配置して高速処理できるようにして、ElastiCacheと通常のRDSを分けて使い可用性を高める。

 

 

ユースケース

アプリケーションでデータの即時反映が必要なケースなどに活用する。

  • ユーザーのマッチング処理
  • レコメンデーションの結果処理
  • 画像データの高速表示
  • ゲームイベント終了時のランキング表示 

高速にデータを処理してすぐにその結果を出さないといけない場合などにElastiCache上でその処理を作る。