神策数据从技术视角看什么才是值得拥有的测试
神策数据 稿
A/B 测试被更多人熟知的是持续观察并对照按一定规则分成的 A、B 两组测试样本, 基于数据反馈辅助优化决策,其背后复杂的数学理论和试验基础设施却往往被人忽视。
目前,国内一线互联网公司大多采用自研的方式建设 A/B 测试平台,而中小互联网企业和传统行业的企业则会选择自采的方式建设 A/B 测试平台。在面对标准不一的多种 A/B 测试平台时,企业该如何选择?参照 Google 重叠试验框架—— 更多、更好、更快地试验 ,并结合 神策 A/B 测试服务数十家客户的实践,我们从不同维度总结出评价 A/B 测试平台的标准:
- 功能:支持丰富的试验人群定向和指标管理配置,同时进行多个试验的可扩展性、灵活性
- 性能:A/B 测试的性能越高,对实际业务造成的延迟越小,对 C 端客户的体验越好
- 稳定:A/B 测试平台要保证足够高的 SLA,A/B 故障不应该影响正常业务运行
- 效率:降低试验的实施和分析成本,通过标准化的试验指标计算快速发现、终止不符合预期的试验
- 易用:降低试验的实施门槛,帮助没有 A/B 测试基础的小白快速上手、避免踩坑
基于上述评价标准,接下来我们将重点探讨神策 A/B 测试在提升功能、性能这两个维度的技术实践。
一、功能:基于数据体系与模型算法的成功演绎
A/B 测试平台功能维度的建设核心主要表现在两方面:试验人群定向和指标的支持依赖于 底层的数据体系建设;同时进行多个试验的可扩展性和灵活性取决于 试验模型和分流算法的设计方案。
1.数据体系
神策数据的 Event-User-Item(用户-事件-实体)数据模型 能够对用户行为数据标准化抽象,从而支持丰富的用户行为指标建设,为企业提供强大、便捷的分析能力。
A/B 测试构建于神策数据体系之上,基于神策数据根基平台和神策用户画像体系,神策系统支持的全部画像标签和分析指标可以更便捷地应用到 A/B 测试中;与此同时,A/B 测试产生的结果又会遵循神策标准数据模型回流到神策数据平台中,如下图所示:
采用上述架构,能够为神策 A/B 测试带来强大的 试验人群定向和指标分析 能力,所具备的独特优势如下:
(1)支持公有 SaaS 化部署和私有 PaaS 化部署两种方案, 满足多种场景的差异化需求,而用户核心数据则私有存储在客户环境中, 保障数据安全;
(2)既可以作为独立产品支持客户 A/B 测试的需求,也可以结合神策分析等明星产品为客户实现 数据分析感知、目标决策、线上测试验证、试验数据反馈 打通的 SDAF 闭环;
(3)结合神策分析,A/B 测试的数据回流到平台后,既能够 丰富用户行为分析指标种类 ,又能够提供用户人群圈定功能,进一步增强试验分析能力,不断形成正向反馈。
这里值得提一下,已经购买神策产品的客户,可以将现有产品与神策 A/B 测试无缝对接,再也不用为多产品打通而苦恼。
2.模型算法
要具备同时进行多个试验的可扩展性和灵活性,本质是要 解决 在有限的流量(比如仅能满足 2 个试验的样本量) 前提下同时进行多个试验无法保证隔离的矛盾。具体来说就是:流量在试验之间互斥可以保证隔离性,但多个试验同时运行所需要的流量规模最好同时满足;让流量同时经过多个试验,即正交,需要解决试验效果出现互相干扰的问题。而试验互斥和正交的背后则隐藏了一系列复杂的技术和业务问题。
(1)试验互斥
怎么保障试验有公平获取到流量的机会?比如存量试验消耗了全部流量导致新上线的试验无法分配到流量而出现“流量饥饿”。
怎么保障试验流量的分配使用是随机且公平的?比如某个试验消耗了全部男性用户的流量,导致其他互斥的试验流量全是女性用户。
对于一个新增流量规模为 X(X<100%)的试验,如何 保证该试验得到精确定义的流量规模?
(2)试验正交
同时经过两个试验之间的流量如何保证均匀打散,实现流量正交,从而保证 试验之间的影响是一致的 ,对试验效果评估不会出现相互干扰。
天然存在相互干扰的试验如何解决?比如同一个按钮,试验 1 设置背景为红色,试验 2 设置文字为红色,同时命中这两个试验的用户将会看到一个没有文字全是红色的按钮。
除此之外,我们还需要保证每个试验配置的灵活性,比如 差异化的人群定向和试验流量规模 等。
解决上述问题的根本方法是 构建一套逻辑严谨且扩展灵活的试验模型,加上能够实现严格正交的算法。以前人为鉴,筑后世基石,参照 Google 重叠试验框架,结合业界优秀的 A/B 测试平台建设经验,我们推演出如下试验模型:
在试验域、试验层和试验的模型上,我们支持精确的流量定义、严格的流量分配归属和差异化的人群定向功能;既支持独占域的试验场景规划,又支持对效果显著的试验进行全量发布;同时我们还保留了对如下复杂重叠试验模型的扩展支持,也将会面向部分存在循环嵌套重叠试验需求的客户开放该功能。
基于上述试验模型设计,我们可以 充分保证同时进行多个试验的可扩展性和灵活性,但仍有可能面临一个很关键的问题——在多个试验层重叠的场景下,如何保证试验之间的流量是均匀打散,严格正交的?这里我们对 hash 因子和 hash 算法进行了大量的调研和验证,最终得到了 严格正交的流量分配结 果,如下:
二、性能:基于链路拆分与治理降低 A/B 测试耗时
大多数客户在使用 A/B 测试平台之前都存在疑虑:A/B 测试的性能如何,会不会对 C 端客户的响应增加延迟?解答这个问题的关键是要先搞清楚一次 A/B 测试的过程:
如上图所示,1 次 A/B 测试请求的耗时主要包含 2 次公网传输耗时和 1 次分流服务处理耗时,而公网传输耗时是 App 使用过程中不可避免会存在的。所以降低 A/B 测试延迟的根本在于 降低分流服务的处理耗时和规避试验请求的公网传输耗时。
针对试验分流服务,我们进行了多方面的探索和尝试。
- 增加试验结果分布式缓存和持久化存储,降低存储查询/写入次数,提升存储读写效率
- 前置过滤试验人群定向条件,提升试验分流效率
- 整体服务和存储支持快速水平横向扩容,保证服务响应耗时保持在平稳状态
- 优化试验模型和抽象,简化分流业务流程
- 拆分强弱依赖处理逻辑,部分弱依赖操作异步化
基于上述实践,最终实现了整体分流服务单次平均处理耗时在 11-12m
- 原文作者:知识铺
- 原文链接:https://geek.zshipu.com/post/%E4%BA%92%E8%81%94%E7%BD%91/%E7%A5%9E%E7%AD%96%E6%95%B0%E6%8D%AE%E4%BB%8E%E6%8A%80%E6%9C%AF%E8%A7%86%E8%A7%92%E7%9C%8B%E4%BB%80%E4%B9%88%E6%89%8D%E6%98%AF%E5%80%BC%E5%BE%97%E6%8B%A5%E6%9C%89%E7%9A%84%E6%B5%8B%E8%AF%95/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com