在線服務(wù)系統(tǒng)的AB-test方法有很多種。搭建多個可服務(wù)集群,從物理上對流量進行隔離是比較常見的一種方式。這種方式應(yīng)用于大型復(fù)雜的在線服務(wù)系統(tǒng)時,存在部署比較慢的問題。這種方式的典型架構(gòu)如下圖所示。

QueryRewrite:改寫用戶搜索詞以期望得到更好的查詢結(jié)果。
Matching:根據(jù)用戶搜索詞,召回最符合用戶意圖的那些推廣。
Ranking:確定推廣的輸出順序,需要兼顧用戶體驗和搜索平臺的收益。
這種架構(gòu)有兩個優(yōu)點。
代碼分為了基線和實驗代碼,實驗代碼對業(yè)務(wù)的侵入性比較小。
實驗田的流量和基線的流量從物理上嚴(yán)格分開,嚴(yán)格控制了實驗對業(yè)務(wù)的影響。
這種架構(gòu)的缺點同樣也很明顯,主要有如下幾點。
增加了運維的復(fù)雜性,運維需要維護多套環(huán)境。
每套環(huán)境接入的流量都是由單個實驗田集群的物理機器數(shù)量固定上限的,不能靈活地驗證流量擴大的情景。這會導(dǎo)致對小流量實驗效果
很好的算法,在基線上有可能無法收到好的效果。
實驗的流量有限,導(dǎo)致實驗的數(shù)量變少,而增大實驗流量又會影響業(yè)務(wù)基線。
我們在總結(jié)現(xiàn)有的各種實驗機制的基礎(chǔ)上,結(jié)合阿里媽媽的應(yīng)用場景實踐出了一種高效便捷、能充分利用流量、并行多個實驗的方法。該方法也能支持系統(tǒng)的灰度發(fā)布,有如下幾個優(yōu)點。
提高并發(fā):實現(xiàn)多實驗并行迭代,加快迭代的速度。
公平對比:做到實驗效果公平、準(zhǔn)確對比評估,即時停止不符預(yù)期的實驗;隨時擴大效果良好的實驗的流量。
降低門檻:提供實驗管理工具,除算法以外,其他有實驗需求的如產(chǎn)品、運營、前端等都可以獨立申請發(fā)布實驗。
建立閉環(huán):從想法、實驗前線下評估、發(fā)布實驗、實驗進行、實驗評估、最后實驗總結(jié),確保實驗結(jié)果的質(zhì)量。
系統(tǒng)架構(gòu)和模塊說明
一. 系統(tǒng)整體架構(gòu)
架構(gòu)整體可以劃分為三個系統(tǒng),如下圖所示。

接下來對各個子系統(tǒng)進行詳細(xì)的介紹。
1. 實驗配置管理發(fā)布系統(tǒng)
此系統(tǒng)給用戶提供便捷的UI操作界面,方便用戶添加實驗配置流量,然后動態(tài)地在線發(fā)布。為了彌補各種不可預(yù)期的錯誤,該系統(tǒng)支持歷史版本的快速回滾。
2. 在線服務(wù)系統(tǒng)
根據(jù)用戶的實驗配置文件,進行分流處理,給各個實驗分配相應(yīng)的流量。實驗分流模塊以庫的方式接入在線服務(wù)系統(tǒng)。在系統(tǒng)的流量入口處調(diào)用此分流庫。后續(xù)會詳細(xì)介紹分流的原理和作系統(tǒng)進行實驗的方法。
3. 日志分析展示系統(tǒng)
根據(jù)在線服務(wù)系統(tǒng)記錄的日志,統(tǒng)計出各個實驗的效果,供系統(tǒng)分析師或?qū)嶒炗^察者使用。然后根據(jù)實驗的效果,使用實驗管理系統(tǒng)去調(diào)整各個實驗流量的占比。
二. 各模塊介紹
1. 實驗配置管理發(fā)布系統(tǒng)
(1) 實驗場景。廣告系統(tǒng)中,實驗是針對某一批廣告位或者特定頁面進行的。針對PID(標(biāo)記廣告的位置信息)或頁面來對流量進行分類就成了一個強需求。將這樣一批廣告位定義為一個實驗場景。Web操作頁面上需要提供配置實驗場景的UI界面,用戶可以在這個界面上新建一個場景,指定符合某些PID要求或者URL要求的請求進入相應(yīng)的實驗場景,UI界面如下所示。

在此頁面上,用戶可以方便地添加一個新場景,并指定該場景的入口PID(入口PID可以設(shè)定多個)。
(2) 實驗分層和流量切分。進入某個實驗場景后,通過分多層來達到流量的復(fù)用。每一層的流量均是流入這個場景流量的一個全集。每一層的流量可以按用戶指定的切分標(biāo)記進行分桶切流。
一層可以看成是多個實驗的集合,實驗分層的原則如下:
相互之間沒有影響的實驗可以分到不同層。
相互之間有影響的實驗分到同一層。
由于互不影響的實驗被分配到了不同的層,從而達到復(fù)用流量的目的。相互之間有影響的實驗分到同一層,則保證了同一請求不會去作兩個互斥的實驗。