CurrentStack
#database#caching#cloud#site-reliability#chaos-engineering

Valkey Global Datastore障害演習: 2026年のDRゲームデイ実践プレイブック

なぜキャッシュDR演習が必須になったか

キャッシュは「性能向上のための補助」だと見なされがちですが、現在の多くのプロダクトでは可用性の中核です。セッション、レート制御、レコメンド、読み取り負荷分散がキャッシュ前提で設計されているため、リージョン障害時の挙動が崩れると即座にユーザー影響が出ます。

Valkey Global Datastoreのようなクロスリージョン構成を採用していても、図面どおりに復旧するとは限りません。演習でしか見えない差分が必ずあります。

まず「キャッシュSLC」を定義する

演習前にサービスごとの契約(Service-Level Contract)を明文化します。

  • 許容できる古さ(stale window)
  • 許容レイテンシ上昇
  • キー種別ごとの整合性要求
  • フォールバック時の振る舞い(DB直読、劣化応答、キュー退避)

この契約がないと、障害時に議論だけ増えて意思決定が遅れます。

RTO/RPOはキー種別で分ける

一律目標は実務では粗すぎます。例えば:

  • セッション/認証近傍キー: 厳しいRTO、整合性重視
  • 商品一覧等の参照キー: 中程度RTO、一定の古さ許容
  • 派生推論キー: UX許容範囲内で復旧優先度を下げる

キー種別単位の目標にすると、演習の評価が現実的になります。

四半期で回すべき演習シナリオ

最低限、次の4シナリオを回してください。

  1. 主リージョンの書き込み経路劣化
  2. トラフィック急増時のレプリケーション遅延
  3. フェイルオーバーAPIの部分失敗
  4. 切替後の古いキー再増幅(stale storm)

各シナリオに仮説と合格条件をセットで置くのが重要です。

初回ゲームデイの進め方

T-14日: 設計

  • 影響が見えやすいユーザージャーニーを1つ選ぶ
  • キースペースを業務重要度で分類
  • 観測ダッシュボードを準備(lag, hit率, miss penalty, fallback)

T-7日: 準備確認

  • Runbook責任者とエスカレーションを確定
  • 連絡テンプレートと通信経路を検証
  • ロールバック権限者を明確化

当日: 実行

  • ベースライン採取
  • 故障注入
  • Runbookどおりに切替
  • 判断時刻と判断理由を記録

T+2日: 振り返り

  • 期待挙動と実挙動の差分分析
  • 契約違反箇所を抽出
  • Runbook/設計改善を優先度付きで登録

観測指標の実践セット

  • レプリケーション遅延の分位値
  • リージョン別read/write成功率
  • miss時のオリジン負荷増分
  • fallback発動時間
  • ユーザー向け遅延・エラーバジェット消費

キャッシュ内部指標だけ見ても不十分です。必ずユーザー影響に紐づけます。

よくある失敗と対策

失敗1: 切替自体は成功したがアプリ設定が追従しない

対策: エンドポイント解決を集中管理し、切替後検証を自動化。

失敗2: 切替後にstaleデータが雪崩れる

対策: キーバージョニングと段階ウォームアップを実装し、全面無効化を避ける。

失敗3: Runbookと実環境が乖離

対策: CIにRunbook健全性チェックを組み込み、机上演習+技術演習を定期化。

所有権モデル

  • Platform/SRE: 制御平面と切替手順
  • 各サービスチーム: 契約遵守とフォールバック実装
  • インシデントコマンダ: 本番相当判断とGo/No-Go

所有権を暗黙にすると、緊急時に責任が宙に浮きます。

次に自動化すべき項目

  • フェイルオーバー前の前提チェック
  • 危険条件での実行防止ガード
  • 演習レポートの自動生成
  • Runbook更新後の回帰確認

自動化の目的は手順隠蔽ではなく、判断負荷の低減です。

まとめ

Valkey Global Datastoreを活かす鍵は、構成の豪華さではなく運用の再現性です。ゲームデイで契約と現実を擦り合わせ、改善サイクルを固定化できたチームほど、実障害で早く復旧できます。

おすすめ記事