A/B测试在Twitter的整个产品流程中是着非常核心的一个环节,Twitter通过它来验证新功能是否有效。前段时间,Twitter发布了 博客 介绍了他们是如何实施A/B测试的。日前,他们又 介绍 了A/B测试背后的系统。
Twitter从2010年开始使用他们的A/B测试工具DDG(Duck Duck Goose ),它已经成为聚合数据、记录用户行为、分析指标的系统性平台。
下图为A/B测试工具概要数据流。
通常来说,A/B测试需要事先设置一些参数和度量值。通过DDG,测试人员可以直接通过网页设置A/B测试的细节:
通过上述设置,DDG会提供给实验人员一些代码,作为“需求开关”。然后,系统会开始记录实验过程中需要度量的数据。
DDG提供三种指标类型:
这些可以被聚合到“指标组”中,以方便实验人员选择。同时,每个指标组都由创建人维护,所有修改记录都会被记录。
指标数据收集,都会通过管道进行运算。聚合数据也是整个系统中最大的挑战。一个指标源数据每天可能会产生非常大数量级的数据。
实验平台使用Hadoop的Map-Reduce任务来解决运算的性能问题。为了尽可能提高性能,Twitter团队还和Hadoop团队共同合作,做了大量调优。
另外有一些轻量级的流处理任务,会通过 TSAR 在Twitter的 Heron平台 进行实时计算。
上图中的Scalding管道,可以被认为有三个不同的阶段。
首先,将原始数据聚合成每个用户、每个小时的基础数据集。这些数据会被作为下一阶段的输入数据,同时也会被用作计算其他数据。
然后,第一阶段生成的数据会加入A/B测试的表达式,并在实验过程中计算每个指标、每个用户的聚合数据。第二阶段的结果可以被用于深入挖掘结果。
最后,第三阶段会汇总所有实验数据。这些实验数据会被加载到 Manhattan 中,产品团队可以在内部看板中进行浏览。
支撑Twitter A/B测试平台的技术设施非常广泛,究其原因主要是因为庞大的数据量。平台需要对大量数据加以处理,以进行分析和实验。通过管道的设计,也使得平台可以对多粒度数据进行不同类型的分析。
感谢徐川对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群 )。