天天看點

微軟 AB/Testing EXP 實驗管理平台

Conference Paper · May 2018 The Anatomy of a Large-Scale Online

Experimentation Platform。

因為工作負責和ABTest相關的事情,是以對ABTest系統理論與工程落地情況一直在調研,根據上面這篇論文,我們一起來學習下微軟EXP系統的工程實作。摘要及其相關工作啥的廢話略過,先放一張架構圖:

微軟 AB/Testing EXP 實驗管理平台

整個系統包含四部分:

1.

experiment portal

portal屬于一個實驗管理背景系統,為實驗者與實驗系統之間提供互動接口,實驗者可以友善的在系統中建立,配置,運作并分析實驗。其中系統包含三個重要的元件:

1. experiment management

實驗管理界面應具有以下功能:

  • 選擇實驗地域群體(US CN等)
  • targeting or traffic filters(浏覽器,作業系統,應用版本以及更複雜的實驗條件,比如剛滿一個月的新使用者等)
  • Overall Evaluation Criteria (OEC) 綜合評價标準,實驗者要選擇好評估名額,可以内置一些常用的CTR,PV,UV等産品優化名額
  • 配置實驗組和對照組流量,以及實驗的開始和結束時間
  • 支援

    re-randomization

    :使用曆史資料批量做AA實驗,一般通過AA實驗選擇最合适的hash算法,目的是為了讓樣本盡可能均勻,然後才能做AB實驗,為了提高銷量,巧妙的使用曆史資料做AA,這個過程叫做

    SeedFinder

  • 實驗管理界面 對不同産品提供不同的實驗配置模版
  • isolation group 是一個變量集合,每個變量都會被打上所屬的isolation group,實驗裡的所有變量共享同樣的isolation group,如果兩個變量所屬的isolation group有交集,那麼說明這兩個變量會是互相影響的,對于這兩個變量,在做實驗的時候應該是互斥的
  • 後端管理系統能夠控制變量所對應的線上業務行為。對于server端實驗,代碼可以随時重新釋出上線,對于client端實驗,比如app發版都是周期性的,是以需要能夠在管理系統配置feature的開關
  • 後端管理系統還可以讓使用者自定義metric,微軟開發了Metric Definition Language (MDL),去構造metric,如ctr等,底層會重新翻譯成SQL等其它語言。對于各種metric:産品效果名額,實驗的置信度,實驗是否分流均勻

2.

experiment execution service

這個是ABTest的核心服務,為各個接入AB的服務配置設定實驗變量。每個變量V是一個參數集合,實驗可以表示為E{V1, V2}, 如V1實驗組,V2對照組。isolation group 會切分成多個變量,如下圖:

微軟 AB/Testing EXP 實驗管理平台

每個變量都會被關聯上一個或多個isolation group,比如存在兩個實驗E1{V1, V2}, E2{V3, V4},E1關聯隔離組G1,G2。同時E2的變量也關聯G1,G2。 會發現兩個實驗變量所關聯的隔離組是有交集的,那麼這時候說明兩個實驗是會互相影響的,不能同時進行。

列舉了三種實驗組參數配置下發方式:

微軟 AB/Testing EXP 實驗管理平台

總之都是從

experiment execution service

拿到實驗組參數配置并緩存在本地。

  1. 可以通過應用程式在啟動時直接通過服務接口調用,去請求實驗組參數配置,這樣做到使用者在session内有一緻的使用者體驗。服務端和用戶端均可采用這種方式
  2. Edge Node可以類比nginx,可以負載均衡服務, 它和

    experiment execution service

    互動,對請求進行加強(填充改次請求 所對應的實驗參數配置)。這種方式不适合用戶端實驗, 因為用戶端使用者操作很多都是本地行為,沒有發生網絡互動
  3. 第三種方式通過為AB實驗打包一個專門的lib, 用戶端實驗不需要将實驗參數在各個元件傳來傳去,而是每次都從這個lib去拿就可以了。lib負責和

    experiment execution service

    周期性互動

還有個配置管理服務 去控制

experiment execution service

進行一個實驗下不同的變量配置設定的開關, 該開關配置應該放到lib裡