はじめに
マーケティングテクノロジー部の屋比久怜央です。
2024年10月にAmazon ElastiCache for Valkeyが公開されました。2024年11月に弊チームでもRedis OSSからValkeyへの移行を実施したので、移行のプロセスや注意点について解説します。
Valkeyとは
OSSとしてのValkey、そしてクラウド上のオンメモリキャッシュとしてのValkeyの2つの側面から紹介します。
OSSとしてのValkey
Valkeyは、Redisのライセンス変更を受けて生まれたforkです。
Redis 7.2.4との互換性を維持しながら開発が進められており、2025年3月現在8.0.2が最新バージョンとなっています。
クラウド上のオンメモリキャッシュとしてのValkey
Redisのライセンス変更により、Redis 7.4以降を利用したマネージドサービスの提供にはRedis社との契約が必須となりました。これに伴い、Redisの後継であるValkeyを利用したマネージドサービスが展開され始めました。
AWSではAmazon ElastiCache for Redisの同系としてAmazon ElastiCache for Valkeyが発表されました。また、Google CloudではMemorystore for Redisの同系としてMemorystore for Valkeyが発表されました。
Amazon ElastiCache for Valkeyは、Redis OSSと比較してサーバレスにおいて33%、ノードベースでは20%安い価格で利用できます。そのため、Redis OSSからValkeyへの移行によって費用を削減できます。
Valkeyの導入
弊チームでも費用削減の観点から、Valkeyへの移行を実施することになりました。
移行プロセスと注意点
AWSにおいて、Redis OSSからValkeyへの移行そのものは容易に実施できます。
アプリケーションからElastiCacheにアクセスするProxyエンドポイントを変更する必要もありませんし、データもそのまま引き継がれます。
しかし、移行に先立って以下の3点に注意する必要があります。
1. 破壊的変更の影響を確認すること
Valkeyへの移行に先立って、破壊的変更が存在するかどうかを調査する必要があります。こちらの詳細は後述します。
2. ダウンタイムが発生すること
Valkeyへの移行時に、数分程度のダウンタイムが発生します。今回の移行では4分間のダウンタイムが発生しました。ただし、総リクエスト件数に対してエラー件数は0.05%程度と、ユーザ影響は軽微なものにとどまりました。
3. Redis OSSへの再移行が不可能であること
こちらがもっとも致命的な点です。一度Valkeyに移行すると、Redis OSSに再移行できません。どうしてもRedis OSSに戻したい場合には、バックアップをとったうえでRedis OSSインスタンスを別途立ち上げる必要があります。
破壊的変更の影響
今回はRedis 7.1.0からValkey 7.2.6への移行を実施しました。破壊的変更の有無を調査するにあたって、このバージョンアップを2つに分解して調査しました。
調査①: Redis 7.1.0からRedis 7.2.4への変更
先程ValkeyはRedisとの互換性を維持しながら開発されていると述べたものの、それはRedis 7.2.4とValkeyとの間の互換性の話です。そのため、Redis時代のアップデートにおける破壊的変更の詳細については調査の必要があります。
調査の結果、Redisそのもののマイナーアップデートには破壊的変更が存在するものの、弊チームのプロダクトには影響しないことがわかりました。
調査②: Redis 7.2.4からValkey 7.2.6への変更
ValkeyはRedisとの互換性を維持しながら開発されています。Redis 7.2.4をforkしており、現在の8.0.2に至るまで破壊的変更は行われていません。
2024年11月当時はAmazon ElastiCache for Valkeyを利用すると自動的にValkey 7.2.6が選択されるようになっており、もちろん破壊的変更は存在しませんでした。
パフォーマンスの変化と今後の展望
Valkey 7.2.6時点ではパフォーマンスに影響のあるアップデートは行われておらず、導入によるパフォーマンスの変化は特にありませんでした。しかし、Valkey 8.0において非同期IOスレッディングの導入などによるパフォーマンス改善が行われており、Amazon ElastiCache for Valkeyにおいてもバージョンアップによってパフォーマンスの向上が見込まれます。
まとめ
弊チームではコスト削減を目的としてElastiCacheのValkey移行を実施しました。移行は、破壊的変更に影響されないことを確かめたうえで実施しました。fork以降のValkeyは互換性を保って開発が進められているため、Redisのマイナーバージョンアップにおける破壊的変更の調査のみで済みました。
現状では大きなパフォーマンス改善はありませんが、Valkey 8.0へのバージョンアップを見据えながら運用を続けます。
おわりに
本記事で紹介した事例が、Valkeyへの移行を検討しているエンジニアの皆様の参考になれば幸いです。