ロールバックと安定性の回復
(セクション: 技術とインフラ)
概要
Rollbackは、データ損失とSLO違反のリスクを最小限に抑えた最新の安定版へのマネージドリターンです。信頼できるプロセスには、SLO信号、クリアゲートおよびロールバック基準、スイッチングメカニズム(GitOps/Ingress/mesh)、互換性のあるデータスキーム、分離されたconfigs/secrets/caches、 runabookおよびpost-incidentの改善サイクルが含まれます。
1)いつロールバックするか(開始基準)
SLO/ビジネスゲート:しきい値の上のp95/99、エラーレート>、支払/レート変換の低下、PSPタイムアウトの増加。
技術信号:ハースのクラッシュ、メモリリーク、キューの増加、トークンの劣化/秒(LLM)、 Edgeの5xx。
データリスク:不正な移行、レプリカの不整合、孤児のトランザクション/支払い。
安全/PII:疑わしいリーク-即時ロールバック/アイソレーション。
ルール:2+キーメトリックがスレッショルド外>N分の場合、ロールバックがトリガーされます。
2)ロールバックの種類
1.アプリケーション:前のタグへのコンテナ/パッケージのロールバック。
2.フィーチャー:フィーチャーフラグ/キルスイッチによる即時シャットダウン。
3.「ルーティング」(Routing)-安定バージョン(canary→stable)またはBlue→Greenに重みを返します。
4.データベース:論理ロールバック(補償)、スキームの段階的なリターン;PITRは最後の手段です。
5.インフラ:ロールバック・マニフェスト/テラフォームプラン;ネットワーク/WAF構成を返す。
6.データ/キャッシュ/キュー:リセット/無効/リプレイメッセージ;バージョンキャッシュ。
3)安全なロールバックの建築原則
スキーマ互換性:expand→migrate→contract戦略(expandとcontractの間でロールバックが可能)。
隔離された依存関係:リビジョンの個別のsecrets/configs/caches/queues。
Idempotent操作:移行とジョブの繰り返し開始-安全。
アーティファクトの不変性:画像、チャート、SQLスクリプト-バージョン管理と署名。
GitOps true:現在のバージョンとルーティングは、マニフェストリポジトリにコミットされます。
4)ロールバック力学(Kubernetes/GitOps)
アルゴロールアウト(重量リターン)
yaml apiVersion: argoproj. io/v1alpha1 kind: Rollout metadata: { name: api }
spec:
strategy:
canary:
steps:
- setWeight: 5
- pause: { duration: 10m }
in case of analysis failure → automatic rollback to stable
GitOpsロールバック(アイデア)
git revert <commit_with_bad_version>
git push # Argo CD/Flux revert cluster to previous revision
NGINX: 安定したの速いスイッチ
nginx map $cookie_canary $to_canary { default 0; 1 1; }
upstream stable { server api-stable:80; }
upstream canary { server api-canary:80; }
server {
location / {
if ($to_canary) { proxy_pass http://canary; }
proxy_pass http ://stable; # removed canary cookie - instant rollback
}
}
5)データベースのロールバックとデータ保護
展開→マイグレート→コントラクト:- 「展開」(Expand)-新しいフィールド/インデックスを追加し、コードは古いスキーマと新しいスキーマをサポートします。
- マイグレート:コードは新しいスキームへの書き込みを開始します。古いスキームを壊すことはありません。
- 契約:安定化後のみ古いものを削除します。
- PITR/スナップショット:論理補償が不可能な場合にのみ使用します。
- 補償:挿入/残高/支払いを修正するための個別のスクリプト/ジョブ。
- 読み取り専用ウィンドウ:批判されると、状態を「凍結」するために一時的に録音をブロックします。
sql
-- expand
ALTER TABLE wallet ADD COLUMN bonus_balance NUMERIC DEFAULT 0 NULL;
CREATE INDEX CONCURRENTLY idx_wallet_bonus ON wallet(bonus_balance);
-- migrate in code, two-sided write
-- contract (after stabilization)
ALTER TABLE wallet DROP COLUMN legacy_bonus_balance;
6)ロールバック時のキューとキャッシュ
バージョンキャッシュ:バージョン('v2:')→安全な共存を前提としたキー。
障害:ロールバック中-大量クリーニング'v2:'、 'v1:'に戻ります。
キュー:バージョンに応じてパーティー/トピック;「チェックポイントから」メッセージを再生します。
重複除外/idempotency:重複しない再処理のためのidempotenceキー。
7) SLOのゲートおよび自動ロールバック
メトリクス:p95/99、エラーレート、彩度(CPU/IO/GPU)、キューの深さ、トークン/秒、支払い変換。
ポリシー(例):
if p95_latency_ms > 250 for 5m OR error_rate > 1. 5% for 3m OR payment_conv < baseline-0. 3%
then rollback release && open incident && freeze deploys
8) Runabooks(プレイブック)
A) p99と5xxのリリース後の成長
1.プロモーションを停止(カナリア/ブルーグリーンを凍結)。
2.トラフィックを安定したリビジョンに切り替えます。
3.キャッシュのヒット/キュー/PSP遅延を確認します。
4.Diagnostics:ログ、プロファイル、クライアント/スキーマのバージョンを削除します。
5.コミュニケーション:ChatOps、ステータスチャネル、インシデントカード。
6.修正アクションの開始:機能のパッチ/ホットフィックス/キャンセル。
B)データベース移行エラー
1.フリーズ書き込み(読み取り専用、簡潔に)。
2.アプリケーションのロールバック→安定版(古いスキーマと互換性があります)。
3.補償/ロールバックスクリプトを実行します。
4.レコードを解凍します。ドリフト/エラーを観察します。
C)支払の低下(PSP)
1.PSPルーティングを前のルートに切り替えます。
2.ロールバック処理リリース。
3.保留中のすべての支払いを調整し、idempotentキーで繰り返します。
D) LLM/推奨事項が低下
1.新しいモデル/パラメータ(フィーチャーフラグ)を無効にします。
2.前のエンドポイント/重量を返します。新しい改訂KVキャッシュをクリアします。
3.トークン、最初のレイテンショントークン、毒性をチェックします。
9)通信および凍結リリース
フリーズ・ウィンドウ:ロールバック後-RCA/fixへのリリースを一時停止します。
シングルチャンネル:ステータスの更新、アクションの年表、誰が何をしたか。
ステークホルダー:製品/CS/支払い/弁護士(PII)。
10)事後: 分析と予防
RCA(料金なし):根本原因、要因、ゲートが機能しなかった理由(そうでない場合)。
アクション:移行テスト、限界、特徴ゲート、観測可能性。
SLOしきい値:「柔らかい「/」硬い「場合の調整。
ドキュメント:runabooksの更新、アラートの追加、トレーニング(ゲームデー)。
11)ツールとテンプレート
GitOps: Argo CD/Flux-'revert'/'rollback'はバージョンでコミットします。
プログレッシブデリバリー:Argo Rollouts/Flagger-メトリクスの停止/ロールバック。
エッジ/入力:ウェイトルーティング、クッキールーティング、高速スイッチ。
フィーチャーフラグ:分数ロールアウト、キルスイッチ。
Migration DB: mig-frameworks(アップ/ダウン、ドライラン、スロットリング)
可観性:既製のダッシュボード「release compare」 (stable vs canary)。
12)ロールバックの準備のチェックリスト
1.バージョン管理および署名されたアーティファクト(images/charts/SQL)。
2.Two-rail configs/secrets/caches/queues(バージョン接頭辞)。
3.expand→migrate→contractによるDB図。
4.SLOゲートとオートキックバックでカナリアとブルーグリーンのリリース。
5.主なシナリオ(payment/DB/cache/LLM)のRunabooks。
6.ChatOpsボタン:'/rollback'、'/freeze'、 '/promote'。
7.監査とロギング:誰が、いつ、何がロールバック;診断のアーティファクト。
8.ゲームデーのトレーニング:すくいと回復をシミュレートします。
9.ビジネスとサポートコミュニケーションプラン。
10.1つの画面で安定したvs新しい。
13)アンチパターン
コードがロールアウトされる前の破壊的な移行(下位互換性はありません)。
バージョンのない共有キャッシュ/キュー→汚れたロールバック。
GitOps/Change History→Prodへの手動編集なし。
gates/telemetry→late検出のないカナリア放出。
凍結せずにロールバックし、RCA→インシデントを繰り返します。
ビジネスメトリック(支払い/レート)なしのテクニカルメトリックのみを監視します。
すべてのリビジョンに共通する「秘密」→事件を隔離することは困難です。
概要
信頼できるロールバックは「ストップクレーン」ではなく、バージョン管理と互換性、孤立した依存関係、SLOゲート、GitOps現実、自動ロールバック、クリアrunabooksというリリースに組み込まれたプロセスです。このアプローチにより、iGamingプラットフォームは迅速に安定性を取り戻し、データと収益の損失を最小限に抑え、各インシデントを改善の源に変えることができます。