特性管理是一种现代软件开发实践,通过将特性的发布与部署解耦,并利用特性开关技术快速改变特性的可用性,从而管理特性的生命周期。它是DevOps、CI/CD、渐进式交付、AB实验等现代开发实践的关键驱动因素。
特性管理的实践价值
- 简化开发分支管理:通过代码中开关隔离开发中的特性和功能,团队可以使用主干开发,无需引入特性分支,降低代码集成周期和冲突问题。
- 提供低风险的保真测试:在线上环境可以精确控制新功能只对特定用户开放,高度保真,降低测试环境搭建成本。
- 渐进放量与迅速止损:通过AB实验量化业务价值,灵活控制发布的放量节奏,如有异常可立即关闭,降低故障恢复时长。
- 优化协作模式:特性粒度链接业务与研发角色,覆盖特性全生命周期,部署、发布分离,降低沟通成本。
特性管理与BizDevops
特性管理融合业务视角,连接业务、研发、运营角色,交付业务价值。技术实现包括特性管理服务架构、代码示例平台等,覆盖行业包括计算机软件、互联网、IT金融服务、保险健康、医疗等。国外发展状况良好,工具支持包括自建(如硅谷大厂)SaaS化服务(LaunchDarkly,Optimizly)和开源项目(unleash,ConfigCat,flagsmith)。
特性管理在滴滴的实践
- 发展历史:滴滴从特性分支模式转变为特性开关+主干开发模式,显著提升开发效率和降低风险。
- 开发模式改变:从长期特性分支模式转变为主干开发模式,提高代码集成频率,避免多分支合并冲突,降低回归成本。
- 案例:
- 渐进式发布案例:滴滴乘客端APP付款页改版,通过特性开关保证发布稳定性,不影响核心业务指标。
- 线上测试案例:滴滴Global司机端启动速度优化,通过特性开关进行长期线上测试。
- 运维降级预案:特性开关作为运维降级预案,提升系统稳定性。
- AB实验案例:公告视觉刺激测试,对比不同图片和文案组合对用户点击率和跳出率的影响,提高查看详情点击率,减少页面跳出率。
特性管理与业务的链接
- 角色协作:业务运营、产品经理、研发团队、数据分析师等多角色协同,用量化数据度量业务价值产出。
- 价值度量:特性粒度链接业务与研发角色,覆盖特性全生命周期,统一对业务价值的理解、度量和计算方式。
特性管理落地的挑战
- 工具平台支持:开关长期治理、平台治理、功能清理。
- 开发模式转变:功能粒度开发、部署发布解耦、主干开发模式。
- 实验理论普及:开关统一管理平台、稳定性保障、操作安全性、易用性。