關於「放量」

所謂放量其實就是A/B測試,不過在咱們組內部喜歡叫「放量」。關於放量其實有不少種規則:時間、地區、用戶區間、隨機放量等。測試

爲何要放量

放量只有在大流量的C端項目中才有這個需求,流量小的產品或者公司內部使用的管理系統一般不須要作放量。動畫

這裏衍生出一個問題「爲何大流量C端項目須要作放量?」。網站

以某門戶網站爲例,假設去年日均PV是二個億,一年的總收入是30億人民幣。code

那麼能夠推算出,若是不作任何改動的狀況下,今年的收入和去年比不會有太多的波動;可是部門給規定的目標一般要高於去年的收入,因此產品須要作一些事情來增長收入。cdn

某門戶網站簡筆畫
圖1 - 某門戶網站簡筆畫

通過一系列調研與討論,最終決定把圖中紅圈的位置作一個改動,但願這個位置能夠獲得更好的商業化效果,提高一些收入。blog

但咱們並不知道這個改動的結果是正面的仍是負面的,若是這個改動上線以後致使了負面效果(用戶很討厭這個改動,瘋狂罵咱們),不但沒增長收入反而下降了收入,這個後果是很是嚴重的。開發

因此咱們一般會作一件事就是「放量」,先小規模放10%的量看看效果如何。產品

這裏的放量一般又根據不一樣的狀況分好幾種:it

  1. 按用戶區間放量(這是咱們最經常使用的放量方案)。
  2. 按地域放量(例如某些功能只放量給北京地區的用戶)。
  3. 按時間放量(雙十一期間頁面會作一些開屏動畫之類的活動效果,通常都是提早開發好,在指定的時間段內放全量)。

地域放量與時間放量很容易理解,這裏主要解釋下什麼是按用戶區間放量。io

放量10%的用戶
圖2 - 放量10%的用戶

假設咱們的產品總共有10億個用戶,放量10%,那麼咱們能夠選擇一個區間,是放給0~1億這個區間的用戶仍是放給1億~2億這個區間,這個就是用戶區間

固然,這個名字是我隨便起的,只是爲了朗朗上口。

這裏你可能會有一個疑問,爲何要按照用戶區間放10%的量,直接隨機放10%的量不行麼?

答案是「也能夠」,但隨機放量沒法知足下列需求。

咱們仍是舉個例子,假設圖1的紅圈位置通過一系列討論,如今有兩個升級方案,但不肯定哪一個效果好,最終決定將這兩個版本都開發出來,而後對比下哪一個效果好就使用哪一個版本。

這時候隨機放量就沒法知足需求了,可是按用戶區間放量能夠知足需求。

方案1與方案2同時放量
圖3 - 方案1與方案2同時放量

咱們能夠將方案一放量給0~1億這個區間的用戶,把方案二投放給1億~2億區間的用戶。

如何放量

任何產品都會爲用戶分配一個ID,假設爲用戶分配的ID是一個散列值MD5,那麼當用戶訪問咱們的產品時,咱們就能夠根據用戶的ID來分辨該用戶會命中哪一個版本(版本一?版本二?或者是未命中?)。

具體實現方案是,取用戶ID的後三位(固然,後兩位也行),而後用這個數除以三位的最大值,獲得一個百分比。舉個例子:

假設個人用戶ID爲4b3ab369fa40ca4faae404b2f8332b65,這是一個MD5值,咱們取出後三位b65,三位16進制的最大數轉換成10進製爲16^3 = 4096,因此咱們將b65轉換成10進制後在除以4096,最終得出的數字爲:(b65 = 2917) / 4096 = 0.71

上述例子將「方案一」投放給0~1億這個區間的人,將「方案二」投放給1億~2億這個區間的人,很顯然,當我訪問頁面時,紅圈位置會發現個人數值是0.71,不在0~0.1這個區間,也不在0.1~0.2這個區間,因此我沒有命中這一次的小規模放量測試,個人頁面上該位置顯示的是現有的穩定版。

這樣實現的好處是:

  1. 能夠經過簡單且輕量的計算快速得到用戶的所屬區間。
  2. 不須要知道總用戶數就能夠進行準確的放量。

總結

相同的放量策略和實現方式能夠放到服務端,也能夠放到客戶端;具體如何放量須要「具體狀況,具體分析」。

相關文章
相關標籤/搜索