微软 AB/Testing EXP 实验管理平台

Paper · May 2018 Theof a Large-Scale

因为工作负责和相关的事情,所以对系统理论与工程落地情况一直在调研,根据上面这篇论文,我们一起来学习下微软EXP系统的工程实现 。摘要及其相关工作啥的废话略过,先放一张架构图:
整个系统包含四部分:
1.:

微软 AB/Testing EXP 实验管理平台

文章插图
属于一个实验管理后台系统,为实验者与实验系统之间提供交互接口,实验者可以方便的在系统中创建,配置 , 运行并分析实验 。其中系统包含三个重要的组件:
1.
实验管理界面应具有以下功能:
2.
这个是的核心服务,为各个接入AB的服务分配实验变量 。每个变量V是一个参数集合,实验可以表示为E{V1, V2},如V1实验组,V2对照组 。group 会切分成多个变量 , 如下图:
微软 AB/Testing EXP 实验管理平台

文章插图
每个变量都会被关联上一个或多个 group , 比如存在两个实验E1{V1, V2}, E2{V3, V4},E1关联隔离组G1,G2 。同时E2的变量也关联G1,G2 。会发现两个实验变量所关联的隔离组是有交集的,那么这时候说明两个实验是会相互影响的,不能同时进行 。
列举了三种实验组参数配置下发方式:
总之都是从拿到实验组参数配置并缓存在本地 。
可以通过应用程序在启动时直接通过服务接口调用,去请求实验组参数配置,这样做到用户在内有一致的用户体验 。服务端和客户端均可采用这种方式Edge Node可以类比nginx,可以负载均衡服务,它和交互,对请求进行加强(填充改次请求 所对应的实验参数配置) 。这种方式不适合客户端实验, 因为客户端用户操作很多都是本地行为,没有发生网络交互第三种方式通过为AB实验打包一个专门的lib,客户端实验不需要将实验参数在各个组件传来传去,而是每次都从这个lib去拿就可以了 。lib负责和周期性交互
【微软 AB/Testing EXP 实验管理平台】还有个配置管理服务 去控制进行一个实验下不同的变量分配的开关,该开关配置应该放到lib里