灰度發布

灰度發布

黑與白之間能夠平滑過渡的發布方式
灰度發布是指在黑與白之間,能夠平滑過渡的一種發布方式。AB test就是一種灰度發布方式,讓一部分用戶繼續用A,一部分用戶開始用B,如果用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把所有用戶都遷移到B上面來。灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度。[1]
    中文名:灰度發布 外文名: 所屬學科: 英文名:Gray release 含義:灰度發布是指在黑與白之間 發布方式:能夠平滑過渡的一種發布方式 例子:A/B測試就是一種灰度發布方式

作用

及早獲得用戶的意見反饋,完善産品功能,提升産品質量讓用戶參與産品測試,加強與用戶互動降低産品升級所影響的用戶範圍。

步驟

1)定義目标;

2)選定策略:包括用戶規模、發布頻率、功能覆蓋度、回滾策略、運營策略、新舊系統部署策略等;

3)篩選用戶:包括用戶特征、用戶數量、用戶常用功能、用戶範圍等;

4)部署系統:部署新系統、部署用戶行為分析系統(web analytics)、設定分流規則、運營數據分析、分流規則微調;

5)發布總結:用戶行為分析報告、用戶問卷調查、社會化媒體意見收集、形成産品功能改進列表;

6)産品完善;

7)新一輪灰度發布或完整發布。

分類

自然系統

系統内的個體按自然法則存在或演變,産生或形成一種群體的自然現象與特征。

自然系統包括生态平衡系統、生命機體系統、天體系統、物質微觀結構系統以及社會系統等等。

人工系統

系統内的個體根據人為的、預先編排好的規則或計劃好的方向運作,以實現或完成系統内各個體不能單獨實現的功能、性能與結果。

人工系統包括立體成像系統、生産系統、交通系統、電力系統、計算機系統、教育系統、醫療系統、企業管理系統等等。

複合系統

複合系統是自然系統和人工系統的組合。

複合系統包括導航系統、交通管理系統和人一機系統等等。

維納在創立控制論的過程中,把動物、機器的通訊和控制看做是一個系統。

為了明确研究的對象,人為地将物質或空間與其餘物質或空間分開,被劃定的研究對象稱為系統。

在熱學中,通常把一定質量的氣體作為研究對象,此研究對象就稱為系統

在流體力學中,衆多流體質點的集合稱為系統

人體由運動系統、神經系統、内分泌系統、循環系統、呼吸系統、消化系統、泌尿系統、生殖系統八大系統構成。

測試方法

灰度發布于互聯網公司常用A/B測試似乎比較類似,老外似乎并沒有所謂的灰度發布的概念。按照wikipedia中對A/B測試的定義,A/B測試又叫:A/B/N Testing、Multivariate Testing,因此本質上灰度測試可以算作A/B測試的一種特例。隻不過為了術語上不至于等同搞混淆,談談自己理解的兩者的差異。灰度發布是對某一産品的發布逐步擴大使用群體範圍,也叫灰度放量,A/B測試重點是在幾種方案中選擇最優方案,關于A/B測試可以參考這篇文章:A/B測試終極指南。

發布引擎

對于一般的小系統并不需要單獨的灰度發布引擎,可以參考A/B測試中做法,在頁面javascript或服務器端實現分流的規則即可。但對于大型的互聯網應用而言,單獨的用于管理用戶分流的發布引擎就很有必要了。“錢掌櫃”分流發布模式 提到了原來阿裡軟件所使用的灰度發布引擎,設計思路具有普遍性,可以供參考。

常見問題

1、以偏概全

1)、問題特征:

a、選擇的樣本不具有代表性;

b、樣本具有代表性,但選擇樣本用戶使用習慣并沒有涵蓋所有核心功能。

2)、解決方案

樣本選擇要多樣化,樣本的組合涵蓋大部分核心功能。

2、知識的詛咒

”知識的詛咒“的說法來自《粘住》中實驗,具體可以自己搜索一下。我們自己對于自己開發的産品極為熟悉,于是乎想當然認為用戶也應當能夠理解産品的設計思路、産品的功能使用。

1)、問題特征:

a、結果沒有量化手段;

b、隻依賴于用戶問卷調查;

c、沒有web analytics系統;

d、運營數據不全面,隻有核心業務指标(例如交易量),沒有用戶體驗指标;

e、對結果分析,隻選擇對發布有利的信息,對其他視而不見。

2)、解決方案:

a、産品設計考慮産品量化指标;

b、結果分析依據量化指标而不是感覺。

3、發布沒有回頭路可走

1)、問題特征:

a、新舊系統用戶使用習慣差異太大,沒有兼容原有功能;

b、新舊系統由于功能差異太大,無法并行運行,隻能強制升級;

c、新系統隻是實現了舊系統部分功能,用戶要完整使用所有功能,要在新舊系統切換;

d、新舊系統數據庫數據結構差異太大,無法并行運行。

2)、解決方案:

前期産品策劃重點考慮這些問題,包括:

回滾方案、新舊系統兼容方案、用戶體驗的一緻性、用戶使用習慣的延續性、新舊系統數據模型兼容性。

4、用戶參與度不夠

1)、問題特征:

a、指望用戶自己去挖掘所有功能。對于一個産品,大部分用戶經常隻使用部分功能,用戶大部分也很懶惰,不會主動去挖掘産品功能;

b、互動渠道單一;

c、陷入“知識的詛咒”,不尊重參與用戶意見。

2)、解決方案:

a、善待吃螃蟹的樣本用戶,包括給予參與測試的用戶小獎勵(例如MS給參與Win7測試用戶正版License)、給用戶冠以title;

b、通過郵件、論壇、社區、Blog、Twitter等新媒體與用戶形成互動;

c、提供産品功能向導。在hotmail最近的升級後的功能tip,gmail的tip都有類似的産品功能導向。在産品中會提示類似于:你知道嗎,xx還提供xx功能,通過它你可以xx。

發布例子

Gmail Labs是一個新特性櫥窗,用戶可以自己選擇一些未正式發布的新特性進行體驗,不喜歡可以關閉,在這個過程中,吃了螃蟹,也當了Google的小白鼠。

這個做法比傳統的灰度要高明很多,更加尊重用戶:

1、它沒有強奸用戶,用戶是否願意當小白鼠完全自願;

2、新特性不是打包在一起的一個大版本,可以選擇某幾個喜歡的螃蟹嘗嘗;

3、螃蟹不好吃可以扔掉,不用硬吃進肚子裡引發腸胃炎。

當然這些好處也是有代價的:

1、要開發一個labs平台實現新特性上架、獨立嘗試的功能,這可能要改動Gmail的前後台架構;

2、新特性要按照一定規範來寫,才能發布到這個平台上,可能會增加一些工作量;

3、小白鼠用戶增多之後,對系統的壓力可能會有一定提升,因為沒有用戶調用的界面都不一樣了。

既然Gmail Labs能夠順利發布,那麼說明對Google來說,以上這些問題都不算問題。另外,現在展示的新特性,都注明了開發者的名字,那麼,Gmail Labs可能會開放這個平台讓外部開發者也能提交特性?這倒是很open的一種開發模式,非常适合Google的web app産品線。

互聯網産品有一個特點,就是不停的升級,升級,再升級。我所在的項目組,基本上保持每周一次的發布頻率,系統升級總是伴随着風險,新舊版本兼容的風險,用戶使用習慣突然改變而造成用戶流失的風險,系統down機的風險。

為了避免這些風險,很多産品都采用了灰度發布的策略,其主要思想就是把影響集中到一個點,然後再發散到一個面,出現意外情況後很容易就回退。

很長時間,我們都一直在改進搜索引擎的排序算法,盡量讓最好的商品出現在搜索結果的第一屏。我們嘗試了很多中算法,不斷調整各個排序因子所占的比重。但是我們無法确信我們的排序結果能滿足所有用戶的需求。所以我們采用了灰度發布,選取幾個一級商品類目,在其中應用不同的排序算法,比如在女裝類目中,我們把賣家信用所占的比率調整到60%,在珠寶類目中,我們把銷售量所占的比率調整到60%然後發布出去,收集用戶反饋,最終選擇一種大部分人認為好的算法。

QZone是另外一個采用灰度發布的例子。大家都知道,QZone在過去的一年中改進是巨大灰度發布(2張)的,從以前慢悠悠的老爺爺變成了一個充滿青春活力的小夥子。其中經曆了大小無數次的發布,他們的發布也都是采用了灰度發布的策略,用戶數據的升級并不是大面積的一次性升級,而是通過一個用戶升級标志服務器,如果用戶數據沒有升級,後台會把此用戶的數據逐步遷移到新版本上,然後将升級标志位置1,升級過程中,用戶仍然可以訪問舊的數據,升級完成後的訪問都将轉發給新的版本。

QQ的很多産品發布都采用灰度發布,有些是抽取部分QQ号段升級成新系統,然後根據用戶反饋再大範圍升級。

在傳統軟件産品發布過程中(例如微軟的Windows 7的發布過程中),一般都會經曆Pre-Alpha、Alpha、Beta、Release candidate(RC)、RTM、General availability or General Acceptance(GA)等幾個階段(參考Software release life cycle)。可以看出傳統軟件的發布階段是從公司内部->外部小範圍測試>外部大範圍測試->正式發布,涉及的用戶數也是逐步放量的過程。

在互聯網産品的發布過程中也較多采用此種發布方式:産品的發布過程不是一蹴而就,而是逐步擴大使用用戶的範圍,從公司内部用戶->忠誠度較高的種子用戶->更大範圍的活躍用戶->所有用戶。在此過程中,産品團隊根據用戶的反饋及時完善産品相關功能。此種發布方式,按照中國特色的叫法被冠以”灰度發布“、”灰度放量“、”分流發布“。

關于“灰度發布”叫法的來源無從考察。隻不過按照中國傳統哲學的說法來看,很符合中國人中庸的思維模式:自然界所有的事物總是以對稱、互補、和諧的形式存在,例如黑與白、陰與陽、正與負、福與禍。在二元對立的元素間存在相互過渡的階段,所謂”禍兮福所倚,福兮禍所伏“。具體到黑與白,在非黑即白中間還有中間色——灰色。于是出現了很多關于灰色的說法:灰盒測試,灰色管理(極力推薦任正非:管理的灰度),灰色收入,灰色地帶等等。因此對于灰度發布實際上就是從不發布,然後逐漸過渡到正式發布的一個過程。

科學内涵

盡管系統一詞頻繁出現在社會生活和學術領域中,但不同的人在不同的場合往往賦予它不同的含義。長期以來,系統概念的定義和其特征的描述尚無統一規範的定論。一般我們采用如下的定義:系統是由一些相互聯系、相互制約的若幹組成部分結合而成的、具有特定功能的一個有機整體(集合)。

系統: ①有條理;有順序:系統知識系統研究。

②同類事物按一定的秩序和内部聯系組合而成的整體:循環系統|商業系統|組織系統|系統工程。

③由要素組成的有機整體。與要素相互依存相互轉化,一系統相對較高一級系統時是一個要素(或子系統),而該要素通常又是較低一級的系統。系統最基本的特性是整體性,其功能是各組成要素在孤立狀态時所沒有的。它具有結構和功能在漲落作用下的穩定性,具有随環境變化而改變其結構和功能的适應性,以及曆時性。

④多細胞生物體内由幾種器官按一定順序完成一種或幾種生理功能的聯合體。如高等動物的呼吸系統包括鼻、咽、喉、氣管、支氣管和肺,能進行氣體交換。

系統:不同結構不同性質不同功能等不同的東西,但又能協調統一到一起,有聯系有區分有上下左右結構層次區别的,能構互相轉換互相循環,有主有次有前沿有源頭,等像水系,像自然運轉這樣的結構層次的東西,稱之為系統!一個系統是由許多相互關聯又相互作用的部分所組成的不可分割的整體,較複雜的系統可進一步劃分成更小、更簡單的次系統,許多系統可組織成更複雜的超系統。

我們可以從三個方面理解系統的概念:

1.系統是由若幹要素(部分)組成的。這些要素可能是一些個體、元件、零件,也可能其本身就是一個系統(或稱之為子系統)。如運算器、控制器、存儲器、輸入/輸出設備組成了計算機的硬件系統,而硬件系統又是計算機系統的一個子系統。

2.系統有一定的結構。一個系統是其構成要素的集合,這些要素相互聯系、相互制約。系統内部各要素之間相對穩定的聯系方式、組織秩序及失控關系的内在表現形式,就是系統的結構。例如鐘表是由齒輪、發條、指針等零部件按一定的方式裝配而成的,但一堆齒輪、發條、指針随意放在一起卻不能構成鐘表;人體由各個器官組成,單個各器官簡單拼湊在一起不能成其為一個有行為能力的人。

3.系統有一定的功能,或者說系統要有一定的目的性。系統的功能是指系統與外部環境相互聯系和相互作用中表現出來的性質、能力、和功能。例如信息系統的功能是進行信息的收集、傳遞、儲存、加工、維護和使用,輔助決策者進行決策,幫助企業實現目标。

與此同時,我們還要從以下幾個方面對系統進行理解:系統由部件組成,部件處于運動之中;部件間存在着聯系;系統各主量和的貢獻大于各主量貢獻的和,即常說的1+1>2;系統的狀态是可以轉換、可以控制的。

系統在實際應用中總是以特定系統出現的,如消化系統、生物系統、教育系統等,其前面的修飾詞描述了研究對象的物質特點,即“物性”, 而“系統”一詞則表征所述對象的整體性。對某一具體對象的研究,既離不開對其物性的描述,也離不開對其系統性的描述。系統科學研究将所有實體作為整體對象的特征,如整體與部分、結構與功能、穩定與演化等等。

相關詞條

相關搜索

其它詞條