一、定义
- 为了一个优化目标,指定N个方案
- 判断哪个更好
- 计算收益,通过数据作为决策的依据
本质上是把流量分为N组, 每个组添加不同的策略, 然后根据这N组的数据指标,最终选择一个最好的组上线,实现精细化运营/产品迭代
二、步骤
2.1 确认优化目标
- 可量化的、具体的、可实施的
2.2 分析现有数据,找问题
2.3 优化方案头脑风暴
2.4 优先级排序
2.5 实施ABTest
2.5.1 流量分配
策略配置, 通过分层分流充分利用流量和进行复杂的交叉实验–域(互斥),层(正交)
- 服务端通过不同的版本,或者基于策略走不同的代码分支
- 客户端保有两份代码,通过下发的策略配置, 走不同的代码分支
2.5.2 实验效果
- 数据指标收集,如何衡量。 实时/T+1生成数据报表; T校验进行数据分析
- N组各自的覆盖量,测试时间
2.5.3 实验结束–继续迭代
三、实现
3.1 自研
三个模块:实验配置管理模块、分流以及埋点上报模块和在线分析模块
- 数据的统计和数据的分析? 需要数据平台和数据分析的支持
- 短期内是否有全链路A\BTest场景。 istio自带单点的A\BTest
- 主要是面向客户端还是服务端?
- 单层方案足够么? 基于用户id做hash分组,比如划分为100份,若A方案需要10%的流量,则hash值为[1,10]分流到A方案。 做简单的验证,不适合做长期的交叉实验