没听过功能管理你就out了

Posted 非著名程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没听过功能管理你就out了相关的知识,希望对你有一定的参考价值。

对于产品研发团队来说,每次软件新版本发布的时候都会面临很大的压力,研发人员、产品经理、测试人员甚至市场运营人员都要在新版本上线的时刻随时待命应对随时可能出现的意外情况,新版发布当天加班熬夜也已经成了常态。一批功能历经一个迭代周期的开发,再从测试环境发布到生产环境上,总会存在较大的风险。如何改善当前软件交付的状况?能否让软件发布简单、快速、安全低风险呢?要实现这一个目标,就要从功能开关说起。

01  什么是功能开关?

功能开关(Feature Flags, 也译作特性开关、特性切换等)算是一种开发技术和开发工具,它最大的特点,就是可以做到发布和部署的解耦,控制产品以功能粒度的进行发布。功能开关顾名思义,本质上是通过一个开关去控制功能发布。而这个功能的所有代码都已经部署到生产环境上了。如果开关配置为关闭,用户就看不到该功能,只有开关配置为开启时,用户才可以看到该功能。

通过功能开关你可以控制每个功能的发布时间,可以让团队低风险地的去交付业务功能,功能开关的优势(包括但不限于):

  • 降低故障恢复时间

  • 产品发布目标用户可控

  • 实现持续部署和持续交付

  • 在线上环境中做AB实验

02  什么是功能管理 ?

功能管理(Feature Management,也有译作特性管理)是管理「功能」生命周期的软件工程实践,它包含了渐进式发布、定向投放、A/B 实验、实时配置变更等针对「功能」粒度全生命周期管理。在持续交付中,它使我们能够做到让每一个变更都能独立发布,并通过渐进式发布来减少变更风险;能够感知到每一个功能在线上真实环境下用户的使用情况;清晰地看到新功能产生的业务价值。

成熟的功能管理实践需要合适的工具平台支持,平台需要提供「功能开关」的全生命周期管理功能,以及高效的「功能开关」规则下发和多语言客户端获取开关结果等能力。 FeatureProbe 是国内第一个支持功能管理实践的开源工具平台。

03  FeatureProbe 的实践场景   

1、部署与发布解耦

在多个功能并行开发时,通常会使用多分支模式来隔离不同功能的代码,每个功能的测试、部署(即发布)必须要依赖前一个功能可用状态,比如当其中有一个功能出现故障时,在回滚该功能时会连带上在该功能上线前的所有功能回滚。

而使用基于 FeatureProbe 提供的「功能开关」来隔离不同功能的代码,可以让每个功能独立测试,在任何时间都可以零风险部署功能代码(功能被隐藏访问不到),发布功能时无须修改代码,功能故障时秒级关闭特定功能且不影响其它正常的功能使用。

2、千人千面,差异化用户分组发布

可以基于用户个性化信息去配置展示不同的功能,实现千人千面,进行差异化发布。

例如冬暖节促销活动,先在北京地区且用户手机为 iOS 设备的用户先开启冬暖节活动,在 FeatureProbe 配置如下:

配置完发布即可在目标用户群体生效该冬暖活动。

3、功能实验

FeatureProbe 还可以支持功能实验,假如需要验证某个业务或者活动不同策略下的效果,你可以在 FeaturProbe 创建实验组A、对照组B,随机投放到不同的用户群体,然后进行实验对照对比探究不同模型策略的效果。

4、服务降级

运维开关 (Ops Toggles) 是功能管理(Feature Management)的核心应用场景之一。这类开关通常从运维的角度管控系统功能,比如当我们上线的新功能出现问题或某个依赖服务出现故障时,运维或研发人员可以使用开关将服务降级,来减少故障对系统整体的影响。

虽然可以使用配置中心、数据库、配置文件等来存储开关值,实现类似的降级功能,但这些通用工具的使用界面对运维人员来说并不十分友好。FeatureProbe 作为专门的开关管理服务,可以让你在统一的平台上可视化管理开关和控制开关状态,让开关控制更加高效、安全。

降级开关通常是一个 boolean 类型的开关,应用程序可通过接入 FeatureProbe SDK 来获取该降级开关返回值,以 Java 代码为例:

final FeatureProbe fpClient = new FeatureProbe(FEATURE_PROBE_SERVER_SDK_KEY, config);
boolean isDegrade = fpClient.boolValue("degrade_rpc_service", new User(), false);
if (isDegrade) 
  // 降级处理逻辑
  return;

当 RPC 调用的服务出现故障时,只需要修改默认规则中的返回值为“false”并发布,即可实现快速降级操作。

 04  如何快速创建一个功能开关?   

第一步:在 FeatureProbe 创建一个功能开关,根据实际业务场景,去配置开关类型、业务参数。

第二步:接入SDK,在开关配置页面会有SDK接入引导,根据引导步骤轻松完成相应的SDK接入业务系统代码。

第三步:控制流量开启或逐步放量,FeatureProbe SDK会在业务系统中执行相应放量配置。

第四步:数据监控,通过数据监控收集到用户对该功能的访问信息和使用情况。

如何联系我们:

当前 FeatureProbe 已经使用 Apache 2.0 License 协议完全开源,你可以在GitHub和Gitee上访问源码,你也可以在上面给提 issue 和 feature 等。如果你觉得我们的项目有意思,欢迎大家在GitHub或Gitee给我们点个🌟,需要大家的支持和鼓励。

GitHub: https://github.com/FeatureProbe/FeatureProbe

Gitee: https://gitee.com/featureprobe/FeatureProbe

同时你也可以加入到 FeatureProbe 开源群里,里面都是各行各业的开发者,有任何技术等问题都可以提出来,看到会第一时间回复。进入FeatureProbe开源交流群,添加小助手,备注:入群,欢迎大家来撩!

点击下方,关注我们。

以上是关于没听过功能管理你就out了的主要内容,如果未能解决你的问题,请参考以下文章

Android EventBus实战, 没听过你就out了

EventBus:Android EventBus实战, 没听过你就out了

Java 8中你可能没听过的10个新特性

「mysql优化专题」90%程序员没听过的存储过程和存储函数教学

这些操作系统的概念,保你没听过!

老祖宗的绝招对治腰疼,别说你没听过