首页/开发/CI/CD 与发布速查/发布开关(Release Toggle)的生命周期
发布策略60 条

发布开关(Release Toggle)的生命周期

为一次发布而设的开关:上线前打开、全量后退役;管好命名、归属与到期时间,避免开关沉积成永久分支。

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

发布开关是什么

为一次发布而设的开关:功能随代码合入但默认关闭,按放量阶梯逐步打开,全量稳定后退役。管好命名、归属与到期时间,避免开关沉积成永久分支:每个开关都要有人负责、有用途说明、有退役日期,定期巡检清理,否则测试矩阵与代码复杂度会同步上涨,谁也不敢删。

基本信息

创建时机随功能合入,默认关闭
打开时机按放量阶梯逐步打开
退役全量稳定后删除开关与旧分支代码
台账记录负责人、用途、到期日,定期巡检
默认值关闭是安全默认,异常回退依赖它

典型使用场景

  • 暗发布:合并即部署,全量后才对用户可见。
  • 灰度放量:按用户比例或名单逐步打开。
  • 故障止血:异常时关开关而非回滚制品。
  • AB 验证:两组用户不同行为对比。
  • 白名单试用:内部账号先行体验新功能。

开关示意

开关示意
if (flags.newCheckout(user)) {
  newCheckout();
} else {
  legacyCheckout();
}

开关类型

类型生命周期例子
发布开关短期、有退役日新结算流程
实验开关实验结束即回收推荐算法分组
运维开关长期、应急用降级与限流
发布开关是短期的,与实验开关、运维开关的保留策略不同:发布开关应有明确退役点。
默认值语义:关闭是安全默认,回退动作要能在没有新发布的情况下立即生效。
开关判定点要集中:散落在各处的读取会让「关闭」动作遗漏某处。
放量阶梯要预设:百分之一、一成、一半、全量,每档停留多久看什么指标,执行时不用临时拍板。
清理动作并入常规迭代:把开关退役排进版本计划,而不是等有空再清理。
开关变更留痕迹:谁在什么时候打开了什么开关,操作日志与台账要能对上。

易错点

  • 无到期日:开关越积越多,测试矩阵与代码复杂度同步上涨。
  • 开关默认值随手写 true:异常回退语义反转,回退动作失效。
  • 代码删除开关时漏删旧分支:死代码保留,双倍维护成本。
  • 权限人人可改:生产开关变更无审计,事故无法归因。
  • 开关组合无人验证:只测全开与全关,中间组合藏着故障。
  • 把开关当架构能力:所有功能都加开关,配置面失控难治理。

数据来源与参考

  • martinfowler.com《Feature Toggles (aka Feature Flags)》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌