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