Twitter的A/B測試實踐(二):技術概述

【編者的話】A/B測試曾在多個領域產生深遠的影響,其中包括醫藥、農業、制造業和廣告。 在軟件開發中, A/B測試實驗提供了一個有價值的方式來評估新特性對客戶行為的影響。在這個系列中,我們將描述 Twitter的 A/B測試系統的技術和統計現狀。

推特AB測試實踐

本文是該系列的第二篇,主要介紹了 Twitter的A/B系統后端的實現。

 

注:本文最初發布于 Twitter博客,InfoQ中文站在獲得作者授權的基礎上對文章進行了翻譯。

正文

在前一篇文章中,我們討論了 Twitter進行A/B測試的動機和 A/B測試如何幫助我們進行創新。在這篇文章中,我們將介紹 Twitter的 A/B系統后端是如何實現的。

概述

Twitter實驗工具 Duck Duck Goose(簡稱 DDG)最早構建于2010年。它已經演變成一個系統,能夠聚合許多 TB的數據,比如 Tweets、社交圖譜變化、服務器日志和用戶在Web和移動端的交互記錄,從而對大量的柔性指標進行測量和分析。

 

在一個很高的層次上,其數據流相當簡單。

灰度發布

數據處理管道

工程師通過 Web UI配置實驗,并指定一些細節:

 

?誰符合實驗的條件?我們可能希望將實驗限定到特定語言、國家、操作系統,等等。

 

?“實驗桶(Treatment Bucket)”是什么?我們可能有數種替代實現或者設計,對照當前生產版本即“控制桶(control)“進行測試。

 

?實驗假設是什么?這一變更將如何影響用戶行為?希望改進哪些指標?

 

應該跟蹤哪些指標?除了與實驗假設直接相關的指標,可能還有其它一些有意義的指標需要跟蹤。有些指標會被所有實驗跟蹤;其它的可以在實驗配置過程中創建或者從其它現有指標庫中選取。

 

然后,DDG會提供給工程師一些代碼,用于檢測哪種實驗桶應該推送給客戶。對于特性開發人員,這就是一種簡單的“特性開關”——一種用于控制特性可用性的通用機制。任何時候當應用決定用戶是否是一個實驗體時,我們就記錄一個 “A/B測試印象(a/b test impression)”。將決定延遲到用戶即將收到實驗影響之前會增大統計功效。

 

Twitter應用程序的使用數據將被發送到“事件采集服務(event ingest service)”中。一些輕量級的統計使用運行在 Heron平臺上的 TSAR通過流處理任務實時計算。大部分工作是離線完成的,使用 Scalding管道,結合了客戶端事件交互日志、內部用戶模型和其它數據集。

 

可以認為,Scalding管道具有三個不同的階段。

 

首先,我們將原始數據聚合成每個用戶每小時的指標值數據集。結果如下:

AB測試原理

這些數據將作為下一階段的輸入數據,除了實驗外,也將作為分析的數據源——頂層指標計算、“特殊隊列(ad-hoc cohorting)”,等等。

 

然后,我們結合實驗 A/B測試印象中每個用戶的指標信息,在實驗運行時計算每個指標、每個用戶的聚合值。由于用戶可能在不同的時間進入不同的實驗,因此這種聚合在不同的實驗中可能有不同的值。

網站數據分析

同時我們也會記錄用戶第一次進入實驗的時間,記錄他們是否是新的、偶然的或者頻繁的用戶以及其它元數據。這能夠在實驗過程中實現實驗結果的分割和屬性值變化的測量。

 

第二階段的結果對深入挖掘實驗和研究替代分析方法非常有幫助——它們讓我們能夠迭代不同的聚合技術、分層方法和各種處理異常值的算法,等等。

 

最后,第三階段會聚合所有實驗數據。

app數據分析

這就是加載到 Manhattan的最終實驗結果數據,產品團隊可以通過內部儀表板進行瀏覽。

指標的定義

DDG是一個能夠衡量顯著差異特性的平臺,其中一些特性還沒有被發明出來。這意味著我們需要平衡柔性指標定義的可預測性和穩定性。

 

我們提供了三種指標類型,按集中控制和規范降序排序如下:

 

內置指標:大部分內置指標由實驗團隊定義和維護;比如“發推次數”或者“登錄次數”這些核心指標。所有實驗都會自動跟蹤這些指標。

 

實驗者定義和配置的指標:實驗者可以使用輕量級 DSL指定需要計數的“事件”。許多指標可以通過匹配特定的特性謂語,簡單定義為計算通用客戶端事件日志中的所有行。DDG管道會評估這些謂語,并為實驗者實現所有計算。

 

導入的指標:這些指標完全由 Twitter工程師創建和維護。實驗者可以根據上表1創建自己的聚合方法,并導入系統。創建自己的聚合方法的工作量比其他兩種選擇多很多,但是能夠實現數據源及轉換和聚合邏輯的最大適應性。

 

為了幫助實驗者找到合適的指標集,并保持指標定義的正確和通用,指標會被收集和整理成“指標組”。每個指標組由創建團隊維護和變更。指標組的歷史版本、所有權和其它屬性都將被跟蹤。這鼓勵實驗者之間的共享和交流。

 

隨著時間推移,有意義的跟蹤事件的組合數量和實驗者數量逐漸增長,會出現冗余的指標。這會引起混亂(比如內置的 “Foobar Quality”指標和 Bob定義的 “Quality of Foobar”指標的區別?)。在我們“TODO”列表上有一個有趣的項目是創建一種能夠自動識別度量相同內容指標的方法,并建議指標調和。

管道的伸縮性

實現聚合管道高效運行是系統最大的挑戰之一。數據源的交互每天就會產生數千億的事件;相對而言,低效率會顯著影響總運行時和處理成本。

 

我們發現 Hadoop的 Map-Reduce任務的輕量化、恒定分析對性能問題的快速分析很重要。為此,我們與 Hadoop團隊合作,在 Hadoop構建中實現按需的 JVM分析任務(實現 YARN-445及若干后續事項),同時安裝一鍵式線程轉儲,并為所有任務開啟自動 XProf分析。

 

通過分析我們發現了一些提高效率的機會。比如,我們發現一些地方可以存儲自定義指標事件匹配的結果。如果可能,我們用生成的數字 ID替換字符串。針對 Hadoop Map-Reduce我們還應用了一些技巧:map和 reduce階段的排序和溢出緩沖調優、數據排序實現聚合過程中 map端的最大壓縮、“及早規劃(early projection)”等等。

 

在2015年初的Hack Week,我們發現在 Hadoop映射任務的 SpillThread上浪費了大量的時間,SpillThread負責對部分映射輸出進行排序,并寫入磁盤。SpillThread的大部分時間浪費在反序列化輸出鍵,并對其進行排序。Hadoop提供了一個 RawComparator接口幫助 Hadoop高級用戶避免這種情況,但是不適合我們使用的 Thrift對象。

 

我們構建了一個原型,為序列化 Thrift結構實現了一個通用的 RawComparator,并用基準問題測試了收益。我們的原型做了一些修改,針對最壞情況做了基準測試,但是由此產生的80%的收益已經足夠重要,因此我們從 Scalding團隊招募了一些工程師,切實地為Thrift、Scala Tuples和 Case類實現這個想法。最終以 OrderedSerialization特性發布在 Scalding 0.15中。在DDG任務中開啟該特性能夠節省30%的整體計算時間!更多細節可以參考 Scalding團隊在 Hadoop Summit 2015上所作的題為 “Performance Optimization At Scale”演講。

 

最后,我們有兩層防護可以確保我們沒有引入性能衰退:預防和檢測。為了預防衰退,除了常規單元測試,我們還有自動化測試,讓我們在交付準備環境中能夠運行完整的端到端管道,并比較兩者的結果(保證正確性)和所有的 Hadoop計數器(檢查是否存在性能衰退)。為了檢測生產環境中是否存在性能問題,我們創建了 Scala特性,使得Scalding任務能夠向 Twitter的內部可觀測基礎設施導出所有的 Hadoop計數器。這意味著,我們能夠輕松地使用公共模板為 Scalding任務生成儀表板,創建問題警報,比如長時間運行或者長時間不運行,快速檢查以過高速度發生的特定類的允許誤差,等等。

結論

支撐 Twitter實驗平臺的基礎設施非常廣泛,主要是由于需要處理大量的數據,以分析實驗。該系統必須在可用指標的靈活性和預測性及易于分析之間進行權衡;管道設計實現了多粒度數據的生成,使不同類型的分析成為可能。我們在效率處理方面投入了大量的精力,包括全面的自動化測試和持續改進,以分析和監控 Hadoop的性能。

致謝

多年來,許多 Twitter工程師一直從事這些工具的開發;我們要特別感謝Chuang Liu,Jimmy Chen, Peter Seibel, Zachary Taylor, Nodira Khoussainova, Richard Whitcomb, Luca Clementi, Gera Shegalov, Ian O’Connell, Oscar Boykin, Mansur Ashraf所做的貢獻,以及 PIE,Scalding和 Hadoop團隊所作出的貢獻。

 

本文由吆喝科技授權轉載自InfoQ,原文鏈接:http://www.infoq.com/cn/articles/twitter-ab-test-practise-part02,英文原文:https://blog.twitter.com/2015/twitter-experimentation-technical-overview

4900 Views
即刻實踐文章理論 A/B測試 灰度發布 產品優化 免費申請
Please wait...

訂閱我們

對于每位訂閱讀者,每兩周,吆喝科技會為您發送4篇精選文章,可能是最新的A/B測試實踐,也會是你所期待的增長干貨。
qq宠物捕鱼大师 王中王资料一肖中特天 pk记录号码 总冠军论坛平特一肖 混合过关规则 六合彩特码 北京时时仪骗局 梦到彩票号码是天机吗 时时彩票是合法的吗 彩票改20分钟意味着什么 搜索新疆时时