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

Conference Paper · May 2018 The Anatomy of a Large-Scale Online
Experimentation Platform
nginx

由于工做负责和ABTest相关的事情,因此对ABTest系统理论与工程落地状况一直在调研,根据上面这篇论文,咱们一块儿来学习下微软EXP系统的工程实现。摘要及其相关工做啥的废话略过,先放一张架构图:
aa43f1ce23a346c580b92eaa4f518dce.pngweb

整个系统包含四部分:算法

1. experiment portal

portal属于一个实验管理后台系统,为实验者与实验系统之间提供交互接口,实验者能够方便的在系统中建立,配置,运行并分析实验。其中系统包含三个重要的组件:后端

1. experiment management

实验管理界面应具备如下功能:浏览器

  • 选择实验地域群体(US CN等)
  • targeting or traffic filters(浏览器,操做系统,应用版本以及更复杂的实验条件,好比刚满一个月的新用户等)
  • Overall Evaluation Criteria (OEC) 综合评价标准,实验者要选择好评估指标,能够内置一些经常使用的CTR,PV,UV等产品优化指标
  • 配置实验组和对照组流量,以及实验的开始和结束时间
  • 支持re-randomization :使用历史数据批量作AA实验,通常经过AA实验选择最合适的hash算法,目的是为了让样本尽量均匀,而后才能作AB实验,为了提升销量,巧妙的使用历史数据作AA,这个过程叫作SeedFinder
  • 实验管理界面 对不一样产品提供不一样的实验配置模版
  • isolation group 是一个变量集合,每一个变量都会被打上所属的isolation group,实验里的全部变量共享一样的isolation group,若是两个变量所属的isolation group有交集,那么说明这两个变量会是相互影响的,对于这两个变量,在作实验的时候应该是互斥的
  • 后端管理系统可以控制变量所对应的线上业务行为。对于server端实验,代码能够随时从新发布上线,对于client端实验,好比app发版都是周期性的,因此须要可以在管理系统配置feature的开关
  • 后端管理系统还可让用户自定义metric,微软开发了Metric Definition Language (MDL),去构造metric,如ctr等,底层会从新翻译成SQL等其它语言。对于各类metric:产品效果指标,实验的置信度,实验是否分流均匀

2.experiment execution service

这个是ABTest的核心服务,为各个接入AB的服务分配实验变量。每一个变量V是一个参数集合,实验能够表示为E{V1, V2}, 如V1实验组,V2对照组。isolation group 会切分红多个变量,以下图:
427dc6d2239e4f94a6b9366ebf18a9a9.png缓存

每一个变量都会被关联上一个或多个isolation group,好比存在两个实验E1{V1, V2}, E2{V3, V4},E1关联隔离组G1,G2。同时E2的变量也关联G1,G2。 会发现两个实验变量所关联的隔离组是有交集的,那么这时候说明两个实验是会相互影响的,不能同时进行。网络

列举了三种实验组参数配置下发方式:
0904c19bc25b4f16bb34749b075f0e49.png
总之都是从experiment execution service拿到实验组参数配置并缓存在本地。session

  1. 能够经过应用程序在启动时直接经过服务接口调用,去请求实验组参数配置,这样作到用户在session内有一致的用户体验。服务端和客户端都可采用这种方式
  2. Edge Node能够类比nginx,能够负载均衡服务, 它和experiment execution service交互,对请求进行增强(填充改次请求 所对应的实验参数配置)。这种方式不适合客户端实验, 由于客户端用户操做不少都是本地行为,没有发生网络交互
  3. 第三种方式经过为AB实验打包一个专门的lib, 客户端实验不须要将实验参数在各个组件传来传去,而是每次都从这个lib去拿就能够了。lib负责和experiment execution service周期性交互

还有个配置管理服务 去控制experiment execution service 进行一个实验下不一样的变量分配的开关, 该开关配置应该放到lib里架构

相关文章
相关标签/搜索