4.5 KiB
4.5 KiB
title, tags, aliases, created
| title | tags | aliases | created | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Feature Flag (功能开关) |
|
|
2026-04-25 |
Feature Flag (功能开关)
Feature Flag(功能开关/功能标记)是一种将代码部署(Deploy)与功能发布(Release)解耦的技术机制。通过在代码中嵌入条件判断(开关),团队可以在不重新部署的情况下控制功能的可见性和行为。
Aliases
- Feature Flagging
- Feature Toggle
- Feature Switch
- Kill Switch(紧急情况下的特殊用法)
Core Mechanism
if (featureFlag.enabled('new-checkout-flow')) {
return newCheckoutProcess();
} else {
return oldCheckoutProcess();
}
关键洞察:部署代码 ≠ 发布功能。代码可以在任何时间部署到生产环境,但功能发布由开关控制。
Key Capabilities
1. Decoupled Deployment & Release
| 传统方式 | Feature Flag 方式 |
|---|---|
| 部署 = 发布 | 部署 ≠ 发布 |
| 2AM 部署"以防万一" | 随时部署,择机发布 |
| 全有或全无 | 灰度发布,渐进放量 |
2. Kill Switch(应急切断)
紧急情况下,无需重新部署即可关闭故障功能:
- 支付网关异常?切换到备用提供商(秒级)
- 搜索结果异常?回退到旧算法(秒级)
- AI 模型产生幻觉?切换回上一版本(秒级)
"Instead of debugging under pressure while users suffer, you flip a switch and fix the problem properly later."
3. Progressive Rollout(渐进式放量)
分阶段向用户群发布功能,控制影响范围:
1% 用户 → 监控错误率、性能指标
5% 用户 → 监控转化率、用户反馈
25% 用户 → 检查下游系统负载
100% 用户 → 完成全量发布
如果 5% 阶段出现问题,RTO 以秒计(只需关闭开关),而不是小时级(需要紧急回滚部署)。
4. Micro-Recovery(Feature 级别微恢复)
不再将整个应用视为单一系统,不同功能有不同的风险和业务影响:
| 功能 | RTO 目标 | RPO 目标 |
|---|---|---|
| 核心支付处理 | 秒级 | 零丢失 |
| 新推荐引擎 | 5 分钟 | 15 分钟 |
| Beta 仪表盘功能 | 30 分钟 | 1 小时 |
5. 定向回滚(Targeted Rollback)
如果某个功能只影响欧洲移动用户,可以仅针对该用户群禁用该功能,其他用户不受影响。
Feature Flag vs. 传统灾备
| 维度 | 传统灾备 | Feature Flag |
|---|---|---|
| 目标故障类型 | 硬件故障 | 代码变更 |
| RTO | 小时级(从备份恢复) | 秒级(配置变更) |
| RPO | 取决于备份频率 | 近零(不触碰数据层) |
| 故障频率 | 低(年均几次) | 高(每周可能发生) |
| 成本 | 高(冗余基础设施) | 低(软件工具) |
商业案例数据
| 公司 | 改进前 | 改进后 |
|---|---|---|
| HP | 回滚时间:小时级 | 分钟级 |
| Christian Dior | 回滚时间:15 分钟 | 即时切换 |
| LaunchDarkly 客户 | — | 86% 在一天内恢复 |
| LaunchDarkly 客户 | — | 42% 在小时级(甚至分钟级)恢复 |
成本效益:59% 的 LaunchDarkly 客户表示运维成本降低 11%-50%,8% 表示降低超过 50%。
核心价值
"Deploy with confidence, recover instantly, and focus on building features instead of fixing outages."
Feature Flag 将问题响应从被动救火转变为主动预防:
- 预防优于恢复:在 1% 用户中发现问题,比全量发布后止损更有价值
- 减少焦虑:部署不再可怕,随时可以回退
- 提高迭代速度:团队敢于快速实验
Related Concepts
- Kill Switch — Feature Flag 在紧急情况下的用法
- Progressive Rollout — Feature Flag 支持的渐进式放量策略
- Micro-Recovery — Feature Flag 实现的 feature 级别细粒度恢复
- Deployment-vs-Release — Feature Flag 实现的部署与发布解耦
- RTO — Feature Flag 将 RTO 从小时降至秒级
- RPO — Feature Flag 保护 RPO(不丢失数据)
- LaunchDarkly — Feature Flag 管理平台
- CI-CD-Pipeline — Feature Flag 是现代 CI/CD 的核心基础设施