十年ものアプリのセッションストレージをクッキーからRedisに移行するときに気にしたこと、それでも起きてしまったこと

rails new したばかりのアプリケーションのセッションストレージはなんでしょう。そう、特別なテンプレートを使わない限り CookieStore です。
Rails のデフォルト設定ですし追加インフラも不要で利用も容易なため採用しているアプリケーションも多いでしょう。

しかしセキュリティのベストプラクティスによると、セッションストレージをサーバサイドに寄せるよう推奨されることも多いです。さてそこでセッションストレージをクッキーから切り替えるとしましょう。

アプリケーションがリリース前だったら? ストレージ切り替えを実装するだけですね。
リリース済みだがセッションのリセットが許容されるなら? ストレージを切り替えてデプロイするだけですね。
アプリケーションはリリース済みだし、セッションを維持したままストレージを切り替えたいときは? この場合なにをどうしていくべきか、Rails によるレールは敷かれていません。

私達は運用10年目となる1000万オーダーのセッションを持つ Rails アプリケーションのセッションストレージを、セッションを維持したまま Cookie から Redis (MemoryDB) に移行しました。
セッションストレージの移行をどんな方法で進めたか、どんな実装をしたか、どんなことを気にしていたか、それでも起きたトラブルや移行した結果についてお話しします。

アバター画像:hogelog
hogelog

大学卒業以来いくつかのウェブ企業にてサービス開発エンジニアとして働き、前職クックパッドではサービス開発エンジニアから開発基盤エンジニア、エンジニアマネージャなどを経験。2021年6月にヘイ(現STORES)に転職、また一エンジニアとしてバックエンドや基盤領域改善を楽しく進めています。