天天看點

微服務開發及部署_彈性微服務的4種部署政策

微服務開發及部署_彈性微服務的4種部署政策

四種政策

與傳統架構相比,使用微服務建構應用程式可為開發人員提供更高的速度和靈活性。但是,每次代碼更改仍會招緻風險,如果未發現和解決代碼品質問題,則為潛在的失敗奠定了基礎。為了減輕這些風險,應用程式團隊應實施現代的雲原生路由政策,以使其更易于測試危險并確定應用程式已真正準備好在生産環境中部署。

以下四種部署政策使用路由技術來安全地引入新服務和功能,測試功能并進行疊代改進,識别和消除漏洞等等。這些方法共同構成了一個虛拟工具箱,應用程式團隊可以使用這些工具來降低在開發和部署微服務驅動的應用程式期間的風險。了解它們的異同是了解如何在自己的環境中充分利用它們的關鍵。

金絲雀部署

金絲雀部署是根據将實際鳥類送入煤礦以檢視空氣品質是否對人類安全而言的曆史慣例而命名的,它是一種以最小的影響或風險來測試實際生産部署的方法。所謂的canary是服務的候選版本,它捕獲傳入請求的某些子集百分比(例如1%)以嘗試新功能或建構。然後,團隊可以檢查結果,如果一切順利,請逐漸将部署增加到100%的伺服器或節點。如果不?在檢查和調試有問題的代碼時,可以從金絲雀部署中快速重定向流量。

Canary部署可以通過與負責處理入站使用者流量的邊緣路由元件的內建來實作。例如,在Kubernetes環境中,金絲雀部署可以利用入口控制器配置為穩定和金絲雀部署配置設定指定百分比的流量請求。通過這種方式路由流量,可以確定新服務在收到完整的部署之前有機會證明自己。如果沒有,他們将被送回以解決問題,然後在準備好時進行另一輪的Canary部署測試。

A/B測試

A / B測試類似于金絲雀部署,但有一個重要差別。雖然金絲雀的部署往往側重于發現錯誤和性能瓶頸,但A / B測試側重于衡量使用者對新應用程式功能的接受程度。例如,開發人員可能想知道新功能是否在使用者中流行,它們是否易于發現或UI是否正常運作。

此模式使用軟體路由來激活和測試具有不同流量細分的特定功能,進而将新功能暴露于指定百分比的流量或有限的組。A和B路由段可能會将流量發送到軟體的不同版本,或者服務執行個體甚至可能使用相同的軟體版本,但具有不同的配置屬性(在協調器或其他地方指定)。

藍綠色部署

藍綠色部署模式涉及并行操作兩個生産環境:一個用于目前穩定發行版(藍色),一個用于上一個版本并在下一個發行版上執行測試(綠色)。這種政策使更新的軟體版本能夠以易于重複的方式釋出。Devops團隊可以使用此技術通過CI / CD管道自動執行新版本的釋出。

使用藍綠色政策,開發人員可以在目前處理生産流量的現有執行個體的旁邊部署新的服務版本。CI / CD管道應設定為執行自動煙霧測試,以驗證新版本的關鍵功能是否成功。一旦新服務通過了最後的測試,就可以使用軟體路由無縫地管理從藍色到綠色的流量切換,進而安全,自動地将流量重定向到它。同樣重要的是,對于關鍵的,最新的問題,如果出現關鍵問題,則很容易将部署回退到藍色版本。

交通陰影

流量陰影類似于藍綠色部署,但是路由技術沒有使用綜合測試來驗證“綠色”環境,而是複制了所有傳入的生産流量并将其鏡像到尚未公開的單獨測試部署。是以,流量屏蔽可以根據真實流量準确地描述如果部署新版本會發生什麼情況。同時,流量屏蔽確定測試不會影響實際生産。實際上,開發人員可以選擇将一定百分比的請求複制到測試服務,然後他們可以在其中執行內建測試和性能基準測試(手動或在自動CI / CD管道的架構内)。

企業開發人員已經利用了一系列旨在確定新的應用程式代碼滿足某些要求的測試技術。例如,單元測試和功能測試仍然是代碼必須清除的基本措施。但是,基于微服務的體系結構的性質使端到端內建測試比以往任何時候都更加重要。考慮到微服務體系結構固有的互相依賴關系和長期接口漂移的風險,綜合測試仍然有價值,但最終将無法準确表示生産環境中服務之間的所有互動。

藍四種政策一種目标

這些路由技術都提供了獨特但又相關的方法來幫助發現,緩解和測試基于微服務的應用程式中的缺陷。它們是解決錯誤,性能問題和安全漏洞的有效工具,尤其是在作為端對端連續內建和傳遞(CI / CD)管道的一部分進行部署時。

哪種方法最适合您自己的情況,在很大程度上取決于最關鍵的問題。例如,主要的UI檢修可以從A / B測試中大大受益,而藍綠色部署對于檢視新功能可能如何影響現有資料存儲的性能可能是無價的。

通常,這些技術的組合可能會提供最佳的覆寫範圍。但是,重要的是要考慮每個元件與您現有的開發模型的內建程度。例如,單個功能的Canary部署比完整版本的藍綠色部署更适合于靈活開發方法。而且,盡管流量影子可以很好地了解應用程式性能的預部署,但實作起來既困難又耗時,而且在計算資源方面也很昂貴。

無論您采用哪種技術,諸如此類的路由技術都可能是軟體開發過程中不可估量的一部分,尤其是在該行業從傳統的單片應用程式向基于微服務的雲原生系統轉移的過程中。通過應用一種,部分或全部這些技術,同時牢記它們的特定優勢,應用程式團隊可以更好地確定其項目的完整性和成功性,并更有信心地投入生産。

作者:Manuel Zapf

原文連結:https://www.infoworld.com/article/3565750/4-deployment-strategies-for-resilient-microservices.html

龍測,模型驅動的自動化測試平台。

畫流程圖、積木圖自動生成測試代碼的自動化測試專家!

測試體驗官網:

https://www.dragontesting.com