在這篇文章中,我將會通過一個實際案例來介紹一下F5灰度發(fā)布解決方案的具體應(yīng)用場景。
01X 用戶為什么要使用灰度發(fā)布
在金融科技化的時代,灰度發(fā)布可以讓應(yīng)用更快地進行迭代,以更高的頻率發(fā)布到市場,同時還能減輕運維人員的負擔(dān),并且給用戶帶來更好的體驗。X用戶提供的服務(wù)已經(jīng)覆蓋了企業(yè)和個人的方方面面,新功能的發(fā)布、第三方接口的變更、問題的修復(fù)都會需要進行應(yīng)用的升級。但是對于運維部門來說,應(yīng)用變更總是伴隨著風(fēng)險和壓力。X用戶每次互聯(lián)網(wǎng)應(yīng)用更新均需要在23:00停機后才能進行,經(jīng)常在凌晨才能完成上線,每次上線投產(chǎn)后由于時間窗口較晚、驗證時間較短,有些場景需要隔日驗證,無法對所有場景進行覆蓋,無法保證互聯(lián)網(wǎng)應(yīng)用的穩(wěn)定性。同時對于業(yè)務(wù)部門和開發(fā)部門來說,新的產(chǎn)品和功能是否能被大部分用戶接受,也存在一定的風(fēng)險。
灰度發(fā)布,就是解決以上矛盾的一個最好方法。
02X 用戶灰度發(fā)布建設(shè)實踐
實現(xiàn)灰度發(fā)布最重要的兩個問題是灰度策略如何制定,以及灰度策略如何執(zhí)行。
灰度策略其實就是決定什么樣的請求應(yīng)該路由到我們的灰度版本上來,以什么為依據(jù)。在上一篇文章中我們提過通常有以下幾種策略:基于地域、基于用戶信息、基于交易類型。
綜合考慮后,X用戶最終采用根據(jù)用戶進行灰度的策略,根據(jù)不同應(yīng)用的特點設(shè)置用戶白名單,基于用戶白名單進行灰度發(fā)布。
灰度策略執(zhí)行方面,X用戶針對互聯(lián)網(wǎng)應(yīng)用已經(jīng)建設(shè)了部署平臺,另外X用戶所有的互聯(lián)網(wǎng)應(yīng)用都通過F5負載均衡器進行交付。基于X用戶現(xiàn)狀,決定采用部署平臺和負載均衡配合的方式實現(xiàn)灰度發(fā)布。在負載均衡設(shè)備上預(yù)設(shè)好灰度標(biāo)志,由部署平臺通過F5的API控制負載均衡的灰度標(biāo)志,當(dāng)進入灰度狀態(tài)時,負載均衡設(shè)會將白名單用戶的交易請求分發(fā)至灰度版本應(yīng)用服務(wù)器。
灰度標(biāo)志
是由部署平臺調(diào)用負載均衡設(shè)備的API并存入負載均衡設(shè)備的表內(nèi),根據(jù)預(yù)定義,不同的灰度標(biāo)志狀態(tài)代表負載均衡設(shè)備執(zhí)行不同的分流策略。
灰度標(biāo)志狀態(tài)有4種狀態(tài):
客戶端+資源包模式(手機APP類應(yīng)用)
總體方案如下圖:
主要分為以下幾個步驟:
·生成白名單:工作人員從應(yīng)用系統(tǒng)后管導(dǎo)入白名單,白名單存入業(yè)務(wù)系統(tǒng),此時白名單并未生效。
·部署平臺執(zhí)行灰度發(fā)布操作:在灰度發(fā)布之前調(diào)用F5接口,更新F5灰度標(biāo)志為C,此時阻止新交易發(fā)送至新版本所在服務(wù)器。
·部署平臺開始發(fā)布新版本服務(wù),發(fā)布完成后部署平臺調(diào)用F5接口更新F5灰度標(biāo)志為B,并向業(yè)務(wù)系統(tǒng)發(fā)送接口,更新白名單為可用。
·客戶端發(fā)送版本查詢交易,服務(wù)方根據(jù)白名單返回對應(yīng)版本信息以及灰度特征碼COOKIE至請求方。
·F5根據(jù)客戶端請求交易中的灰度特征碼對交易進行路由。
·部署平臺執(zhí)行灰度同步操作:在灰度同步之前調(diào)用F5接口,更新F5灰度標(biāo)志為D,此時新交易全部發(fā)送至灰度版所在服務(wù)器;部署平臺開始同步新版本服務(wù),同步·完成后部署平臺調(diào)用F5接口更新F5灰度標(biāo)志為A,此時F5正常分配路由。
·撤銷灰度版本:部署平臺執(zhí)行灰度撤銷操作,在灰度撤銷之前調(diào)用F5接口,更新F5灰度標(biāo)志為C,此時新交易全部發(fā)送至常規(guī)版所在服務(wù)器;部署平臺開始撤銷新版本服務(wù),撤銷完成后部署平臺調(diào)用F5接口更新F5灰度標(biāo)志為A,此時F5正常分配路由。
·無客戶端模式(Web瀏覽器類應(yīng)用)
·總體方案如下圖:
無客戶端模式與客戶端模式步驟基本相同,區(qū)別只是在于第四步,無客戶端模式會在用戶進行登錄交易時進行白名單匹配。
03F5 配置
以F5的視角看,X用戶灰度發(fā)布的整體邏輯如下:
灰度標(biāo)示保存在F5的data_group中,部署平臺通過REST API控制F5設(shè)備上的灰度標(biāo)示。
F5的分發(fā)邏輯由以下iRule實現(xiàn):
修改F5灰度狀態(tài)標(biāo)示data_group的API示例如下:
API路徑:
https://x.x.x.x/mgmt/tm/ltm/data-group/internal/hd_data_group
API方法:PATCH
API Body:
04 結(jié)語
本文通過一個具體案例像大家介紹了F5灰度發(fā)布解決方案的實際應(yīng)用場景,希望能對大家有所啟發(fā),如果您的企業(yè)或組織也正在或準(zhǔn)備使用灰度發(fā)布技術(shù),可以參考本文所提到的案例,也歡迎您聯(lián)系F5,進行更多的交流和探討。