1. 程式人生 > >三種測試環境到生產環境部署的介紹

三種測試環境到生產環境部署的介紹

一、AB測試

A/B 測試跟藍綠部署完全是兩碼事。

A/B 測試是用來測試應用功能表現的方法,例如可用性、受歡迎程度、可見性等等。 A/B 測試通常用在應用的前端上,不過當然需要後端來支援。

A/B 測試與藍綠部署的區別在於, A/B 測試目的在於通過科學的實驗設計、取樣樣本代表性、流量分割與小流量測試等方式來獲得具有代表性的實驗結論,並確信該結論在推廣到全部流量可信;藍綠部署的目的是安全穩定地釋出新版本應用,並在必要時回滾。

A/B 測試和藍綠部署可以同時使用。

二、灰度釋出

1.灰度釋出(又名金絲雀釋出,金絲雀對瓦斯極敏感,礦井工人攜帶金絲雀,以便及時發發現危險)是指在黑與白之間,能夠平滑過渡的一種釋出方式。
在其上可以進行A/B testing,即讓一部分使用者繼續用產品特性A,一部分使用者開始用產品特性B,如果使用者對B沒有什麼反對意見,那麼逐步擴大範圍,把所有使用者都遷移到B上面來。
灰度釋出可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度。

2.灰度期:灰度釋出開始到結束期間的這一段時間,稱為灰度期。

3.灰度釋出/金絲雀釋出由以下幾個步驟組成:

準備好部署各個階段的工件,包括:構建工件,測試指令碼,配置檔案和部署清單檔案。
從負載均衡列表中移除掉“金絲雀”伺服器。
升級“金絲雀”應用(排掉原有流量並進行部署)。
對應用進行自動化測試。
將“金絲雀”伺服器重新新增到負載均衡列表中(連通性和健康檢查)。
如果“金絲雀”線上使用測試成功,升級剩餘的其他伺服器。(否則就回滾)

三、藍綠部署

特點:安全、可靠

藍綠部署是一種以可預測的方式釋出應用的技術,目的是減少釋出過程中服務停止的時間。

簡單來說,你需要準備兩個相同的環境(基礎架構),在藍色環境運行當前生產環境中的應用,也就是舊版本應用,

當你想要升級 App2 到 version2 ,在藍色環境中進行操作,即部署新版本應用,並進行測試。如果測試沒問題,就可以把負載均衡器/反向代理/路由指向藍色環境了。

隨後你需要監測新版本應用,也就是 App2 version2 是否有故障和異常。如果執行良好,就可以刪除 App2 version1 使用的資源。如果執行出現了問題,你可以通過負載均衡器指向快速回滾到綠色環境。

理論上聽起來很棒,但還是要注意一些細節:

當你切換到藍色環境時,需要妥當處理未完成的業務和新的業務。如果你的資料庫後端無法處理,會是一個比較麻煩的問題;

有可能會出現需要同時處理“微服務架構應用”和“傳統架構應用”的情況,如果在藍綠部署中協調不好這兩者,還是有可能導致服務停止的;

需要提前考慮資料庫與應用部署同步遷移 /回滾的問題;

藍綠部署需要有基礎設施支援

在非隔離基礎架構( VM 、 Docker 等)上執行藍綠部署,藍色環境和綠色環境有被摧毀的風險