GitLab的基礎使用-常見的代碼部署方式
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
一.藍綠部署
1>.什么是藍綠部署
藍綠部署指的是不停老版本代碼(不影響上一個版本訪問),而是在另外一套環境部署新版本然后進行測試,測試通過后將用戶流量切到新版本。
優點:
業務無終端,升級風險相對較小。
2>.藍綠部署具體過程
1>.當前版本業務正常訪問(V1);
2>.在另外一套環境部署新代碼(V2),代碼可能是增加了功能或者修復了某些Bug;
3>.測試通過之后將用戶請求流量切到新版本環境;
4>.觀察一段時間,如有異常直接切換舊版本;
5>.下次升級,將舊版本升級到新版本(V3);
3>.藍綠部署使用場景
1>.不停止老版本,額外部署一套新版本,等測試發現新版OK后,刪除老版本;
2>.藍綠發布時一種用於升級與更新的發布策略,部署的最小維度時容器,而發布的最小維度是應用;
3>.藍綠發布對於增量升級有比較好的支持,但是對於設計數據表結構變更等等不可逆的升級,並不完全合適藍綠發布來實現,要結合一些業務的邏輯以及數據遷移的回滾的策略才可以完全滿足需求。
二.金絲雀發布
1>.什么是金絲雀發布
金絲雀發布也叫灰度發布,是指在黑與白之間,能夠平滑過渡的一種發布方式,灰度發布時增量發布的一種類型,恢復發布時原有版本可用的情況下,使用部署一個新版本作為"金絲雀"(小白鼠),測試新版本的性能和表現,以保證系統穩定的情況下,盡早發現,調整問題。
"金絲雀"的由來:
17世紀,英國礦井工人發現,金絲雀對瓦斯這種氣體十分敏感。空氣中哪怕有極其微量的瓦斯,金絲雀也會停止唱歌。當瓦斯含量超過一定限度時,雖然魯鈍的人類毫無察覺,金絲雀早毒發身亡。
當時在狂勁設備相對簡陋的條件下,工人們每次下井都會帶上一直小金絲雀作為"瓦斯檢測指標",以便在危險狀態下緊急撤離。
2>.金絲雀(灰度)發布具體過程
1>.准備號部署各個階段的工件,包括構建工件,測試腳本,配置文件和部署清單文件; 2>.從負載均衡列表中移除"金絲雀"服務器; 3>.升級"金絲雀"應用(排掉原有流量並進行部署); 4>.對應用進行自動化測試; 5>.將"金絲雀"服務器重新添加到負載均衡列表中(連通性和健康檢查); 6>.如果"金絲雀"在線使用測試成功,升級剩余的其它服務器,否則就回滾;
溫馨提示:
灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現,調整問題,以保證其影響度。
3>.灰度發布(金絲雀部署)使用場景
1>.不停止老版本,額外搞一套新版本,不同版本應用共存; 2>.灰度發布中,常常安裝用戶設置路由權重,例如"90%"的用戶維持使用老版本,10%的用戶嘗鮮新版本; 3>.經常與A/B測試一起使用,用於測試選擇多種方案。
三.滾動發布
滾動發布一般時取出一個或者多個服務器停止服務,執行更新,並重新將其投入使用。周而復始,直到集群中所有的實例都更新成新版本。
四.A/B測試
A/B測試也是同時運行兩個APP環境,但是藍綠部署完全是兩碼事;
A/B測試是用來測試應用功能表現的方法,例如可用性,受歡迎程度,可見性等等;
藍綠部署的目的是安全穩定地發布新版本應用,並在必要時回滾;
綜上所述,藍綠部署是一套正式環境在線,而A/B測試是兩套正式環境在線。
五.