灰度發(fā)布是指在黑和白之間,能夠平滑的過濾的一種發(fā)布方式愧怜,目前是為了試錯缠局,把功能影響范圍降級到最小则奥,實現(xiàn)
可控范圍的快遞迭代。
灰度發(fā)布的好處:
從產(chǎn)品維度來講,可以快速試錯狭园,根據(jù)目標用戶反饋結(jié)果完善產(chǎn)品读处,從研發(fā)角度講可以完成服務(wù)不斷的迭代升級,發(fā)現(xiàn)問題及時回滾唱矛,A/B test其實也是灰度的一種档泽,根據(jù)莫衷策略基于用戶的反饋慢慢從A到B的過渡或者B到A的過渡。
灰度發(fā)布三大類型揖赴?
web頁面灰度:按照ip或者用戶id切流啊馆匿。具有隨機性,可以控制比例
服務(wù)端灰度:考驗主系分能力了燥滑,可以做邏輯切換開關(guān)渐北,按照義務(wù)相關(guān)屬性逐漸切流
客戶端灰度:一般按照用戶逐漸推送包,主要是PC端(WIN铭拧,MAC)赃蛛、移動端(安卓恃锉,OS)內(nèi)部大規(guī)模內(nèi)測
web 頁面灰度
web頁面灰度基本是A/B測試居多,A/B效果需要數(shù)據(jù)的支撐呕臂,比如瀏覽量破托,下單量等,數(shù)據(jù)的展現(xiàn)通常是漏斗形歧蒋,同時數(shù)據(jù)統(tǒng)計的前提必須埋點土砂。
客戶端灰度方案:
客戶端灰度主要談?wù)勔苿佣说幕叶龋畛S玫囊粋€功能是客戶端版本的升級谜洽。版本灰度發(fā)布一般基于UUID或者用戶ID萝映,ios和anroid灰度方式不一樣,像android預(yù)先在服務(wù)端內(nèi)置一個最新包的地址阐虚,在用戶開發(fā)客戶端的時候會觸發(fā)一個版本信息的請求序臂,服務(wù)端根據(jù)UUID或者PIN按照預(yù)先設(shè)置的規(guī)則來判定是否給用戶返回升級包,先少量灰度实束,之后再慢慢過渡到全量奥秆,最后可以上傳到一些大的應(yīng)用市場。
IOS 的灰度發(fā)布有兩種咸灿,一個企業(yè)包的安裝吭练,一個是可以通過 TestFlight 來邀請用戶協(xié)助測試 App 。企業(yè)包的灰度測試適用于公司內(nèi)部析显,在上傳平臺上傳plist文件鲫咽,根據(jù)策略給用戶下發(fā)對應(yīng)的下載鏈接。另一種TestFlight谷异,先得再 iTunes Connect 上上傳app,然后在其中填寫用戶郵箱信息分尸,用戶通過收到的邀請碼來下載app,這種灰度屬于定點灰度,有很大限制歹嘹。
服務(wù)端灰度方案:
流量灰度:
有兩個做法箩绍,一個是基于提供服務(wù)的機器數(shù)量來提供灰度功能,做法是從生產(chǎn)環(huán)境中選取一定數(shù)量的機器尺上,選中新版本發(fā)布材蛛。 流量的比例基數(shù)取決于機器的總數(shù)量,
如果是10臺機器怎抛,最少發(fā)布一臺卑吭,灰度流量是10%,如果是100臺機器马绝,發(fā)布一臺豆赏,灰度流量是1%,這種方式是建議機器的數(shù)量越多越好,機器越多灰度的影響范圍會越少掷邦。
二是服務(wù)本身的流量灰度白胀,做法是基于前置網(wǎng)關(guān)上流量配置灰度的api,按照流量百分比切分。
客戶端灰度:
基于設(shè)備信息抚岗,地區(qū)或杠,用戶信息的灰度。有兩種做法一個是在后臺服務(wù)硬編碼宣蔚,像設(shè)備信息向抢,用戶信息取hashCode值,IP 轉(zhuǎn)換地理位置信息件已,這種方案需要注意的是一定要做好回滾方案笋额。一般情況下不建議采用這種方式元暴,除非在做業(yè)務(wù)需求的時候本身帶有灰度的特性或者屬性篷扩。
二是 基于前置網(wǎng)關(guān)的灰度,把不同維度的算法前置到網(wǎng)關(guān)茉盏,好處是灰度代碼沒有浸入到具體業(yè)務(wù)里鉴未。
灰度發(fā)布平臺
基于以上理解其實灰度發(fā)布平臺至關(guān)重要,發(fā)布平臺包含了發(fā)布規(guī)則設(shè)置鸠姨,發(fā)布規(guī)則下發(fā)铜秆,數(shù)據(jù)路由等基本組件。