什么是藍(lán)綠部署?藍(lán)綠部署是一種軟件發(fā)布模型,可將流量從當(dāng)前版本轉(zhuǎn)移到新版本。它涉及使用兩個(gè)幾乎相同的生產(chǎn)環(huán)境,稱為藍(lán)色和綠色。只有一個(gè)環(huán)境保持活動(dòng)狀態(tài)并處理所有生產(chǎn)流量。
組織使用藍(lán)綠部署等漸進(jìn)式交付策略來避免停機(jī)并最大限度地降低更新期間的風(fēng)險(xiǎn)。現(xiàn)代開發(fā)方法優(yōu)先考慮速度、質(zhì)量、安全性和可靠性。為了滿足這些標(biāo)準(zhǔn),組織利用持續(xù)集成和持續(xù)部署 (CI/CD) 管道來實(shí)現(xiàn)高度自動(dòng)化和高效的流程。
CI/CD 管道有助于滿足軟件測(cè)試和穩(wěn)定性標(biāo)準(zhǔn),同時(shí)經(jīng)常發(fā)布軟件更新以確保積極的客戶體驗(yàn)。藍(lán)綠部署可幫助組織在不影響用戶體驗(yàn)的情況下不斷改進(jìn)其產(chǎn)品。
自動(dòng)化部署需要將軟件從測(cè)試環(huán)境轉(zhuǎn)移到生產(chǎn)環(huán)境,最理想的情況是盡量減少市中心。藍(lán)綠部署有兩個(gè)幾乎相同的環(huán)境,允許更容易地在測(cè)試和實(shí)時(shí)環(huán)境之間轉(zhuǎn)換。
測(cè)試在“綠色”環(huán)境中進(jìn)行,而“藍(lán)色”環(huán)境承載實(shí)時(shí)應(yīng)用程序。完成測(cè)試后,將流量重定向到測(cè)試環(huán)境,該環(huán)境現(xiàn)在成為生產(chǎn)環(huán)境,而藍(lán)色環(huán)境成為新的測(cè)試環(huán)境。可以使用傳統(tǒng)的負(fù)載均衡器或服務(wù)網(wǎng)格等更先進(jìn)的技術(shù)在環(huán)境之間路由流量。
這種方法支持快速回滾,允許您在切換到綠色(新)環(huán)境時(shí)將藍(lán)色環(huán)境作為備份。例如,您可以在測(cè)試期間以只讀模式運(yùn)行您的應(yīng)用程序,并在運(yùn)行時(shí)切換到讀寫模式。這兩個(gè)環(huán)境應(yīng)盡可能相似,以確保無縫過渡。他們可以共享一個(gè) IP 地址。
當(dāng)環(huán)境穩(wěn)定后,就可以開始測(cè)試了。此階段涉及將綠色環(huán)境部署為暫存環(huán)境。您在綠色環(huán)境中部署下一個(gè)版本,藍(lán)色成為備份。這種方法可以讓您持續(xù)測(cè)試災(zāi)難恢復(fù)系統(tǒng)。
以下是藍(lán)綠部署方法的主要優(yōu)點(diǎn)。
擁有備份系統(tǒng)
藍(lán)綠部署提供了一個(gè)可靠的備份系統(tǒng),其中一臺(tái)服務(wù)器始終處于待機(jī)狀態(tài),以便在實(shí)時(shí)系統(tǒng)出現(xiàn)故障時(shí)接管。這種強(qiáng)大的風(fēng)險(xiǎn)管理策略是組織選擇藍(lán)綠部署的原因。當(dāng)一臺(tái)服務(wù)器處于活動(dòng)狀態(tài)時(shí),可能會(huì)出現(xiàn)與新軟件更新無關(guān)的問題——這可能表明存在惡意軟件或攻擊者以主機(jī)服務(wù)器為目標(biāo)。
藍(lán)綠部署需要復(fù)制所有應(yīng)用程序基礎(chǔ)設(shè)施,允許后端開發(fā)人員快速將流量重定向到備用版本。當(dāng)您修復(fù)另一臺(tái)服務(wù)器上的問題時(shí),您的組織可以保持運(yùn)作并提供服務(wù)。這個(gè)備份系統(tǒng)給你額外的信心。
快速發(fā)布
藍(lán)綠部署是產(chǎn)品所有者使用 CI/CD 框架將軟件發(fā)布到生產(chǎn)環(huán)境的好方法。DevOps 團(tuán)隊(duì)可以隨時(shí)發(fā)布更新,而中斷最少——實(shí)施發(fā)布通常就像更改路由一樣簡單。不涉及停機(jī)時(shí)間,因此您的部署不會(huì)對(duì)您的用戶產(chǎn)生負(fù)面影響。
團(tuán)隊(duì)可以在不安排額外時(shí)間或考慮因停機(jī)造成的收入損失的情況下推送版本。他們可以在不匆忙的情況下正確實(shí)施更新,從而最大限度地減少壓力和錯(cuò)誤。
輕松回滾
與發(fā)布一樣,撤消或回滾更新既簡單又快速。藍(lán)綠部署有兩個(gè)生產(chǎn)就緒環(huán)境,允許您在實(shí)時(shí)環(huán)境出現(xiàn)問題時(shí)快速切換到更穩(wěn)定的備份環(huán)境。識(shí)別生產(chǎn)中問題的常用方法是Kubernetes 健康檢查。
快速回滾降低了在生產(chǎn)環(huán)境中進(jìn)行試驗(yàn)的相關(guān)風(fēng)險(xiǎn)。團(tuán)隊(duì)可以通過將流量路由回備用環(huán)境來快速解決問題。這里的主要風(fēng)險(xiǎn)是用戶交易的損失,但可以管理這種風(fēng)險(xiǎn)。您可以在切換期間暫時(shí)將應(yīng)用程序設(shè)置為只讀。或者,您可以在等待事務(wù)在實(shí)時(shí)環(huán)境中完成時(shí)使用負(fù)載均衡器實(shí)施滾動(dòng)切換。
零停機(jī)
由于應(yīng)用程序變得不可用,停機(jī)可能會(huì)導(dǎo)致業(yè)務(wù)生產(chǎn)力下降,并對(duì)最終用戶的體驗(yàn)產(chǎn)生負(fù)面影響。對(duì)于關(guān)鍵服務(wù),停機(jī)成本可能高得令人望而卻步,尤其是當(dāng)它影響到具有大量交易的大型在線平臺(tái)時(shí)。
藍(lán)綠部署使您的組織可以避免通常與解決問題相關(guān)的停機(jī)時(shí)間。您可以在用戶不注意的情況下將用戶切換到備份環(huán)境,同時(shí)修復(fù)重復(fù)出現(xiàn)的問題或執(zhí)行維護(hù)檢查。其他部署模型通常需要在流量較低的非高峰時(shí)段進(jìn)行修復(fù)和升級(jí)。即使需求較低,停機(jī)時(shí)間也會(huì)給客戶帶來不便。
在現(xiàn)實(shí)環(huán)境中測(cè)試
生產(chǎn)測(cè)試允許您在服務(wù)器上運(yùn)行時(shí)檢查產(chǎn)品的功能。它允許您從 UI 中查看軟件的功能。但是,當(dāng)您在修復(fù)錯(cuò)誤之前發(fā)現(xiàn)錯(cuò)誤時(shí),這通常很困難并且會(huì)影響用戶體驗(yàn)。藍(lán)綠部署允許您在非活動(dòng)服務(wù)器上測(cè)試產(chǎn)品,而用戶可以繼續(xù)訪問活動(dòng)服務(wù)器上的應(yīng)用程序。
這種方法最大限度地降低了生產(chǎn)過程中出現(xiàn)意外問題的風(fēng)險(xiǎn),因?yàn)槟梢栽谟脩舨恢榈那闆r下在幾乎相同的環(huán)境中測(cè)試和消除它們。在生產(chǎn)中進(jìn)行測(cè)試可以讓您的組織保持其專業(yè)性和公眾聲譽(yù)。
盡管藍(lán)綠部署有各種好處,但它們也可能涉及一些額外的挑戰(zhàn)和成本。
基礎(chǔ)設(shè)施的復(fù)雜性
決定藍(lán)綠部署過程需要權(quán)衡取舍。盡管您消除了停機(jī)時(shí)間,但這些部署的管理起來可能很復(fù)雜,因?yàn)樗鼈冃枰掷m(xù)集成服務(wù)器和不斷重新路由網(wǎng)絡(luò)流量。
例如,當(dāng)您為“藍(lán)色”實(shí)例提供服務(wù)時(shí),持續(xù)交付管道必須將流量推向綠色環(huán)境(如果您已經(jīng)切換,反之亦然)。一些部署平臺(tái)提供了解決方案,但這是一個(gè)需要考慮的重要挑戰(zhàn)。
部署的復(fù)雜性
理想情況下,藍(lán)綠部署允許您在發(fā)布出現(xiàn)問題時(shí)安全輕松地回滾更改。實(shí)際上,并不總是可以實(shí)現(xiàn)簡單的回滾。例如,如果多個(gè)應(yīng)用程序共享一個(gè)數(shù)據(jù)庫并且版本具有模式依賴性,則您可能無法在不遷移模式的情況下將其回滾。
雖然您通常可以處理這些問題,但與停機(jī)的標(biāo)準(zhǔn)部署相比,它們?cè)黾恿烁嗟膹?fù)雜性。藍(lán)綠部署有更多的活動(dòng)部件和更多需要自動(dòng)化的東西,從而提供了更多出錯(cuò)的機(jī)會(huì)。您必須投資 CI/CD 技能和工具來幫助管理這種復(fù)雜性。
擴(kuò)展和成本考慮
當(dāng)您維護(hù)一個(gè)應(yīng)用程序的多個(gè)實(shí)例時(shí),重要的是要考慮與托管第二個(gè)生產(chǎn)環(huán)境相關(guān)的額外成本。對(duì)于某些用例,成本可能超過收益。
例如,如果您使用微服務(wù)架構(gòu)或托管多個(gè)應(yīng)用程序,成本可能會(huì)急劇增加。在這種情況下,您可能更喜歡藍(lán)綠部署的修改形式,它可以消除停機(jī)時(shí)間,而無需支付托管兩個(gè)環(huán)境的全部成本(即,在評(píng)估部署后刪除舊版本)。