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