实用技巧学习指南:特性开关(Feature Toggle)的运用与理解
最编程
2024-07-23 17:11:20
...
Feature Toggle
是一种开发技术,允许团队在不更改代码或者修改少量代码的情况下修改系统行为
- 控制特性发布
- 控制突发事件
- 权限策略
- 测试策略
Feature Toggle优点(与feature branch比较)
- 避免了分支合并代码冲突的问题,因为是基于主干的开发
- 每次提交都在主干,迭代速度明显有优势
- 新功能的整个过程都持续集成
缺点:
- 未完成的功能可能会部署到线上,如果配置有误可能将未完成的功能开启。当然可以将界面层最后开发避免过早暴露。
- 主干上担心提交代码影响其他功能。
Feature Toggle的种类
发布开关主要是为了隐藏未开发完成的功能,而业务开关则可以帮助我们快速满足某些需求
发布开关:
- 在发布代码时关掉未完成的功能
- 生存期短
- 功能稳定就马上删除
- 在整个开发过程中有预定义的值
业务开关:
- 实现A/B测试
- 针对特定人群发布功能尽早获得反馈
- 针对特定条件开启或者关闭功能。例如可以设置在指定时间点开启,这样新功能将按照设定自动上线下线,无需手动上线,适合专题等情况
- 能线上开启或者关闭,实现快速回滚
-
Release Toggles
发布开关用于控制发布的新特性,需要上线的新特性就打开开关,还在开发的以及不上线的特性就将关闭开关,存在周期短
-
Experiment Toggles
测试性的开关,需要做某一种测试就将这个测试的开关打开,测试结果对于有助于后期决策,例如某个新功能只对于某个群体的人打开,存在周期较长
-
Ops Toggles
操作性的开关,提供给员工使用,方便在某些特殊场景下关掉一些功能,比如遭到DOS攻击时可以关掉网络端口,存在周期应当较短,但是系统拥有少量长寿命的“Kill Switches”并不罕见,它允许生产环境的操作员在系统承受异常高负载时正常降级非关键系统功能
-
Permissioning
权限开关,根据某些权限设置的开关 当用作管理仅向高级用户公开的功能的方式时,与其他类别的功能切换相比,许可切换可能是非常长寿的 - 以多年的规模。 由于权限是特定于用户的,所以权限切换的切换决定始终是按请求的,这使得这是一个非常动态的切换。
静态开关 VS 动态开关
注意一些问题
- 只在需要的地方创建开关
- 控制开关的数量。同上,开关应按需使用并及时清除。
- 开关之间代码保持独立。如果代码存在依赖就没法删除,最终维护性反而变差
- 清除发布开关和废弃代码。发布开关应当在功能稳定后删除,旧代码也是。
- 界面层最后暴露