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しか選択肢がなく、この点がノックダウン要件になる可能性はある