帮助中心
千企千面的版本管理与交付

这篇文章将介绍如何通过敏捷开关实现千企千面的版本管理与交付解决方案。该方案适用于云SaaS产品交付与私有化部署两个场景。

问题与需求描述

一家企业向市场提供了由8个产品组成的研发管理矩阵平台,每个独立的产品都有10到20个功能模块。不同的客户会根据自身需求订阅使用其中的一款或多款产品,并在每款产品中选择所需的功能模块。

该企业一直在持续升级自己的产品矩阵,同一功能模块会出现多个版本共存的情况。尤其是为了适应一些客户的专有需求,使产品矩阵拥有了上千个小版本,真正成为了“千企千面”的科技产品。

在私有化部署的大环境下,千企千版的持续部署和交付成为了研发部门最大的挑战。在价格计算、客户订单管理方面,也给市场和客户成功团队带来了重大的压力。

如何健康的维持千企千面的持续开发、部署、交付、客户成功,成为了企业最大的挑战之一。

解决方案

使用敏捷开关来管理功能模块的交付。

首先,为8个产品的每个功能模块,分别建立 Feature flags。如下图列表中第一行的"Testhub-共享用例" Feature flag,用来控制产品"Testhub"中功能模块"共享用例"。

其次,对于每个独立的功能模块在 Feature flag,建立版本,如下图红色框中所示,产品"Ship"的功能模块"需求客户洞察"中建立了 v1, v2, v3 三个版本。

v1, v2, v3版本的历史由来:在3个月的时间里,对产品进行了3次功能改进,第一次完成版是v1,第二次改进后的版本是v2,第三次改进后的版本是v3。v2是经过了客户验证的最新稳定版,v3则是包含了一类客户特殊需求的版本(此版本正在给部分客户的市场业务类团队进行测试)。而一些私有化部署的企业和不希望进行版本更新的企业仍然在使用v1版本。

第三,软件工程师通过集成SDK,控制同一个功能模块的某个版本的被执行。如下图所示,Feature flag "ship-需求客户洞察"不同的返回值会使程序去调用(发布)不同的 ShipInsights 功能版本给客户。

第四,交付正确的功能版本给客户

我们已经为不同的产品和功能模块创建了 Feature flags,并将 Feature flags 集成到代码中去控制功能模块千企千面的交付。

首先,创建可复用用户组,如下图所示创建"SaaS企业版-稳定版-Ship"用户组,可以通过"自定义规则"定义属于该用户组的客户。该用户组的客户可以使用"Ship"产品的所有处在最新稳定版的功能。

其次,进入产品"Ship"对应的每个功能模块的 Feature flag,针对这个用户组进行版本分配。如下图所示,在"自定义规则"中的"v2-最新稳定版"的配置里,设置如果客户属于"SaaS企业版-稳定版-Ship"用户组,则返回 v2。

第三,当有新的 SaaS 企业版客户需要使用“Ship”产品时,我们无需修改所有 feature flags 的设置。只需回到"用户组"页面,在用户组中添加、删除对应的客户即可。

而上图中右侧的选择列表,则可以提前由研发团队设置好,以达到如下目的:

  1. 让非研发团队更容易的通过词汇搜索到客户

  2. 避免非研发团队填入错误信息

第四,当某个客户希望试用尚未购买的功能模块时,我们可以针对客户的特殊需求进行设置。比如赋予客户使用"Testhub"产品"共享用例"功能模块 v3 版本的权利,我们可以进入"Testhub-共享用例"这个 Feature flag,设置规则 【如果机构为"奇绩创坛",则返回 v3】,如下图所示:

私有化部署交付策略

在私有化部署时,可以将客户设置的 Feature flags 导出成 JSON 格式的配置文件,在私有化部署时用敏捷开关 SDK 导入配置,使私有化部署的订阅交付策略生效,或通过 API 同步策略,将客户购买订阅的产品、功能模块及对应的版本的最新配置传递给私有化服务。

如下图所示,左侧为"北京啊哈时刻科技有限公司"所购买订阅的产品、功能模块及对应的版本列表。可以在右侧:

  1. 通过点击绿色按钮"私有化部署配置生成",导出订阅交付策略的配置文件。
  2. 通过填入 API 地址,并点击"同步"按钮,将导出的feature flag配置发送到远端服务器。

软件货币化(价格管理)

通常,不同的客户购买不同的产品和功能模块时,我们会根据他们的用户数、用量情况、功能版本等因素制定不同的定价。而敏捷开关提出软件货币化这一理念,就是方便营销人员可以自主的去给客户配置产品功能并一键导出报价单。

如下图中的右侧,可以了解客户所选购买项后的费用概述,并可以通过下图紫色按钮"生成报价表单"将该客户的购买细节清单打出。

权限管理

不同产品的参与者只允许操作相关产品的功能模块的配置。通过“权限管理-策略”功能,可以对不同产品的功能模块对应的Feature Flag或用户组进行权限设定。如"Ship"产品线的相关人员只可以控制"Ship"产品对应的 Feature flags,并且只有研发团队中的几个管理员拥有删除Feature flags 的权利。下图是一个为营销团队设置的通用权限,在图中右侧的第一个权限规则中,设置这个权限中的成员禁止"删除"和"修改"项目,禁止删除 Feature flag 和用户组。

请求审阅

即使我们拥有编辑 Feature flags 或用户组的权利,但还是有可能出现错误操作。可以将 Feature flags 和用户组的变更设置为"请求审阅"模式,即一个 Feature flag 或用户组的规则变更生效前,必须指定相关人员进行审批后才能通过。如下图所示,"请求审阅"提交以后,当某个成员想修改 Feature flag 时,则需要让相关负责人批准后才能生效。

总结

敏捷开关(featureflag.co)提供了一套功能管理方案,赋予企业全团队交付与管理产品的能力,让研发人员更专注于产品引擎的升级优化的同时,让产品和业务人员自主的、敏捷的把握产品方向、攻坚市场。

最后更新于 2022/07/20
未能解决您的问题?请联系
评价此篇文档
有帮助
没帮助

请留下具体问题或建议

能够解决我的问题
我还有其他想说的
本篇目录