ab实验平台,ab实验平台实测价值?( 五 )


图3:AB测试可行的三种实现架构
根据上面图3,我们将AB测试架构分为3大方案,其中方案1在客户端整合AB测试能力,方案2在接口层整合AB测试能力,方案2又分为采用统一Router的形式和在web接口层整合AB测试两大类,方案3在后端业务层实现AB测试能力 。我们在下面分别对这些方式做更细致的讲解说明 。其中我们公司算法团队采用的AB测试方案就是方案3,在下一节我们会详细讲解 。
下面我们对图3各种AB测试方案进行拆解,更加细致的说明各个方案的架构实现 。
方案1:通过定制的AB Test SDK来处理AB测试业务该方案需要开发AB Test SDK,并将SDK整合到前端,通过AB Test SDK与AB测试服务(核心分组模块)交互来处理AB测试相关功能,采用该方案的公司有微博等 。具体架构见下面图4 。
具体AB测试服务与业务接口的交互实现方式可以是如下两种之一:
a AB测试服务下发两个不同的接口给AB测试SDK,当用户请求时,根据用户的分组,分别调用不同的接口 。
b AB测试服务下发同一个接口给AB测试SDK,但是不同的分组对应的参数不同,当用户请求时,根据用户所在的分组,选择不同的参数来访问该接口(该接口会根据不同的参数获取不同的数据) 。
图4:通过提供AB测试SDK来进行AB测试的实现方案
该方案的好处是通过统一的SDK来对接AB分组服务,前端业务代码简单调用SDK的方法就可以,开发效率高 。不好的点是,如果AB测试业务有调整,需要升级SDK,较麻烦(现在很多APP具备通过插件的方式做升级,这时对SDK的修改就不要发版本了,相对会更加灵活) 。同时,如果公司有iOS、Android、PC等多个业务的话,需要开发多套SDK,维护成本较大 。
方案2:在后端业务层增加相关组件来做AB测试该方案通过在后端接口层增加相关组件来处理AB测试需求,该组件通过与AB测试交互来做AB测试,采用该方式的公司有Google,百度,大众点评等 。其中又可以分为两类:
第一类:像Google,百度,AB两组对比测试业务分别部署在不同的服务器,通过构建一层统一的router来分发流量 。具体架构见下面图5 。通过后端统一Router模块来处理AB测试相关请求 。
具体AB测试服务与业务接口的交互实现方式跟方案1类似,这里不再说明 。
图5:通过后端统一Router来进行AB测试的实现方案
该方案的优点是模块化,router解决所有与AB测试相关问题,对AB测试业务做调整不需要前端版本升级,只需要升级后端服务即可 。但是Router层是整个AB测试的核心,需要具备高并发高可用的能力,否则出现问题会影响AB测试能力的发挥 。
第二类:像大众点评,将AB两组对比测试业务实现逻辑写在同一个业务接口,全部业务逻辑在业务服务器完成 。具体架构见下面图6 。通过构建AB lib(比如构建一个处理所有AB测试业务逻辑的jar包)模块来处理AB测试相关业务 。
当用户使用产品触发做AB测试的功能时,前端调用统一的接口,接口层通过AB lib跟AB测试服务交互获取该请求对应的分组,并从对应的数据存储中获取数据,组装成合适的格式返回给用户 。

ab实验平台,ab实验平台实测价值?

文章插图
图6:通过业务端整合AB测试lib来进行AB测试的实现方案
该方案当AB测试调整时也不需要前端做升级, 只需要修改AB lib包就可以了 。该方案最大的缺点是如果公司采用多种开发语言做业务接口服务,需要每种开发语言维护一套AB lib库,维护成本较高 。另外AB测试逻辑调整需要升级AB lib包时,需要对所有线上接口做升级,明显增加了风险 。同时,在接口服务中整合AB lib与AB测试服务交互,增加了接口服务的复杂度,如果AB测试服务有问题,可能会影响接口功能或者性能 。