ABTest系统演进与实验监控
如果无法正常显示,请先停止浏览器的去广告插件。
1. ABTest系统演进与
实验监控
邹通 | 技术中心/技术运营中心/算法组
2. 2020年三月加入去哪儿网,主要负责AB系统、营
销召回、ID-Mapping相关的研发工作,致力于公
司的公共设施建设,具有丰富的AB系统开发和实
验问题定位的经验。
邹通
3. 目 录
CONTENTS
A AB实验概述
B AB系统及其演进
C 实验监控机制
D 未来规划
4. 01
AB实验概述
• 什么是AB实验
• 如何做好一个AB实验
5. Part2 如何做好一个AB实验
Part1 什么是AB实验
互联网行业普遍使用到的,评估不同版本的某一产品在相同时间维度下,对组成成分相同的目标人群产生
的业务效果差异的方法
Case1:服务包特产赠品优化
业务流程
改变UI样式
服务包名-产品大类 + 点击兑换
商品名称 + 免费领取
6. Part1 什么是AB实验
Part2 如何做好一个AB实验
评估不同版本的某一产品在相同时间维度下
暑假疫情好转
实验组:
对照组:
疫情期间
具有周期性的业务,实验组与对照组需要在相同时间维度下进行实验和比较。
7. Part1 什么是AB实验
Part2 如何做好一个AB实验
对组成成分相同的目标人群产生的业务效果差异
Case2:营销策略触达用户
组间UV量级差异
用户特征的差异
长期营销
但相同用户
不重复营销
(单次触达)
(多次触达:先分组,再过滤已触达用户)
(多次触达:先过滤已触达用户,再分组)
(多次触达:先过滤全量参与用户,再分组)
关注实验的细节!实验流程设计会直接决定了实验是否合理、评估是否有效
8. Part1 什么是AB实验
01
理论知识
• 实验基础(H0假设、H1假设、两类错误、置信区间、统计功效...)
如何设计合理的评估方案 • 实验设计(初始和新奇效应、周期与规模效应、选择性与幸存者偏差...)
• 假设检验(配对T检验、独立T检验、Z检验、卡方检验...)
了解业务
业务流程及相关的AB配置(WIKI):
实验在哪个页面做 • 机票、酒店业务流程主要指标与计算口径
实验从哪个业务流程开始 • 实验流程管理(从申请到下线、各个阶段对应的参与方)
• 实验配置项介绍、业务用途(修改配置时应该周知谁)
实验的业务指标口径
03
一些AB的热知识(WIKI):
如何设计实验方案
如何科学地完成假设检验
02
Part2 如何做好一个AB实验
了解系统 详见下文:
数据在AB系统中如何运转 • AB分流原理、系统基本架构、QunarAB系统演进
• 常见问题总结、异常监控与检测、流程质检机制
AB日志是从哪里获取的
AB系统如何监管每个实验
9. 02
AB系统及其演进
• AB分流原理
• 系统演进与迁移
• AB系统基本框架
10. Part1 AB分流原理
Part2 AB系统基本框架
Part3 系统演进与迁移
怎么确定一个用户是分到A还是B
什么叫“一个用户”
用户ID?自然人?
userId
username
188nS6e6420 userId_1 username_1
152B3m77205 userId_2 username_2
一个自然人有两个手机号
CA692245-****-****-****-08251BB4E8F6
7673********0e9c
app_uid
一人有多个设备/多人共用一个设备
app_gid
第一次安装:6A1D7F29-2B79-1316-******
卸载后重装:1A98C535-445A-78BB-******
unionId
openId
多次卸载重装: ... ...
反复卸载、重新下载、安装
用户ID ≠ 自然人,只是近似地将用户ID看作一个自然人,此外userId或者username会相对严格一些。
11. Part1 AB分流原理
Part2 AB系统基本框架
Part3 系统演进与迁移
怎么确定一个“用户ID”是分到A还是B
将实验中的用户ID划分为四等分(1:1:1:1)
更灵活?
3:3:3:1,模10?
7:7:3:3,模20?
43:43:7:7,模100?
... ...
eg. 用户名为“rhzgtsy8750”
a) Hash(rhzgtsy8750)=27447080
7
用户(rhzgtsy8750) 分到了D
组
b) 274470807 % 4 = 3
业界普遍的做法: Hash值 % 1000
3:3:3:1,模1000 300:300:300:100
7:7:3:3,模1000 350:350:150:150
43:43:7:7,模1000 430:430:70:70
扩展性?为了保证实验互不干扰,在同时进行多个实验时,希望某个自然人在所有实验都是随机分组的。当分组结果只
与用户ID有关时,可同时在线的实验个数=支持的用户ID类型数。
12. Part3 系统演进与迁移
Part2 AB系统基本框架
Part1 AB分流原理
如何支持几百个实验同时进行
实验域:把所有用户划分开,域间用户不交叉(具体划分由业务系统完成);
实验层:每个实验对应了单独的层,层间用户相互正交(若AB系统使用统一域,每一层包含全量用户);
理论上,实验域中可包含多个实验层,实验层中也可包含多个实验域。
重新设计
分流Key
分流表达式:
MurmurHash(用户ID, 实验层) % 1000 = mod
注意:用户ID不可等同于一个自然人用户
[0,299) A
[300,599] B
[600,799) C
[800,999) D
• 若哈希算法不变、分桶数量不变(公司内默认不变),
则分流结果仅与用户ID和实验层有关;
• 若请求分流的实验不变,当且仅当用户ID不同时,才
会获得不同的分流结果。
13. Part1 AB分流原理
Part2 AB系统基本框架
Part3 系统演进与迁移
ETL、宽口径、窄口径...
分流
实验层信息
实验分组信息
定时缓存至查询服务本地
14. Part1 AB分流原理
Part2 AB系统基本框架
AB系统基本框架
Part3 系统演进与迁移
Dubbo方案:机票ABT
实现一
功能丰富(业务功能配置、后评估)
整体迁移
通用ABT
实现二
SDK方案:公共ABT
指标
性能优(稳定性、分流效率、资源运维)
Dubbo方案
SDK方案
易用性 统一的服务和管理、接入简单 单独嵌入SDK、自主配置日志收集
功能性 贴合业务特点、统一评估标准 无业务相关功能、各业务线独立评估
分流效率 高QPS下有性能的压力(3~30ms) 本地执行分流,耗时短且稳定(<1ms)
机器成本 耗费大量机器资源进行分流 使用少量机器资源提供配置查询服务
逻辑排查 内部逻辑对外不可见 调用方可Debug分流内部逻辑
支持不同业务的元信息配置、提供统一的评估检验标准
15. Part1 AB分流原理
Part3 系统演进与迁移
Part2 AB系统基本框架
机票ABT向通用ABT迁移
机票ABT的情况:
•
分流逻辑改造
实验迁移
线上仍存在几十个机票实验、实验涉及多个业务系统
主要问题:
• 各个业务系统独立实现迁移,耗费的人力成本过高
• 线上同时存在两套实验配置平台,不利于实验管理
如何让迁移更平滑? ---重构Dubbo服务,提供代理适配层
1、机票Dubbo分流中嵌入SDK
2、限制机票AB平台对外提供服务
Dubbo服务作为业务系统与通用AB平台的适配层,机票AB平台拟下线
(业务系统前期无感知,业务参数与SDK的适配问题由AB团队解决)
3、业务系统排期嵌入SDK
4、所有业务系统完成嵌入
老机票实验自然到期或主动下线后,再下线Dubbo分流逻辑
(保证过渡期间正常业务不受影响)
16. 03
实验监控机制
• 实验常见问题
• 流程管理机制
• 异常监控与检测
17. Part1 实验常见问题
Part2 异常监控与检测
常见问题发生在哪?
Part3 流程管理机制
哪些问题能提前避免、提早发现,哪些问题必须提前避免?
2021下半年问题汇总(100+ case):
定义问题级别,依据问题产生的原因进行分类
实验流程如何设计
缺少流量
无法正常分组
全返回DEFAULT
实验配置有疑问
无数据
白名单与业务逻辑不符
数据不准确
系统获取不到实验配置
AA检验不通过
SDK或接口的使用问题
目标:提前避免、提早发现
将问题类型映射到AB业务流程中
级别 类别 占比 Case 处理方式
P2 咨询类 28.7% 流程设计、配置有疑问... 完善WIKI
P2 评估类 7.4% 口径有误、AA检验不通过... 后期排查
P1 日志类 33.3% 实验缺少流量、无数据、数 提前避免+
据不准确... 提早发现
P1 调用类 27.8% 分流ID类型与配置不符、多 提前避免+
类型分流ID同时调用... 提早发现
故障级 下线类 2.8% 无法正常分组 提前避免
一些监控与检测手段:
下线类 调用类 日志类
(实验到期/下线) (分流ID类型异常) (日志未收集 / ETL任务失败)
(多种分流ID调用)
异常监控
异常提醒
异常检测
18. Part1 实验常见问题
Part2 异常监控与检测
Part3 流程管理机制
异常监控
异常提醒
19. Part1 实验常见问题
自动异常检测流程:
Part2 异常监控与检测
Part3 流程管理机制
20. Part1 实验常见问题
Part2 异常监控与检测
Part3 流程管理机制
在整个实验周期里如何对流程进行管理(需要关注哪些点)?
实验配置阶段
实验评估/结束阶段
实验进行阶段
实验设计wiki、
假设检验问题
数据评估口径
及时向AB反馈
关注异常提醒
关注到期邮件/QT
业务信息确认
做好白名单测试
口径问题及时
向数仓反馈
关注实验质量,遇到异常尽早解决,避免产生一些无法修复的问题
及时下线代码
21. 04
未来计划
22. 未来计划
生命周期运营体系
自动化质量运营监控报告
实验结论沉淀
历史实验评估数据/结论归档
评估/检验算法优化
Z检验、卡方检验、DID评估
用户分群与因果分析
不同画像标签下的实验因果分析
23. Q&A
24. 分享完毕,谢谢观看!