6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS ElastiCache(Redis)に関する考察

Last updated at Posted at 2021-03-18

目的

ElastiCache(Memcached)を使用していたが、ElastiCache(Redis)に切り替えることを検討してみたので、
自身の理解向上のために備忘録として残します。

What's redis

スクリーンショット 2021-03-18 14.36.42.png

What's AWS ElastiCache(redis)Extension

スクリーンショット 2021-03-18 14.37.16.png

Cluster Mode Enabled vs Disabled

スクリーンショット 2021-03-18 14.37.38.png

Memcached vs Redis

スクリーンショット 2021-03-18 14.38.01.png

引用元 : Advanced Design Pattern forAmazon ElastiCache

Memcached,Redis (クラスターモードが無効), および Redis (クラスターモードが有効) の比較の概要

Memcached Redis (クラスターモードが無効) Redis (クラスターモードが有効)
エンジンバージョン 1.5.x 2.8.x 以降 3.2.x 以降
データ型 シンプル ‡ 2.8.x - 混在 3.2.x 以降 - 複雑
データのパーティション化 はい いいえ はい
クラスターが変更可能 はい はい 3.2.10 以降 - 限定
オンラインリシャーディング いいえ いいえ 3.2.10 以降
Encryption いいえ 3.2.6、4.0.10 以降 3.2.6、4.0.10 以降
マルチスレッド はい いいえ いいえ
ノードタイプのアップグレード いいえ はい はい
エンジンのアップグレード はい はい はい
高可用性 (レプリケーション) いいえ はい はい
自動フェイルオーバー いいえ オプション 必須
パブリック/サブ機能 いいえ はい はい
ソートされたセット いいえ はい はい
バックアップと復元 いいえ はい はい

FYI Memcached と Redis の比較
FYI ElastiCache + Redis に出てくる概念と、クラスタモードごとの違い

切り替えた方がいいの?

そもそもキャッシュサーバ用途として利用しているなら揮発性データを扱っているはずなので、
データの永続化やバックアップに重きをおくのはよろしくないのではと思う一方、
後述するRedisのメリットがあるので、memcached から redis へ切り替えをした方が良さそう。

また、ユーザーのログイン情報(セッション)をキャッシュサーバに保持させるケースがわかりやすい例だと思いますが、
その場合、データが消失してしまうと、ユーザーは再ログインをする必要が出てきます。
ユーザーによってはログイン情報を忘れていて、ログインできなくなって不便が生じるケースもあります。
ユーザーへのホスピタリティを考慮すると、キャッシュだから消えても良いか とは一概にいえないと改めて感じました。

  • 可用性向上
     ElastiCache(Memcached)だと、サービス更新(RDSでいうメンテナンスウインドウと同じと解釈)ノード故障時データ欠損が発生する(ノード3台構成で1台故障した場合、33%のデータ欠損が発生する)が、ElastiCache(redis)ではレプリケーションされているため、データの欠損は発生しない

  • データバックアップ
     redisではS3へのデータバックアップがサポートされる

  • Memcached の垂直スケーリングによるデータが空になる
    Memcached クラスターをスケールアップ/ダウンするときは、新しいクラスターを作成する必要があります。Memcached クラスターは、アプリケーションによって事前設定されない限り、最初は空の状態になります
    FYI : https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/mem-ug/Scaling.html#Scaling.Memcached.Vertically

Q: Amazon ElastiCache のサービス更新とは何ですか?
サービス更新は、Amazon ElastiCache の機能であり、特定のホストの更新をご自由に適用できます。これらの更新には、セキュリティパッチまたはマイナーソフトウェア更新タイプがあります。これらの更新によってクラスターのセキュリティ、信頼性、運用パフォーマンスが強化されます。

Q: Memcached クラスターの ElastiCache に更新を適用する際に関連するダウンタイムはありますか?
はい、ノードは新しい空のノードに置き換えられます。キャッシュの内容はもう存在せず、新たに始まります。

引用元 : https://aws.amazon.com/jp/elasticache/elasticache-maintenance/

2021/11/26追記

Amazon MemoryDB for Redisが登場しました。

  • ElastiCached for Redis
    • デメリット プライマリノードが落ちた場合に、フェイルオーバータイミングでのデータロストがある
  • MemoryDB
    • メリット ノード障害やフェイルオーバーが発生しても、データロストしない
    • デメリット データ永続化のトレードオフとして書き込み速度は低下した

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?