ABTest系统调研

Posted by jabin on July 20, 2021

一、定义

  1. 为了一个优化目标,指定N个方案
  2. 判断哪个更好
  3. 计算收益,通过数据作为决策的依据

本质上是把流量分为N组, 每个组添加不同的策略, 然后根据这N组的数据指标,最终选择一个最好的组上线,实现精细化运营/产品迭代

二、步骤

2.1 确认优化目标

  1. 可量化的、具体的、可实施的

2.2 分析现有数据,找问题

2.3 优化方案头脑风暴

2.4 优先级排序

2.5 实施ABTest

2.5.1 流量分配

策略配置, 通过分层分流充分利用流量和进行复杂的交叉实验–域(互斥),层(正交)

  1. 服务端通过不同的版本,或者基于策略走不同的代码分支
  2. 客户端保有两份代码,通过下发的策略配置, 走不同的代码分支

2.5.2 实验效果

  1. 数据指标收集,如何衡量。 实时/T+1生成数据报表; T校验进行数据分析
  2. N组各自的覆盖量,测试时间

2.5.3 实验结束–继续迭代

三、实现

3.1 自研

三个模块:实验配置管理模块、分流以及埋点上报模块和在线分析模块

  1. 数据的统计和数据的分析? 需要数据平台和数据分析的支持
  2. 短期内是否有全链路A\BTest场景。 istio自带单点的A\BTest
  3. 主要是面向客户端还是服务端?
  4. 单层方案足够么? 基于用户id做hash分组,比如划分为100份,若A方案需要10%的流量,则hash值为[1,10]分流到A方案。 做简单的验证,不适合做长期的交叉实验

3.2 接入第三方平台

四、Refer