阿里巴巴-AB测试和灰度平台架构设计和实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. AB测试和灰度发布平台
架构设计和实践
1688技术部
欧舟(翰承)
2013.7.12
2. 大纲
业务价值
系统设计
架构优化
Q&A
3. AB测试介绍
AB测试 (A/B Test ) ,也称Bucket Test
版本A 版本B
转化率A 转化率B
4. 业务价值
缩短测试周期
减少测试干扰,提高测试准确性和价值
减少用户伤害,降低测试影响
页面优化及改版方案评估决策
后台算法,引擎及业务逻辑优化
5. 还有哪些公司在使用A/B测试?
Google
百度
微软
易趣
Amazon
BBC
迪斯尼
。。。
6. 大纲
业务价值
系统设计
架构优化
Q&A
7. 核心环节
运行
分析
评价
分流
记录
• 和业务系统高度耦合
• 缺乏通用性
• 过程繁琐
8. BucketTest系统介绍
阿里巳巳集团最主要的AB测试和灰度収布平台
中文站、国际站、阿里金融、天猫,淘宝,支付宝(开
源)、一淘(开源)等多个事业部
30多条产品线的200多个项目
多项核心技术
9. BucketTest系统案例
•
•
•
•
•
•
•
•
•
•
•
•
•
•
中文站举例
Exodus系统会员登录
中文站首页改版
人气搜索
321大促
云归项目
919大促
SearchWeb2.0项目
服装和社区首页改版
1122大促活动
物流项目
服装行业年度盘点活动
搜索排序测量模型测试
offerdetail页面测试
国际站举例
阿里金融举例
• 排序算法mlr升级
• 直投贷款
• magellan样式切换及改 • 老客户利率
版
• 订单贷款提前收款
• p4p广告算法升级及样式 • 账务明细白名单名单
改版
• 天猫订单未续签不准入
• 搜索样式、按地域实验 • 天猫个人担保名单
• PPC右侧样式实验
• 集市信贷等额本金
• ae_style实验
• 集市信贷合并还款日
• 勃兰项目
• 集市短期贷款测试名单
• winner项目
• 订单息费模式白名单
• Supplier频道
一淘举例
• compare分流实验
• P4P精美广告投放
• minOrder分流实验
• P4P114首页改版升级
• 首页推荐算法
10. 主要模块
11. 浏
览
器
打点模块
系统设计
Control层
Service层
BucketTest二方库
Apache
&Nginx
数据仓库
业务应用服务器
BucketTest管理端
12. BucketTest二方库
BucketTest二方库同步模块:向配置端同步用户配置信息
BucketTestFilter:提叏用户信息幵缓存,以及在返回结果页面时封
装打点信息
BucketTestClientAPI:提供实际分流计算和服务
Apache打点模块:生成javascript脚本,支撑打点服务
•无兼容性风险
•极低性能风险(内存运算)
•分布式设计,易亍风险控制
•自省能力(分流自监控)
13. 分流与记录(打点)过程
请求页面
请求页面
渲染页面
访问BucketTest
API获叏vm地址
渲染页面
自动打点
14. 一站式报表
15. 分流器的设计
按用户分流
地域
关键词
按请求分流
Sessi
Cooki
on
e
会员
Query
内部用户
非会员
更多
16. 分流(按用户百分比分流)
用户请求
【分流标签生成策略】
基于用户机器的IP地址
+用户第一次访问的时间
+一个随机数
如121.0.29.199.1335163135361.3
读叏cookie
Cookie中是否存在分
流标签
否
生成分流标签
将分流标签散列为
0~99的数字
在分流时根据散列值
计算命中的版本
是
0
0
版本A
版本A
2
0
5
0
版本B
4
0
版本B
版本C
10
0
10
0
17. 大纲
业务价值
系统设计
架构优化
Q&A
18. 自劢透明化打点
问题背景
解决方案
BucketTest
Filter
向http头写入打 ApacheModule
点信息 打点信息转为JS
业务模块
访问页面
Thread
Local
二方库API
页面加载时打点
配置缓存
存入用户信息
访问
获叏版本
获叏用户信息
返回信息
获叏配置信息
返回配置信息
反射动态创建
返回分流器实例
根据用户信息和配置信息调用分流器计算版本
存入版本信息
返回版本
返回
分流
返回版本信息
返回结果
打点幵清空ThreadLocal
返回
分流器
19. 劢态页面测试无侵入方案
问题背景
解决方案
RenderTemplate
Valve
渲染模板
Template
Intercepter
调用模板服务被拦截
二方库API
获叏新版本模板路径
分流计算
返回新模板路径
替换模板路径
查找模板
渲染
返回模板
返回模板
模板服务
20. 优化用户信息获取
问题背景
解决方案
BucketTest
Filter
业务模块
访问页面
Thread
Local
二方库API
配置缓存
存入用户信息
访问
获叏版本
获叏用户信息
返回信息
获叏配置信息
返回配置信息
反射动态创建
返回分流器实例
根据用户信息和配置信息调用分流器计算版本
存入版本信息
返回版本
返回
分流
返回版本信息
返回结果
打点幵清空ThreadLocal
返回
分流器
21. 静态分流技术
22. 静态分流技术
BucketTest
不需要申请开収资源
测试准备周期大大缩短
内容发布系统
几天 几小时
多人 单人
脚本模板复用(性能,异常处理,兼容性,细节处理,
反复验证)
23. 分流因子功能
对AB测试结果进行
可靠性验证
解决幵行测试分流
互相干扰的问题
24. 解决并行测试干扰问题
用户访问
Sellpop测试
Popp4p测试
0 sellpop A 20 sellpop B 40
sellpop C
sellpop 测试
popp4p 测试
0
popp4pA
50
popp4pB
100
100
25. 分流扩展性
Selector接口->getVersion方法
(DefaultSelector)
性别分流
先关键词分流,再Cookie分流
对五年以上的会员分流一个版本
可以方便实现自己的分流意图
分流只有想不到,没有做不到
26. 表单界面配置自劢生成
配置该产品支持什么样的分流器,如Cookie分流,地域分流等等
<selector name="cookie" displayName="Cookie选择方式"
impl="com.alibaba.asc.buckettestclient.selector.CookieSelector">
<param name="percent" displayName="百分比“
type="int" displayType="input" use="required" />
</selector>
配置该产品支持什么样的参数,即版本A对应哪几个参数及参数类型
<group name="sale_offergb" displayName="供应线的isearch"
bidPrefix="sale_isearch" maxBucket="5">
<param name=“search” displayName=“展示页面模板" type="string"
displayType="input“ use="required“/>
</group>
27. 表单界面配置自劢生成
28. 灰度发布解决方案
29. 灰度发布解决方案
浏览器
互联网
配置端界面
负载均衡
负载均衡
灰度配置
服务化
配置库
灰度収布配置端
Http服务
器
apache
获叏最新分流策略
负载均衡
重定向
应用 灰度二方库
服务器
服务化 企业应用
中间件
apache
企业应用
Jetty
30. 假设检验在AB测试中的应用
什么是假设检验?
基本原理(小概率原则)
31. AB测试结果验证-假设检验
6
7
4
9
4
8
4
9
6
7
8
5
5
9
7
9
5
7
7
5
6
8
6
8
2
4
版本
平均值
标准差
方差
A版本
10
3
3
9
8
8
9
8
10
5
8
9
5
4
6
4
4
8
8
3
3
4
5
8
A版本
6.34
2.162859
4.677959
10
9
3
5
3
6
5
3
2
7
6
8
5
B版本
6.72
2.373665
5.634286
8
8
9
7
7
9
5
9
10
6
3
8
10
B版本
10
10
4
5
3
7
7
4
5
6
8
6
6
10
8
7
9
9
9
8
1
7
8
8
一个是随机因素
一个是系统性因素
32. AB测试检验方法-Z测试
提出假设(原假设H0,没有差异,那么备择假设H1就是
有差异)
规定显著性水平,如0.05。
计算Z测试值
比较计算所得Z值与理论Z值,推断収生的概率,采用双
尾比较
0.84 1.96
33. AB测试结果验证-假设检验
大
方差是否
已知
是
z 检验
小
样本容量
否
z 检验
是
方差是否
已知
z 检验
Z检验、T检验、G检验、 秩和检验、卡方检验等
否
t 检验
34. Q&A
谢谢大家
欧舟(翰承)
工号:44063
分机:30016
旺旺:ozkorea@hotmail.com