2026/01 現在、AWS のドキュメントに明記がなかったので載せておきます。
まとめ
ElastiCacheのノードベースのRedis(Valkey)は垂直スケール(up / down)を行うと、データロストが発生します。(複数回実行した結果としては100%発生)
スケーリングオペレーションの実行計画で注意しましょう。
背景
いくつかのCache serviceでデータロストが発生するか、どの程度のダウンタイムなのかを確認することを目的に検証を行なっていました。
検証内容
検証ツールを実行して、その結果を元にデータロストが発生しているのかを確認しました
ツールの内容
- シングルクライアント
- 同期処理
- 実行中はずっとSETを実行する
- SETする情報はシーケンシャルな情報を含む
- キャッシュサーバにStoreされているデータで抜け番があったら出力する
検証オペレーション
- 連番でキーを発行するプログラムを実行
- 垂直スケール(up or down)を行う
- 垂直スケール完了
- プログラム停止
- データの抜け番を確認
結果
抜け番が発生する → 少量のデータがロストする
プログラム実行中はダウンタイムの発生はなかった
つまり、コマンドは成功し続けている。
SETが成功していてもデータはロストしている
expired, evicted は発生していないのでモニタリングしていても確認できない
最後に
ノードベースのElastiCacheはノードタイプごと帯域幅に制限があります。
そもそもデータ永続性の低い技術なので、永続性を求めてもいけませんが、
データをロストさせたくないデータソースとしてElastiCache Valkeyを使っている場合は注意したいですね。