過去的10年里,很多大公司都在使用
藍(lán)綠部署
,安全、可靠是這種部署方式的特點(diǎn)。藍(lán)綠部署
雖然算不上新技術(shù),但確實(shí)很實(shí)用。在有關(guān)于“微服務(wù)”、“DevOps”、“Cloud-native”的討論中,藍(lán)綠部署
、A/B測(cè)試
、灰度發(fā)布
,這三種部署方式往往同時(shí)出鏡。
藍(lán)綠部署
建議看看這個(gè)關(guān)于藍(lán)綠部署介紹的文章
基本上,藍(lán)綠部署是一種以可預(yù)測(cè)的方式發(fā)布應(yīng)用的技術(shù),目的是減少發(fā)布過程中服務(wù)停止的時(shí)間。
注意一些細(xì)節(jié):
當(dāng)你切換到藍(lán)色環(huán)境時(shí),需要妥當(dāng)處理未完成的業(yè)務(wù)和新的業(yè)務(wù)。如果你的數(shù)據(jù)庫(kù)后端無法處理,會(huì)是一個(gè)比較麻煩的問題;
有可能會(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)用部署同步遷移/回滾的問題;
藍(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è)試是用來測(cè)試應(yīng)用功能表現(xiàn)的方法,例如可用性、受歡迎程度、可見性等等。A/B測(cè)試通常用在應(yīng)用的前端上,不過當(dāng)然需要后端來支持。
A/B測(cè)試與藍(lán)綠部署的區(qū)別在于,A/B測(cè)試目的在于通過科學(xué)的實(shí)驗(yàn)設(shè)計(jì)、采樣樣本代表性、流量分割與小流量測(cè)試等方式來獲得具有代表性的實(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ā)現(xiàn)危險(xiǎn)),測(cè)試新版本的性能和表現(xiàn),以保障整體系統(tǒng)穩(wěn)定的情況下,盡早發(fā)現(xiàn)、調(diào)整問題。
灰度發(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ì)算來說,以上三種策略都是可用的。不難想象,通過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)