日前,在WOT全球創(chuàng)新技術大會上,火山引擎DataTester技術負責人韓云飛做了關于字節(jié)跳動A/B測試平臺的分享。DataTester是字節(jié)跳動內(nèi)部應用多年的A/B實驗平臺,平臺自建立至今,承載了內(nèi)部500余個業(yè)務線的A/B實驗任務,累計已開展超過150萬次實驗,現(xiàn)在字節(jié)跳動每天會新增實驗2000余個,同時在DataTester上運行的實驗有3萬余個。
字節(jié)跳動內(nèi)部有著非常濃厚的數(shù)據(jù)文化和實驗文化,抖音、今日頭條的名字都經(jīng)由A/B測試確定,而A/B測試也是整個研發(fā)鏈路上的必經(jīng)一環(huán)。本文將以字節(jié)研發(fā)流程中的兩個個案例,介紹A/B測試在研發(fā)全流程中的角色。
1.產(chǎn)品系統(tǒng)重構
今日頭條是一款信息類互聯(lián)網(wǎng)產(chǎn)品,它會基于數(shù)據(jù)挖掘的推薦引擎向用戶推薦文章。今日頭條早期的信息流服務是使用Python的一項單體服務,但隨著字節(jié)業(yè)務發(fā)展的迅速,今日頭條的流量也迎來了爆發(fā)式增長,產(chǎn)品在性能工程上的復雜度也在急劇升高。
為了優(yōu)化產(chǎn)品,使之更加適應大流量下的響應,今日頭條的信息流業(yè)務設計了一次大規(guī)模服務化重構:語言選型從Python切換到了Golang,從單體服務架構演變成了分層的微服務架構。

但這個重構設計,是圍繞產(chǎn)品性能方面的技術指標展開的,但對于用戶體驗的影響和業(yè)務目標的影響,卻無法通過短期觀察得到結論。為了避免復雜的新系統(tǒng)上線后,降低頭條用戶的產(chǎn)品使用體驗,因此在重構方案設計完畢后,今日頭條業(yè)務花費了6個月以上的時間,開展了新方案和舊方案對比的A/B測試,總共進行過幾十次A/B實驗,多點開啟灰度測試,并不斷分析結果、迭代方案,確認改進點對業(yè)務數(shù)據(jù)指標的影響。
在半年多之后,這個復雜的新系統(tǒng)終于結束了A/B測試,并推全上線。上線后的新系統(tǒng)對今日頭條大部分全局指標幾乎無影響,甚至一些關鍵指標取得了顯示正向的結果。
2.產(chǎn)品Bug修復
這個案例是字節(jié)直播產(chǎn)品的場景。該產(chǎn)品在設計了新的精排模型,原本期望是想召回模型學習到更多信息,提前做一些召回符合用戶興趣的內(nèi)容,提升部分產(chǎn)品關鍵指標。但在實際操作中,由于模型配置出現(xiàn)了Bug,上線失敗。

因此,該直播產(chǎn)品的團隊針對這個Bug進行了修復,但只能采用使精排模型變得更復雜的方案。新的功能雖然已經(jīng)成功跑通,但由于模型更加復雜,對于用戶產(chǎn)品體驗負向影響的風險會隨之升高。
為了驗證新開發(fā)的功能對用戶體驗的影響,該團隊使用DataTester開啟了A/B測試,他們將用戶分為新用戶組、老用戶組分別開啟實驗,通過數(shù)據(jù)觀察發(fā)現(xiàn),新的功能對于新用戶的而言沒有什么實質(zhì)性影響,新用戶的使用時長、留存等指標依然是在一個特定區(qū)間波動;但在老用戶組的實驗數(shù)據(jù)中,他們發(fā)現(xiàn)老用戶在內(nèi)容人均閱讀時長上,有了0.3%的顯著提高。雖然0.3%是一個看起來不大的數(shù)字,但對于字節(jié)產(chǎn)品的用戶體量而言,這種幅度的提升,在用戶內(nèi)容消費時長上的實質(zhì)提升很大。
上述兩個案例是DataTester在字節(jié)跳動應用的縮影,實際上,在字節(jié)整個的研發(fā)流程中,開發(fā)、上線、BugFix、優(yōu)化、重構,A/B測試都會作為基礎設施中的一環(huán),來服務于整個研發(fā)流程。除此之外,A/B實驗也廣泛應用于字節(jié)跳動業(yè)務的方方面面,從產(chǎn)品命名到交互設計,從改變字體、彈窗效果、界面大小,到推薦算法、廣告優(yōu)化、用戶增長…… 可以說,DataTester已經(jīng)融入在字節(jié)的每一個業(yè)務和每一項決策中。

DataTester 當前已通過火山引擎向外部企業(yè)開放服務,能基于先進的底層算法,提供科學分流能力和智能的統(tǒng)計引擎,支持多種復雜的A/B實驗類型。目前,火山引擎 DataTester 已經(jīng)服務了美的、得到、凱叔講故事等在內(nèi)的上百家標桿客戶,將成熟的“數(shù)據(jù)驅(qū)動增長”經(jīng)驗賦能給各行業(yè)。