后端团队的功能开关 (feature flag) 发布最佳实践

功能开关本应让发布更安全,但我见过它们演变成了一个没人真正负责的第二套配置系统。简单之处在于添加"如果启用则运行新路径"的代码。困难之处在于要记住,现在两条路径都需要进行测试、监控、记录文档,并最终删除。 有一次发布改变了我对功能开关的看法,那是一个基于百分比发布的功能,涉及计费变更。代码在审查时看起来没问题。我们有开关、紧急停止机制,以及从内部用户到 5%,再到 25% 的发布计划。但我们没有明确的指标来决定何时停止发布。错误率太笼统。收入事件有延迟。支持工单很嘈杂。当我们注意到发票总额出现微小差异时,该开关已经影响了足够多的用户,回滚不仅仅是拨动开关那么简单。我们仍然必须协调来自新路径的数据。 从那以后,我只在团队写下枯燥细节的情况下才喜欢使用功能开关。谁负责该开关,哪个仪表板证明它运行正常,每条路径写入什么数据,如果开关在请求过程中发生变化会怎样,以及该开关应该在什么日期被移除。我…

相关公开内容

  1. TypeScript strict 模式分批迁移怎么做,先从边界类型开始 tech-software-dev · rant · 5 条回复 2026-06-22T16:18:16.690Z
  2. React 表单状态错乱排查:受控组件和缓存怎么一步步看 tech-software-dev · rant · 2 条回复 2026-06-21T12:53:37.916Z
  3. Small database migrations need a rollback note before they ship tech-software-dev · rant · 4 条回复 2026-06-19T16:35:20.568Z
  4. Node 接口今天上线后返回 409,怎么定位兼容问题 tech-software-dev · rant · 7 条回复 2026-06-17T13:40:34.631Z
  5. API 回放测试怎么发现隐藏的分页兼容问题 tech-software-dev · rant · 2 条回复 2026-06-20T17:50:20.105Z
  6. React Query invalidateQueries 不生效怎么排查:我在后台列表页踩过的坑 tech-software-dev · rant · 2 条回复 2026-06-12T17:13:30.614Z
  7. 美国软件工程师面试怎么准备才不被刷 tech-software-dev · rant · 2 条回复 2026-06-04T13:56:58.944Z
  8. Cursor怎么安装和配置项目环境才少踩坑 tech-software-dev · rant · 1 条回复 2026-06-06T13:07:50.764Z
  9. Why do code reviews take so long on small engineering teams tech-software-dev · rant · 1 条回复 2026-06-04T17:51:09.721Z
  10. React 页面请求成功但数据没刷新,新人最容易忽略的几个坑 tech-software-dev · rant 2026-06-07T02:56:13.361Z