糖豆A/B 测试实验平台

1. 初步

1.1 名词解释

  • 实验位: 实施AB测试的客户端位置,由客户端页面和模块组合而成,比如:首页--猜你喜欢。
  • 策略: 每个实验内部的实验方法,由具体业务生成控制,对应到具体一个业务功能。
  • 分桶:根据用户设备号取模,得到0~99。根据实验需求分配的流量比例成为分桶。
  • 实验owner: 发起AB测试实验负责人。
  • 模型:业务的算法模型。

1.2 功能需求

  • 保留原始用户,能够支持旧版本的无缝切换,将原有B版用户保留N%,作为原始对照组。
  • 全局流量划分,能够支持包括灰度测试、指定流量规模等功能。
  • 业务流量划分,能够支持不同实验内部流量指派、划分。
  • 实验状态变更,能够支持不同位置的并行实验的开始、结束。
  • 实验效果评估,能够支持不同实验效果的统计分析。

2.架构设计

糖豆A/B 测试实验平台_第1张图片
AB测试实验平台架构

3.实现

AB测试平台属于基础架构,为了保证整体服务性能,减少系统间调用。我们遵循了统一架构,分别实现的服务思想。通过对核心代码的多语言实现,以及数据底层统一,来保证系统的松耦合和可插拔性。

3.1 AB测试后台

允许不同用户管理、跟踪自己的实验运行情况以及其它可能相互影响的实验。参见下图糖豆的AB测试后台。

糖豆A/B 测试实验平台_第2张图片
image.png
糖豆A/B 测试实验平台_第3张图片
image.png
糖豆A/B 测试实验平台_第4张图片
image.png

3.2 系统调用流程

策略分配流量
全局流量控制,局部流量控制

3.3 数据表结构

  • 实验表
id source client_module offset config addtime
001001 首页 猜你喜欢 20 diu 2016-12-25 15:50:32
001002 首页 拍摄 1 random 2017-04-25 15:50:32
002001 搜索页 框搜 20 diu 2017-04-25 15:50:32
  • 策略表
id name position_id code class_name directory describe addtime
001 old 001001 old empty / 原始对照组 2016-12-25 15:50:32
002 noltr 001001 noltr NoLTRRecommender /noltr/ 无LTR算法组 2017-04-18 15:50:32
003 ltr 001001 ltr LTRRecommender /ltr/ LTR算法组 2017-04-25 15:50:32
  • 分桶表
id position_id strategy_id location_id platform flow sort addtime
001 001001 001 全国 app 90~100 1 2016-12-25 15:50:32
002 001001 002 全国 app 40~80 2 2017-04-25 15:50:32
003 001001 003 全国 app 0~40 3 2017-04-18 15:50:32

4. BI统计

  • 实验平台后台数据会同步到统计平台,作为字典表。
  • 客户端需要增加上报策略id,修改abtag上报内容。
  • BI平台基于以上两者构建实验主题的数据集市,提供数据分析和可视化。

参考文献:

  • Overlapping Experiment Infrastructure: More, Better, Faster Experimentation
    https://research.google.com/pubs/pub36500.html
  • It’s All A/Bout Testing: The Netflix Experimentation Platform
    https://medium.com/netflix-techblog/its-all-a-bout-testing-the-netflix-experimentation-platform-4e1ca458c15

你可能感兴趣的:(糖豆A/B 测试实验平台)