--- title: "Feature Flag (功能开关)" tags: [devops, continuous-delivery, deployment, risk-mitigation, feature-management] aliases: [Feature Flagging, Feature Toggle, Feature Switch] created: 2026-04-25 --- # Feature Flag (功能开关) **Feature Flag**(功能开关/功能标记)是一种将代码部署(Deploy)与功能发布(Release)解耦的技术机制。通过在代码中嵌入条件判断(开关),团队可以在不重新部署的情况下控制功能的可见性和行为。 ## Aliases - Feature Flagging - Feature Toggle - Feature Switch - Kill Switch(紧急情况下的特殊用法) ## Core Mechanism ```javascript 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 的核心基础设施 ## Sources - [[sources/rto-vs-rpo-key-differences-for-modern-disaster-recovery.md]] - [[sources/devops-culture-and-transformation-fostering-collaboration-agile-practices-and-innovation-linkedin.md]] - [[sources/Deployment-Automation.md]]