混乱发布后的功能开关清理清单

上周我们进行了一次小规模发布,在测试环境中看起来一切正常,但在生产环境中却导致两个客户账户出现异常。问题本身不在于新代码。一个旧的功能开关仍然将部分 UI 路由到旧版 API 的响应格式,因此 QA 测试的是一条路径,而支持用户访问的却是另一条。 修复问题的速度比回滚要慢。我导出了所有处于活动状态的开关,添加了负责人和过期时间列,然后通过代码库搜索和一次请求日志查询将每个开关与代码对应起来。对于高风险开关,我添加了包含用户 ID 哈希、开关名称、路由和响应版本的临时结构化日志。经过两个小时的流量观察,我们确定了哪些分支已经失效。我首先移除了风险最低的开关,在常规金丝雀发布流程下进行部署,并将数据库迁移保持独立,以便我们在不触及数据的情况下回滚应用程序。 我得到的主要教训是:功能开关是生产环境的配置,而不是代码中的注释。如果一个开关没有负责人、没有过期日期、也没有指标,它就会变成隐形的债务…

相关公开内容

  1. Como instalar Cursor y arreglar el indexado lento tech-software-dev · experience 2026-06-07T13:36:30.120Z
  2. Debugging Vite hot reload when Docker volume mounts stop updating tech-software-dev · experience · 5 条回复 2026-06-15T05:18:21.083Z
  3. 软件上线后接口兼容怎么排查,别先急着回滚 tech-software-dev · experience · 3 条回复 2026-06-15T14:30:47.739Z
  4. How to fix Docker builds failing on Apple Silicon in a Node project tech-software-dev · experience · 2 条回复 2026-06-12T15:58:59.823Z
  5. Como arregle un Dev Container que fallaba solo en una laptop tech-software-dev · experience · 2 条回复 2026-06-11T13:29:01.275Z
  6. 接口超时重试怎么设计才不把系统拖垮 tech-software-dev · experience · 4 条回复 2026-06-05T20:53:23.573Z
  7. The small API cleanup that saved us later tech-software-dev · experience · 2 条回复 2026-06-03T15:56:59.439Z
  8. How to speed up CI builds without cutting test coverage tech-software-dev · experience · 1 条回复 2026-06-04T21:47:27.887Z
  9. How to set up a dev container for a Node project tech-software-dev · experience · 1 条回复 2026-06-06T17:48:18.511Z
  10. 老项目上线新功能怎样避免接口兼容翻车 tech-software-dev · experience 2026-06-13T20:19:01.796Z