Help us understand the problem. What is going on with this article?

AWS キャッシュ活用 ElastiCache

ElastiCacheとは

AWSが提供するインメモリー型データベースサービス。
ElastiCacheはAZサービスでVPCのサブネットグループに配置する。
ElastiCacheのユースケースとしては、RDSへのクエリ結果をキャッシングしてRDSへのアクセス負荷を軽減することにより、DBの読み書きの性能向上させる。

キャッシュ とは

一度利用したデータなどを、その後また使う場合に高速にアクセスできるような形で保存しておくこと。

Webブラウザは、一度閲覧したページやそのページで使われている画像をキャッシュとしてハードディスクに保存している。同じページをあとから見る場合や、一度表示した画像やCSSファイル、JavaScriptファイルが他のページでも使われている場合には、改めてサーバーと通信してデータを取得するのではなく、ハードディスクから読み込むことで、表示を高速化している。

インメモリキャッシュ?

「インメモリ・キャッシュ」とはメモリを活用して高速にキャッシュへのアクセスを可能にしたデータベースの仕組み

スクリーンショット 2020-03-04 16.24.23.png

メインメモリキャッシュのデプロイ、運用、スケーリングをクラウド内で簡単に実行できるウェブサービスです。
このサービスは、低速のディスクベースのデータベースに完全に依存せずに、高速の管理されたメモリ内のキャッシュから情報を取得できるようにすることで、ウェブアプリケーションのパフォーマンスを向上させます。
スクリーンショット 2020-03-04 15.41.44.png
スクリーンショット 2020-03-04 16.22.04.png

Amazon ElastiCacheは、KVS型のnoSQLであるMemcachedRedisのプロトコルに準拠しているので、幅広い用途に使うことができます。

Memcached

スクリーンショット 2020-03-04 16.44.25.png

 高速に値をRead/Writeできるインメモリキャッシュ型DB

 マルチスレッドで動作するインメモリキャッシュDB

 スナップショット機能がない

 データを永続化できない

 フェイルオーバーや復元ができない

Memcachedはシンプルなデータ(string)のみしか格納できません。よって、それ以外のデータを保存する場合にはアプリケーション側で格納できる型に変更する必要があります。また、扱えるコマンドも必要最低限しかなく、ほとんどデータの追加、削除以外は使わないと考えてよいでしょう(一応、データの変更や追記も可能です)。

Redis

スクリーンショット 2020-03-04 16.43.05.png

 高速に値をRead/Writeできるインメモリキャッシュ型DB

 シングルスレッドで動作するインメモリキャッシュDBで全てのデータ操作は排他的

スナップショット機能がある

スナップショットとは?

  • スナップショットとは、ある時点でのソースコードや、ファイル、ディレクトリ、データベースファイルなどの状態を抜き出したもののことです。

  • バックアップをする際に、バックアップ処理中にファイルが更新されると、ファイルやディレクトリに不整合が起こることがあります。これを防ぐために使用されるのがスナップショットです。ある時点での状態を統一的に保持しているので、バックアップ時の時間的な不整合を防ぐことができます。

 データを永続化できる

特徴

RedisではString に加えて、List、Set、Sorted Set、Hash、Bit Array、HyperLogLog と豊富なデータ型を扱えます。さらに正規表現を用いたキーの曖昧検索を行えたり、トランザクションを用いてデータを更新できたりとget/set以外にも豊富な機能があります。

可用性

ElastiCacheでは最小の構成単位を「ノード」と呼びます。EC2で言うところのインスタンスに相当するものです。このノードを組み合わせた集合体をクラスターと呼びます。ノードに直接接続してしまうと、もしそのノードに問題が発生した場合には新しいノードのアドレス(エンドポイント)をアプリケーション側で書き換えなくてはなりませんし、サービスの成長と共に負荷が上がってくるとノードの台数を増やして負荷やメモリ(キャッシュ)を分散したりといった要件も出てきます。クラスター構成を組んでおいて、常にアプリケーションはエンドポイントを見ておくようにすればノードの増減によってアプリケーションに変更を行う必要がありません。よって、運用を行う上でこのクラスター機能という観点は非常に大事になってくるのです。
参考
https://dev.classmethod.jp/cloud/aws/which-choice-redis-memcached/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away