蓝绿部署、A/B测试以及灰度发布
過(guò)去的10年里,很多大公司都在使用藍(lán)綠部署,安全、可靠是這種部署方式的特點(diǎn)。藍(lán)綠部署雖然算不上”Sliver Bullet“,但確實(shí)很實(shí)用。在有關(guān)于“微服務(wù)”、“DevOps”、“Cloud-native”的討論中,藍(lán)綠部署、A/B測(cè)試、灰度發(fā)布,這三種部署方式往往同時(shí)出鏡。
那么問(wèn)題來(lái)了,藍(lán)綠部署、A/B測(cè)試、灰度發(fā)布,這三者之間究竟有何不同?
藍(lán)綠部署
Martin Flower曾在文章中闡述了藍(lán)綠部署的整體要點(diǎn),建議大家看看。
基本上,藍(lán)綠部署是一種以可預(yù)測(cè)的方式發(fā)布應(yīng)用的技術(shù),目的是減少發(fā)布過(guò)程中服務(wù)停止的時(shí)間。
簡(jiǎn)單來(lái)說(shuō),你需要準(zhǔn)備兩個(gè)相同的環(huán)境(基礎(chǔ)架構(gòu)),在藍(lán)色環(huán)境運(yùn)行當(dāng)前生產(chǎn)環(huán)境中的應(yīng)用,也就是舊版本應(yīng)用,如圖中App1 version1、App2 version1、App3 version3。
當(dāng)你想要升級(jí)App2到version2,在藍(lán)色環(huán)境中進(jìn)行操作,即部署新版本應(yīng)用,并進(jìn)行測(cè)試。如果測(cè)試沒(méi)問(wèn)題,就可以把負(fù)載均衡器/反向代理/路由指向藍(lán)色環(huán)境了。
隨后你需要監(jiān)測(cè)新版本應(yīng)用,也就是App2 version2是否有故障和異常。如果運(yùn)行良好,就可以刪除App2 version1使用的資源。如果運(yùn)行出現(xiàn)了問(wèn)題,你可以通過(guò)負(fù)載均衡器指向快速回滾到綠色環(huán)境。
理論上聽(tīng)起來(lái)很棒,但還是要注意一些細(xì)節(jié):
當(dāng)你切換到藍(lán)色環(huán)境時(shí),需要妥當(dāng)處理未完成的業(yè)務(wù)和新的業(yè)務(wù)。如果你的數(shù)據(jù)庫(kù)后端無(wú)法處理,會(huì)是一個(gè)比較麻煩的問(wèn)題;
有可能會(huì)出現(xiàn)需要同時(shí)處理“微服務(wù)架構(gòu)應(yīng)用”和“傳統(tǒng)架構(gòu)應(yīng)用”的情況,如果在藍(lán)綠部署中協(xié)調(diào)不好這兩者,還是有可能導(dǎo)致服務(wù)停止的;
需要提前考慮數(shù)據(jù)庫(kù)與應(yīng)用部署同步遷移/回滾的問(wèn)題;
藍(lán)綠部署需要有基礎(chǔ)設(shè)施支持
在非隔離基礎(chǔ)架構(gòu)(VM、Docker等)上執(zhí)行藍(lán)綠部署,藍(lán)色環(huán)境和綠色環(huán)境有被摧毀的風(fēng)險(xiǎn)
A/B Testing
A/B測(cè)試跟藍(lán)綠部署完全是兩碼事。
A/B測(cè)試是用來(lái)測(cè)試應(yīng)用功能表現(xiàn)的方法,例如可用性、受歡迎程度、可見(jiàn)性等等。A/B測(cè)試通常用在應(yīng)用的前端上,不過(guò)當(dāng)然需要后端來(lái)支持。
A/B測(cè)試與藍(lán)綠部署的區(qū)別在于,A/B測(cè)試目的在于通過(guò)科學(xué)的實(shí)驗(yàn)設(shè)計(jì)、采樣樣本代表性、流量分割與小流量測(cè)試等方式來(lái)獲得具有代表性的實(shí)驗(yàn)結(jié)論,并確信該結(jié)論在推廣到全部流量可信;藍(lán)綠部署的目的是安全穩(wěn)定地發(fā)布新版本應(yīng)用,并在必要時(shí)回滾。
A/B測(cè)試和藍(lán)綠部署可以同時(shí)使用。
灰度發(fā)布/金絲雀發(fā)布
灰度發(fā)布是在原有版本可用的情況下,同時(shí)部署一個(gè)新版本應(yīng)用作為“金絲雀”(金絲雀對(duì)瓦斯極敏感,礦井工人攜帶金絲雀,以便及時(shí)發(fā)發(fā)現(xiàn)危險(xiǎn)),測(cè)試新版本的性能和表現(xiàn),以保障整體系統(tǒng)穩(wěn)定的情況下,盡早發(fā)現(xiàn)、調(diào)整問(wèn)題。
灰度發(fā)布/金絲雀發(fā)布由以下幾個(gè)步驟組成:
- 準(zhǔn)備好部署各個(gè)階段的工件,包括:構(gòu)建工件,測(cè)試腳本,配置文件和部署清單文件。
- 從負(fù)載均衡列表中移除掉“金絲雀”服務(wù)器。
- 升級(jí)“金絲雀”應(yīng)用(排掉原有流量并進(jìn)行部署)。
- 對(duì)應(yīng)用進(jìn)行自動(dòng)化測(cè)試。
- 將“金絲雀”服務(wù)器重新添加到負(fù)載均衡列表中(連通性和健康檢查)。
- 如果“金絲雀”在線使用測(cè)試成功,升級(jí)剩余的其他服務(wù)器。(否則就回滾)
總結(jié)
對(duì)于云計(jì)算來(lái)說(shuō),以上三種策略都是可用的。不難想象,通過(guò)docker和kubernetes,我們可以很簡(jiǎn)單的實(shí)現(xiàn)藍(lán)綠部署、A/B測(cè)試、灰度發(fā)布……比如好雨云,深度整合Docker和Kubernetes,提供給用戶包括代碼滾動(dòng)上線、一鍵代碼回滾等功能和特性在內(nèi)的強(qiáng)大的CI/CD體驗(yàn):)
Author Christian Posta
Trans by 好雨科技
總結(jié)
以上是生活随笔為你收集整理的蓝绿部署、A/B测试以及灰度发布的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 服务器系统巡查登记表,网络信息中心机房信
- 下一篇: 106短信简单描述与验证码短信接口介绍