首页/开发/CI/CD 与发布速查/回滚与前滚修复(Rollback vs Fix Forward)
质量门禁与回滚51 条

回滚与前滚修复(Rollback vs Fix Forward)

发布后出问题时有两条路径:回滚到上一版本恢复服务,或前滚发布修复版本;选择依据是恢复速度、数据兼容性与根因清晰度。

CI/CD 与发布速查开发更新于 2026-10-13

回滚与前滚怎么选

发布后出问题的两条路径:回滚到上一版本恢复服务,或前滚发布修复版本;选择依据是恢复速度、数据兼容性与根因清晰度。通用顺序是先恢复服务再决定修复方式,事故中犹豫时间越长影响面越大。回滚也不是免费选项:数据与依赖的兼容性要先验证,否则旧版本可能引发二次故障。

基本信息

回滚恢复快、确定性高;受数据库与状态兼容性制约
前滚适合根因明确、修复量小的场景,保留新功能
决策顺序先恢复服务,再决定修复方式
约束破坏性的数据变更通常无法纯回滚
演练两条路径都要提前演练,事发时按流程执行

典型使用场景

  • 未知根因:先回滚止血,再复盘定位。
  • 根因明确:一行配置或小修复,直接前滚。
  • 数据变更已发生:评估迁移与兼容,纯回滚可能再次故障。
  • 灰度环境:前滚修复验证后逐步放量。
  • 发布窗口受限:回滚优先保持服务可用。

决策速记

决策速记
服务不可用 → 先止血:能回滚就回滚
只是功能小缺陷 → 评估前滚修复窗口
数据已不兼容 → 前滚修复或按迁移预案处理

场景判据

场景优先
服务不可用回滚(能回则回)
小缺陷、可快速修前滚修复
不可逆数据变更前滚加迁移预案
回滚前确认依赖兼容:旧版本读取新结构的数据可能再次故障。
决策时限先定好:事故等级对应多久内必须做出回滚或前滚决定,避免无限讨论。
复盘产出双清单:根因修复项与流程改进项分开记录,下次事故才有参照。

易错点

  • 事故中边排查边犹豫:决策时间拉长,影响面扩大。
  • 假设回滚总能成功:未验证旧版本与当前数据、配置的兼容性。
  • 回滚后直接收工:未补根因分析与修复计划,同一故障会再次发生。
  • 前滚版本未走完整验证:修复引入新问题,造成二次故障。
  • 无回滚演练:关键时刻发现按钮不可用或步骤缺失。
  • 把回滚当万能:数据库迁移等不可逆变更要靠预案,而不是幻想回退。

数据来源与参考

  • Google SRE Book《Release Engineering》
  • Martin Fowler《BlueGreenDeployment》相关讨论
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌