A/B测试、灰度发布是精益产品增长最常见的实践,除了掌握方法,一个高效的工具也是开展实验的基础,译文即为Pinterest A/B测试平台搭建的整体概述,让你对这样一个平台的构建会有大体的认识。如果你是非技术人员也可移至文末,看滴滴出行在数据驱动平台搭建以及A/B测试、灰度发布方面的真实案例。
以下为译文,有编辑:
作为一个数据驱动的公司,我们总是会基于实验去指导产品设计和功能开发,在过去一段时间,我们跑了大概有1000个实验,并且每天都在增加,不断增长的实验量以及产生的海量数据,驱使我们需要有一个稳定的、精准的、简单易用的平台来支撑增长团队的使用需求,为了排除实验过程中的一些共性问题,我们开发了一个操作更加轻量、支持跨平台协同以及一些精简的API接口来满足A/B测试过程中可能要面对的复杂问题。
在搭建这样一个平台的时候我们优先考虑了以下需求:
- 配置实时:我快速响应实验需求,能够随时关闭或启动实验,而不需要在代码层面做更改,特别是需要修复网站的事件
- 操作轻量:实验设置要像启用一个功能那样简单,当然,也要能规避一些预先能想到的错误操作
- 学习成本低:使用者不需要因为平台的不同而学习新的实验方法论
- 易于分析:为了能够更好的辅助决策,我们构建了一个新的并且易用的分析看板
- 扩展性强:我们需要这样一套系统能支持线上和线下实验数据的处理
一、流程优化
Pinterest的实验都遵循一套通用的方法论:
- 提出假设。并且针对假设提出一些验证的猜想;
- 筛选实验用户群。创建用户组、禁用组、通过过滤器修改组;
- 分发变量给实验用户,并记录实验结果。
在我们以前的框架下,这些变量的配置都是通过修改代码的方式,然而,我们希望把这些变量的控制能够在前端界面组织起来,在可配置的框架下,独立于代码做些变量控制。

实验过程中有些共性的问题,比如语法错误、不均匀的用户分组、组用户重叠或者实验流程不规范,我们也主动地在输入框预设了一些查询字段,尽可能的减少了手动输入造成的错误,如图2,跑一个实验通常就是几个点击这样简单。

为了让任何人能够实时地、便捷地进行实验配置,我们在内部的系统中以串行队列的方式存储了所有的实验设置,并且在几秒内同步至我们每个实验系统的主机上,一个典型的配置文件有如下几个内容:
{“holiday_special”:{“group_ranges”: {
“enabled”: {“percent”: 5.0, “ranges”: [0, 49]},
“hold_out”: {“percent”: 5.0, “ranges”: [50, 99]}
},
“key”: “holiday_special”,
“global filter”: user_country(‘US’),
“overwrite_filter”: {“enabled”: is_employee()},
“unauth_exp”: 0,
“version”: 1
}
}
配置和代码分离**的好处是提升了我们的实验效率,这意味着变量的控制效率高了,比如实验组需要增加流量不需要在代码层面做调整,极大的释放了实验的部署时间,加快了迭代速度特别是原先有紧急需求的时候。
闽ICP备13000641号-4