功能开关
Feature Flag
中级通用功能开关(Feature Flag)是让已部署的代码根据配置或请求条件,决定某项功能是否运行的机制。它解决了代码上线与功能开放必须同时发生的问题;例如,新版搜索先对团队开放,出问题时再关闭。
你可能会说:「新版搜索想先给团队试用,确认没问题再开放给所有人,出问题还能马上关掉。」
动手看看新版搜索如何逐步开放
新版搜索代码已经部署,但开关还没打开。普通用户发起搜索时,服务查到配置为关闭,就继续返回旧版结果。
要点功能开关是怎么控制上线节奏的?
- 1
代码部署和功能开放分开
我们可以先把新版搜索代码部署上去,再用开关决定谁能用。因为改开关通常不需要重新部署,所以发现明显问题时,可以更快地停止新功能;但开关关掉不等于修好了代码。
- 2
先说清开关对谁生效
开关可以按环境、用户或组织决定结果。你让 AI Agent 实现时,要说明默认给谁开、给谁关;同一用户的一次操作也尽量得到一致的结果,否则页面显示新版,提交时却走旧版逻辑。
- 3
关闭后也要有可用路径
设计开关时,我们要想清楚关闭会发生什么:回到旧搜索,还是暂时隐藏搜索入口?如果新版已经改变了数据结构,仅关闭入口未必能恢复旧流程,所以还得检查旧路径能否正常处理数据。
- 4
稳定之后清理旧分支
功能全面开放且运行稳定后,开关和旧代码通常可以一起清理。因为两条路径长期并存会增加测试和排错范围,后来的人也难判断哪个分支仍在使用。
容易混淆的地方
功能开关控制的是已部署功能走哪条路径,不等于部署或回滚:回滚是换回旧版本代码。它也不等于权限控制;如果某人依法或按订阅方案无权使用某功能,访问限制要由可靠的服务端权限校验承担,不能只靠关闭页面入口。A/B 测试可能借助功能开关分流,但还需要明确实验分组和效果衡量。
什么时候用
适合用
- 新版搜索已写好,想先让内部团队试用,验证后再逐步向其他用户开放。
- AI 摘要接入了新模型,想在成本或质量异常时关闭新路径,暂时回到旧实现。
- 后台报表正在改版,想让指定客户先体验,同时保留旧报表作为退路。
不适合用
- 只是要限制付费用户访问导出接口,用服务端权限控制;功能开关不能代替权益校验。
- 旧版本代码已经造成线上故障,关掉新入口也无法避开故障时,直接修复或回滚部署。
- 只是给自己调试页面换一套本地参数,用本地配置即可,没必要增加线上功能开关。
练一练选一个答案,看看解释
你们已部署新版 AI 摘要,但想先让内部团队使用;如果新模型频繁超时,希望能停用新版并让用户继续使用旧摘要。你会怎么做?
让 AI 帮你做复制给 AI Agent 直接用
请为 AI 摘要接入功能开关:默认所有用户走旧实现,仅对指定内部账号启用新版。请让服务端请求按开关结果选择实现,并验证关闭后能正常回到旧版;同时说明开关配置放在哪里、如何修改和测试。