帮助中心
规避三方工具带给产品的潜在风险

风险与需求

我们通常会引入三方平台工具或插件,帮助自身产品提供更好的客户体验,比如数据分析工具、用户引导、客户成功工具等。为此,通常需要把三方工具 SDK 集成到项目中,但这类 SDK 会对网站应用做 DOM 操作,存在使产品无法正常运行的风险,如:

  1. 某些用户的浏览器环境下,三方 SDK 使产品不能正常运行

  2. 三方平台进行了错误的更新,导致产品部分功能瘫痪

  3. 海外的三方插件,网络不稳定或有法律风险

一旦发生风险可能会造成不可避免的经济损失。

解决方案

通过敏捷开关featureflag.co)提供的 Feature flag 在生产环境渐进式发布与回滚三方工具的功能特性。如下图所示,当 Feature flag 返回值为 true 时,则执行三方工具初始化代码,否则不执行(假设三方工具不被初始化,就不会被执行)。

暂时无法在飞书文档外展示此内容

代码集成

如下为码示例。在第二行代码中,使用敏捷开关的 SDK 获取 Feature flag "三方插件工具"的返回值,如果为 true,则初始化三方工具,否则什么都不做。


if (ffcService.flags['三方插件工具'] === true) {
    thirdTool.init('{key}',  { id: auth.id });
}

渐进式发布

为了避免风险,我们采用如下的发布机制:

  • 第一步,上线后不对任何用户开放

  • 第二步,在生产环境对内测团队开放

  • 第三步,发布给10%的公众用户

  • 第四步,发布给30%的公众用户

  • 第五步,发布给100%的公众用户

第一步,在集成了三方插件工具的新版产品上线时,在敏捷开关后台设置 Feature flag "三方插件工具"返回值为 false,使产品不对任何用户开放。

第二步,在 Feature flag 的"自定义规则"中引入内部测试团队,即三方工具只对内测人员开放。如下图所示,在"目标用户"和"自定义规则"区域,分别设置 Feature flag 对内测成员返回 true :

  1. 在"目标用户"模块的 true 返回值下添加会参与内测的目标用户。

  2. 在"自定义规则"模块中,建立一个对“开发组”和“内测团队”用户组返回 true 的规则。

第三步,如果在内测过程中出现问题,则可以反馈给第三方团队等他们的 BUG 修复。如果三方工具在内测环节表现良好,则可以开始向公众用户进行渐进式发布。如下图所示,将默认返回值按百分比设置,给 10% 的用户返回 true, 90% 的用户返回 false。

如果有 BUG 出现则可以将返回值设置为 100% false,0% true 的方式实现秒级回滚。如果可以精准的知道是哪些用户有BUG,则可以通过"自定义规则"针对具体用户进行回滚。

第四步,如果第三步没有任何异常,则可以扩大用户的发布百分比,将默认返回值百分比设置为 30% 的用户返回 true, 70% 的用户返回 false。如果出现 BUG,可以按照第三步所描述的方式进行回滚。

第五步,如果第四步没有任何异常,则可以扩大用户的发布百分比,将默认返回值百分比设置为 100% 的用户返回 true, 0% 的用户返回 false。如果出现 BUG,可以按照第三步所描述的方式进行回滚。

总结

通过使用 Feature flag 控制三方工具,大幅度降低了其发布上线的风险。即使在未来的使用中因为三方工具的更新产生了BUG,我们也可以通过敏捷开关的后台快速的回滚下线三方工具,保障产品的整体稳定性,降低风险。

同样,这种操作可以适用于大多数新功能发布、功能更新的场景。

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

请留下具体问题或建议

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