推ter A/B测试技术概览
A/B测试在推ter的整个产品流程中是着非常核心的一个环节,推ter通过它来验证新功能是否有效。前段时间,推ter发布了 博客 介绍了他们是如何实施A/B测试的。日前,他们又 介绍 了A/B测试背后的系统。
概览
推ter从2010年开始使用他们的A/B测试工具DDG(Duck Duck Goose ),它已经成为聚合数据、记录用户行为、分析指标的系统性平台。
下图为A/B测试工具概要数据流。
A/B测试的基本流程
通常来说,A/B测试需要事先设置一些参数和度量值。通过DDG,测试人员可以直接通过网页设置A/B测试的细节:
- 实验范围,比如限定语言、国家、操作系统等参数;
- 实验对照组,确定测试修改点和当前产品的区别;
- 实验指标,设置需要追踪的指标,DDG默认会采集一些基础数据,其他指标可以自定义,或者从库中选取;
通过上述设置,DDG会提供给实验人员一些代码,作为“需求开关”。然后,系统会开始记录实验过程中需要度量的数据。
指标定义
DDG提供三种指标类型:
- 内置指标,大部分由实验团队定义和维护(例如登录次数、发推次数等),在实验中这些指标值会被自动追踪;
- 实验者定义和配置的指标,实验者可以通过轻量级的领域专用语言(Domain Specific Language,DSL)定义需要记录的事件,DDG的管道会为实验者计算这些指标;
- 导入的指标,这些指标完全由推ter工程师创建,实验者可以创建自定义聚合方法,度量自定义内容;
这些可以被聚合到“指标组”中,以方便实验人员选择。同时,每个指标组都由创建人维护,所有修改记录都会被记录。
数据处理管道
指标数据收集,都会通过管道进行运算。聚合数据也是整个系统中最大的挑战。一个指标源数据每天可能会产生非常大数量级的数据。
实验平台使用Hadoop的Map-Reduce任务来解决运算的性能问题。为了尽可能提高性能,推ter团队还和Hadoop团队共同合作,做了大量调优。
另外有一些轻量级的流处理任务,会通过 TSAR 在推ter的 Heron平台 进行实时计算。
上图中的Scalding管道,可以被认为有三个不同的阶段。
首先,将原始数据聚合成每个用户、每个小时的基础数据集。这些数据会被作为下一阶段的输入数据,同时也会被用作计算其他数据。
然后,第一阶段生成的数据会加入A/B测试的表达式,并在实验过程中计算每个指标、每个用户的聚合数据。第二阶段的结果可以被用于深入挖掘结果。
最后,第三阶段会汇总所有实验数据。这些实验数据会被加载到 Manhattan 中,产品团队可以在内部看板中进行浏览。
总结
支撑推ter A/B测试平台的技术设施非常广泛,究其原因主要是因为庞大的数据量。平台需要对大量数据加以处理,以进行分析和实验。通过管道的设计,也使得平台可以对多粒度数据进行不同类型的分析。