功能开关
功能开关,即通过一个开关来控制软件中的一个功能模块是否被发布、展示,一个算法、一行代码是否被采用、运行。
或者,开和关可以分别代表两种状态、两个叶节点。在使用中,通常拥有true和false两个值,true代表开关开启状态,false代表开关关闭状态。
常见用法
1. 开关开启时,向用户展示一个功能模块,关闭时不展示。代码很简单:
if(toggle.isOpen == true){
showFeatureA();
}
2. 在开关开启时,执行算法版本A,关闭时执行算法版本B
if(toggle.algoV1 == true){
runAlgoV1();
}
else{
runAlgoV2();
}
通常,开关会在以下场景中被使用:
实验性功能
,即将一些客户反馈的但不确定粘性和付费意愿的功能需求,以最小的成本开发和向部分兴趣爱好者开放。并在实验过程中迭代,在某个时间点确定加大投入做增长曲线,或将其停止及时止损。运营活动交付
。有一些功能是配合运营活动实现的,只在一个特殊的时间点开放,结束后立即关闭。功能版本控制交付
。对于不同的客户,会将不同的功能和版本进行不同的组合交付给客户。使用功能开关,可以在一套代码中通过开关控制模块的展示与运行逻辑,快速的交付一个符合业务要求的版本。基于主干开发
,避免长周期分支合过多的代码分支,难以维护。即将未完成的代码也合并到主分支,使用开关控制其是否被执行。这是目前的一种很流行的开发方法,因为他可以大幅度提高交付时间,降低交付BUG。在生产环境中测试
,降低BUG对终端用户的负面影响。使用功能开关取代beta环境,让新的功能特性可以在生产环境中测试后,再发布给公众。- 等等场景。
使用敏捷开关实现功能开关效果
想实现上面的种种,往往可以通过远程配置或远程指令传输的方式实现。而敏捷开关提供了一整套系统,帮助大家实现上面的场景。首先,大家可以使用我们提供的各种语言和框架的SDK(可查询左侧菜单 SDK 下的文章),赋能 toggle.isOpen == true
这类代码更多的执行逻辑:
- toggle.isOpen的最新值,是true还是false?或是更多的状态值,如 "新版"、"旧版"、"v1"、一个json格式的配置代码。
- 针对不同的用户,toggle.isOpen的值是不同的。可能对小王是true,但对小李是false。
而toggle.isOpen == true
拥有什么返回值,可以完全通过敏捷开关提供的控制面板版去控制。
1. 如下图配置所示通过打开、关闭开关,控制新功能"热力图"是否发布给用户。
2. 如下图配置所示,我们希望小王可以下载视频,而小李不能下载视频。即使功能有BUG,也只是对小王有影响(而小王也许正是个QA工程师)。
最后更新于 2022/05/30
未能解决您的问题?请联系在线客服