AWSのRedisサービスの使い分け

2種類のサービス特徴

AWSには2種類のRedisマネージドサービスがあって、どう使い分けるのかな?と思ったので、その使い分けについて調べた結果を下記にまとめます。

Elasiticache for Redis

  • 既存のRedisワークロードとの互換性
    ElastiCache for Redisは、オープンソースのRedisと高い互換性を持っている
  • クラスターモードの利用
     クラスタモードの有効化を選択できる柔軟性
  • データ永続化オプション
     AOF(Append Only Files)とスナップショットによる永続化
  • コスト最適化
     リザーブドインスタンスの利用が可能

MemoryDB for Redis

  • 高可用性
     シャーディングとマルチAZ化を標準提供されている
  • 「Redis APIプロトコル」をサポート
     Redis APIをサポートしているものの、既存ワークロードの移行では一部機能が利用できない可能性
  • ゼロダウンタイムのアップグレード
     ダウンタイムを発生させずにエンジンのアップグレードが可能

コスト比較

米国東部(バージニア北部)リージョンにおける両サービスの価格の一例(2023年4月時点)
同等のスペックで比較した場合、MemoryDB for Redisの方が5~10%程度高価

ElastiCache for Redis:
cache.t4g.micro (0.5 GiB) $0.017/時間
cache.m6g.large (13.07 GiB) $0.323/時間
cache.r6g.large (13.07 GiB) $0.399/時間
MemoryDB for Redis
db.t4g.small (1.37 GiB) $0.026/時間
db.m6g.large (13.07 GiB) $0.351/時間
db.r6g.large (13.07 GiB) $0.433/時間

使い分けの考え方

  • コスト
    • 同等構成において両者にコスト面の差異はほとんどなく、機能面だけを見ればMemoryDBに優位性がある
    • ただしリザーブドインスタンスへの対応状況により、倍以上のコスト差が生まれるため、コスト面ではElasticacheの優位性が高いと言える
  • 互換性
    • 互角性においてElasticacheの方が高く、移行要件では十分な稼働検証が行えない場合はMemoryDBの利用には課題感が残る
    • 新規要件ではMemoryDBへの対応を想定したアプリケーション開発により互換性の課題をクリアにできる可能性がある
  • 可用性
    • MemoryDBは可用性が高く、ゼロダウンタイムでのスケールアウト/インが可能なため、高可用性が求められる要件では優位性が高い
  • データ永続化要件
    • MemoryDBは自動バックアップ機能と高い耐久性があるものの、データの永続化はできないため、データ永続化が必須の場合はElasticacheしか選択肢がなく、この点がノックダウン要件になる可能性はある