轻量化的灰度发布实践技术方案
前段時間業務組負責人提出因為合規原因,一個功能模塊需要在 App 實現灰度發布,具體來講就是要在不同的地域和用戶等級開展差異化的活動內容展示。利用這個契機惡補了一些“灰度發布”相關的知識,順勢將其中有價值的一些內容梳理與大家進行分享。
什么是灰度?
要想了解這個問題就要先明白什么是灰度。灰度從字面意思理解就是存在于黑與白之間的一個平滑過渡的區域,所以說對于互聯網產品來說,上線和未上線就是黑與白之分,而實現未上線功能平穩過渡的一種方式就叫做灰度發布。
灰度發布又叫金絲雀發布,起源是,礦井工人發現,金絲雀對瓦斯氣體很敏感,礦工會在下井之前,先放一只金絲雀到井中,如果金絲雀不叫了,就代表瓦斯濃度高。
?
灰度發布和 AB Test 的區別
和大部分人一樣,我個人之前對灰度發布和 AB Test 存在一定的混淆,認為就是換了一種說法,但實際調研發現兩者之間存在著本質上的區別。
1、AB Test
AB測試一般由產品經理和運營來主導。它是把兩種功能,或者兩個版本,交給相同的用戶來使用,看用戶喜歡哪種功能。
要點是,AB的兩種功能都是可用的, 投放的用戶群體無差別,讓用戶選擇更受歡迎的功能,后期可能是A上線,也可能是B上線。
2、灰度發布
灰度測試一般由研發,測試或運維來主導。它是把系統的新版本,或者說新功能,以部分上線的方法來上線,驗證新版本是否足夠可靠。
關鍵要點是,灰度版本未必是可用的,或者說沒有嚴重bug的,投放的客戶群體可能只是北上廣深等一線城市的用戶,由監控確定是否有問題,后續可能會繼續放量上線。
?
灰度發布的優勢
1、提前獲得使用反饋,縮減風險影響范圍
因為灰度發布可以通過地域、性別、用戶等級、使用客戶端等一系列的策略條件對目標用戶群進行篩選,所以可以保證驗證版本影響的用戶在最小可接受的范圍內。此外,基于驗證版本提前收集用戶使用意見,及時完善產品功能,并且根據用戶和監控的反饋結果,做到查漏補缺,對于過程中發現的重大問題,甚至可以及時的回滾至“舊版本”。
2、自定義規則引擎,精準控制內容投放
此外灰度發布可以作為一個自定義的規則引擎,可按地域、人群、時段等自定義標簽對 App 模塊或者 Web 頁面進行內容的精準投放,滿足企業產品的精準化投放發布需要。就像是我們業務組負責人提出的需求,把新上線的活動僅投放給北上廣深四個一線城市的高等級用戶。
灰度發布方案分析
1、TestFlight
對于 iOS 開發者來講有一個較為方便的灰度測試方案,也是大家使用最多的 —— TestFlight。TestFlight測試工具允許開發者通過郵件等方式邀請用戶測試。TestFlight 在被蘋果收購之后,和 AppStoreConnect 進行了深入整合,現在,它可以生成一個公開的鏈接,用戶可以直接安裝測試。
當用戶打開現有版本的 App 后,服務器可以根據當前用戶的標簽判斷是否為灰度用戶。如果是的話,需下發TestFlight 的安裝鏈接,App 端引導用戶進入TestFlight 安裝。
但 TestFlight 也有一定的不足:
-
用戶必須安裝 TestFlight ;
-
有效測試時間為60天,在有效期結束之前需引導用戶更新正式版本;
-
測試用戶可以達到最多10000。
2、功能小程序化
第二種對于很多開發者來講可能比較陌生,起因是因為公司的 App 較為臃腫,迭代發版非常麻煩,希望功能模塊互相解耦實現模塊化開發,各業務模塊間互不影響,所以計劃集成 FinClip SDK ,讓整個 App 具備小程序的運行能力,繼而把 App 之前的業務功能都小程序化,通過管理后臺去實現動態更新與發布。
剛好在進行技術體驗時發現,FinClip 的小程序是借助部署的 FinClip 管理后臺實現上下架,上下架的同時可以進行上架規則的制定。這樣一來,相當于有了一個自定義的灰度發布引擎去自由配置地域、性別、用戶等級等自定義條件,不需要編寫任何復雜的應用邏輯代碼,完成上下架的同時就完成了精準的上線發布。
相對于 TestFlight ,這種方式的優勢在于:
-
不僅可以用在iOS系統中,Android 和桌面端應用也能集成 FinClip SDK ,相當于灰度測試覆蓋的范圍更加廣;
-
自身的迭代升級,不會影響到宿主 App 運行的穩定性,也無需對 App 進行全回歸測試;
-
小程序業務功能開發可以高度并行;
-
灰度發布粒度更細致(例如一個小程序是可以僅在測試白名單的范圍內試點)。
由于本次調研的范圍和時間有限,所以我認為較好用的輕量化灰度發布方案就暫時羅列這兩類,當然方案有千千萬,選擇自己合適的就好。
總結
以上是生活随笔為你收集整理的轻量化的灰度发布实践技术方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java计算机毕业设计基于安卓Andro
- 下一篇: 英伟达现在多赚钱?也就一天收入2亿多吧