功能开关文章中描述了很多 feature flags 的功能场景,但也欠缺一些不足,如:
- 千人千面的发布与回滚
- 渐进式的发布与回滚
渐进式发布与回滚
渐进式发布与回滚,又可称为灰度发布、灰度测试。即将新的功能特性对一部分人打开,根据使用情况按比例递增依次开放直至百分之百。比如研发团队实现了一个"计算一个城区对奶制品需求的热力图"功能,为了让功能在正式对外开放前,渐进式发布,以保障让交付风险降至最低(如BUG影响用户使用,数据使用的法律风险等):
1. 在生产环境对PM、QA团队开放,如果有BUG则修复,没有BUG则执行第2步
2. 在生产环境对忠实的愿意公测的客户开放,如果有BUG则秒级回滚,并同时修复,没有BUG则执行第3步
3. 对市场上10%的客户开放,如果有BUG则秒级回滚至第2步,并同时进行修复,没有BUG则执行第4步
4. 对市场上30%的客户开放,如果有BUG则秒级回滚至第3步,并同时进行修复,没有BUG则执行第5步
5. 对市场上100%的客户开放,如果有BUG则秒级回滚至第4步,并同时进行修复。
上面的秒级回滚,从技术角度是无需重新部署的,只需要在敏捷开关后台调整即可。具体操作如下:
1. 调整true的百分比,即将功能发布给对应百分比的人群。如图中30%的用户可以使用"计算一个城区对奶制品需求的热力图"功能。
2. 如果需要回滚,也只是把百分比调回上一次的设置即可,比如将true左侧的30%变回10%,false左侧的70%变回90%即可。
千人前面的发布与回滚
在持续创新、精益创业的真实场景中,我们往往会更明确的将功能发布给指定的一类客户。而往往我们需要对这一类客户做渐进式发布和回滚。此时我们可以使用"自定义规则"去筛选我们需要发布的客户群,并在其规则中将返回值调为百分比匹配即可。如下图所示,渐进式发布和回滚的调整方法与上一章节讲述的一致。
解耦Feature与版本的灰度
与功能开关相同,敏捷开关提供的渐进式发布能力,是基于功能特性而非版本的。这种能力可以彻底解放传统软件工程对业务实验、探究和增长的束缚。