3 種發佈策略 - 基於 API 的基礎架構

部署與發佈

在決定發佈策略之前,我們必須區分兩個重要概念:部署和發佈。部署涉及將功能完全推進生產環境,因爲您現在在系統中運行了一個進程。儘管已經部署,但新功能並未通過與生產系統的交互活躍或執行。

有各種方法可以實現此分離。發佈涉及以受控的方式激活新功能,從而允許您控制引入新功能的風險。Thoughtworks Technology Radar 對部署和發佈之間的區別有很好的解釋:

對於許多組織來說,實施持續交付仍然是一個挑戰,突出使用諸如將部署與發佈分離等有用技術仍然很重要。我們建議在指涉將應用程序組件或基礎架構的更改部署時嚴格使用術語 “部署”。應該在功能更改對最終用戶產生業務影響時使用術語 “發佈”。通過使用功能切換和靜默發佈等技術,我們可以在不發佈功能的情況下更頻繁地部署更改到生產系統。更頻繁的部署減少了與更改相關的風險,同時業務利益相關者保留了對何時向最終用戶發佈功能的控制。

發佈策略

一旦您充分區分了部署和發佈,現在可以考慮控制功能逐步發佈的機制。選擇發佈策略時,重要的是要選擇一種允許您在生產環境中降低風險的策略。通過對小部分流量進行測試或實驗,並驗證結果來降低風險。當結果成功時,就會觸發對所有流量的發佈。某些策略更適合特定情況,並需要不同程度的額外服務和基礎架構。讓我們探討一些在基於 API 的基礎架構中受歡迎的選項。

金絲雀發佈

金絲雀發佈引入了軟件的新版本,並將少量流量引導到金絲雀。流量在舊服務和新服務之間的分配概念已經建立,這將取決於目標平臺。

在服務網格和 API 網關中,流量轉移使得可以逐漸將流量從目標服務的一個版本轉移到另一個版本。例如,可以將新版本 v1.1 的服務部署在原始版本 v1.0 的旁邊。流量轉移使您可以通過首先只將一小部分用戶流量(例如 1%)路由到 v1.1,然後隨着時間的推移將所有流量轉移到新服務,對新服務進行金絲雀測試或發佈。

這使您可以監視新服務,並查找技術問題,例如增加的延遲或錯誤率,還可以查找期望的業務影響,例如關鍵性能指標(如客戶轉化率或平均購物結賬價值)的增加。流量分割使您能夠通過在多個服務版本之間分配流向目標服務的流量來運行 A/B 測試或多變量測試。

流量鏡像

除了使用流量分割來運行實驗之外,您還可以使用流量鏡像來複制或複製流量,並將其發送到一個或一系列附加位置。通常情況下,使用流量鏡像時,複製的請求的結果不會返回給調用服務或最終用戶。相反,將對生成的結果進行越帶評估,例如比較重構和現有服務生成的結果,或者觀察一系列操作屬性,以觀察新服務版本處理請求時的響應延遲或所需 CPU。

使用流量鏡像使您能夠進行 “暗發佈” 或“暗發行”服務,其中用戶對新發布保持不知情,但您可以在內部觀察所需的效果。

藍綠部署

藍綠部署通常在使用路由器、網關或負載均衡器的架構中實現,在這些架構的後面有一個完整的藍環境和一個綠環境。當前的藍環境表示當前的生產環境,綠環境表示堆棧的下一個版本。在切換到實時流量之前,會對綠環境進行檢查,並在上線時將流量從藍環境切換到綠環境。藍環境現在處於 “關閉” 狀態,但如果發現問題,回滾會很快。下一個更改將從綠色轉到藍色,從第一個發佈開始進行交替。

由於其簡單性,藍綠部署效果很好,並且對於耦合的服務來說是更好的部署選項之一。對於持續存在的服務,管理起來也更容易,儘管在回滾事件中仍需要謹慎。它還需要雙倍數量的資源來能夠並行運行當前活動環境的冷備份。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/9wCRdENoJurFfeIs2tP4MQ