在这个数字化时代,产品的研发效率慢慢地成为企业的外围竞争力,所以越来越多的公司开始应用麻利开发方法来进步产品研发的效率和品质。在麻利开发中,技术团队的研发效率能够由以下几个指标来掂量:
- 代码部署频率 : 代码部署到生产环境中的频率,这也是开发速度和效率的体现。
- 均匀修复工夫(MTTR): 在生产中故障呈现到复原的工夫。
- 变更的前置工夫 : 从提出变更申请到部署生产中的工夫,变更施行所需的工夫。
- 产品公布频率 : 团队在一段时间内公布的性能数量和频率。
- 缺陷率 : 在软件开发过程中,所发现和解决的缺点数量和重大水平。
以上这些因素能够很好地展现产品研发效率,但在以后这个疾速变动的市场中,研发过程中的流程和工具必须要跟得上研发速度,一旦产品的研发速度慢于需要变更的速度,新性能上线就会被提早,而企业也会在疾速倒退的市场中失去外围竞争力。
有很多开发工具能够帮忙团队简化开发流程、改善合作和沟通,进步工作效率。但工具的应用应该被慎重考虑,研发团队应该抉择最能满足研发需要并反对麻利开发实际的工具。而性能开关,就是麻利开发中的常用工具。
What – 什么是性能开关?
「性能开关」(Feature Flag, 又称为“个性开关”) 能够容许开发人员在不影响其余性能的状况部署新性能,并在生产环境中通过管制性能的开关灵便管制性能的可用性和可视性,进步了性能部署效率并且升高了公布危险,让团队可能疾速满足利用市场需求的变动。
而性能开关的应用非常简略,性能开关会被蕴含在一个 if 语句外面,当 if 的状态为 true 时,性能开关会被关上,而新性能就会展现给用户,当 if 状态为 false 时,开关会被敞开,那么新性能会被暗藏不会展现给用户。
FPUser user new FPUser();
user.with("ATTRIBUTE_NAME_IN_RULE",VALUE_OF_ATTRIBUTE);
boolean boolValue = fpClient.boolValue("YOUR_TOGGLE_KEY",user.false);
if(boolValue){// the code to run if the toggle is on}else{// the code to run if the toggle is off}
用户能够由不同的属性(如角色、地理位置、设施类型等)或者自定义的标识符号(用户 ID、会员等级等)形成用户组。例如,新性能仅对付费用户或者特定地区的用户开启,性能开关就能够让新性能在限定的范畴内测试新性能或者针对特定用户群体提供个性化的体验。
在产品研发过程中,我想大部分的技术团队和产品团队都会遇到以下问题:
1. 什么时候公布新性能?公布策略是什么?
2. 线上故障最快复原的解决方案是什么?
3. 谁能够看到新性能?全量公布?
性能开关容许你在利用程序运行时管制性能的公布,也就是说你能够在利用程序运行的同时开启或敞开某个性能,而无需从新构建或重新部署代码。它还能够容许研发团队将代码部署到生产环境中,但不对用户凋谢这个性能代码,只有该性能曾经确认能够公布生产环境,才凋谢给用户。
性能开关能够先确定指标用户,限定新性能用户范畴缩小对用户的影响,实现在生产环境中进行功能测试。
Why – 为什么说性能开关是必不可少的?
性能开关最大的特点就是能够将部署与公布离开,这是以往的软件部署公布形式不容易做到的。研发同学能够随时将新性能代码部署到生产环境中,通过性能开关管制仅让 QA 团队可见,以便于对新性能进行测试,当测试通过后,再逐渐凋谢给更多用户。
1、疾速部署
能够让团队疾速、平安地将局部业务代码部署到生产中,不须要像传统开发一样,期待所有性能都开发实现后,再合并部署到生产环境中。
2、进步测试效率
QA 测试最好的形式是在生产环境中测试,因为生产环境中测试存在肯定的危险,性能开关能够让 QA 团队在生产环境中在不影响用户体验的状况上来测试性能,能够更早地发现问题。
3、性能公布更加灵便
能够在不扭转代码状况下开启和敞开性能,更能满足变化莫测的市场环境。
4、进步产品迭代速度
性能开关能够让开发人员更快地实现、测试和部署新性能,从而进步产品迭代速度,缩短新性能的上线工夫,更快地将产品推向市场。
5、减速问题定位和修复
性能开关能够让开发人员更疾速地定位和修复问题,从而进步产品的稳定性和可靠性,开发人员能够依据须要去敞开某些性能,在不影响用户体验的状况下疾速修复问题。
总的来说,性能开关能够帮忙技术团队更无效地工作,同时还能够改善用户体验,升高公布新性能的危险。
How – 怎么实现性能开关?
有很多形式能够实现性能开关:**
- Hardcode 形式
代码中应用简略的 if-else 语句,去判断性能是否被开启或敞开,须要更改代码,可能导致部署和保护成本增加。
- 配置文件
应用配置文件启用或禁用性能,如 XML 或 JSON,这些文件在运行时应用程序去读取。须要重新启动应用程序能力利用新的配置。
- 数据库
性能开关能够存储在数据库中,利用程序运行时去读取数据库中的数据。减少了数据库的备份和复原等保护工作。
- 第三方工具
有许多第三方工具能够提供性能开关治理,如第三方 SaaS 平台 LaunchDarkly、Optimizely、FlagSmith 等,或者应用开源解决方案 FeatureProbe。
企业能够依据业务状况去抉择性能开关的解决方案,如有短缺的工夫和人力也能够抉择本人来实现,也能够抉择成熟的第三方工具。第三方工具能够提供简洁易上手的用户界面,容许开发人员疾速创立和配置开关,并提供一系列的剖析和监控工具来理解性能开关的应用状况。能够更疾速、轻松去创立和治理性能开关的应用状况,不须要额定的代码编写和保护。
FeatureProbe 是国内首家性能开关治理开源平台,它蕴含了灰度放量、AB 试验、实时配置变更等针对『性能粒度』的一系列治理操作,齐全开源的,能够齐全释怀间接应用。
以后 FeatureProbe 作为一个性能开关治理平台曾经应用 Apache 2.0 License 协定齐全开源,你能够在 GitHub 和 Gitee 上拜访源码。