蓝绿部署滚动部署金丝雀发布(灰度发布)A/B测试
在一般情況下,升級服務器端應用,需要將應用源碼或程序包上傳到服務器,然后停止掉老版本服務,再啟動新版本。但是這種簡單的發布方式存在兩個問題,一方面,在新版本升級過程中,服務是暫時中斷的,另一方面,如果新版本有BUG,升級失敗,回滾起來也非常麻煩,容易造成更長時間的服務不可用。為了解決這些(服務中斷、失敗回滾、……)問題,人們研究出了多種發布策略。
部署
1、藍綠部署 – BlueGreenDeployment
It’s basically a technique for?releasing your application in a predictable?manner with an goal of?reducing any downtime associated with a release. It’s a quick way to prime your app before releasing, and also quickly roll back if you find issues.
藍綠部署的目的是——減少因發布導致的服務中斷時間,同時它也支持發布失敗時的快速回滾。
藍綠部署需要在發布過程中,同時運行兩套程序。對硬件的要求也是當前所需的2倍,比如當前運行時,需要10臺服務器支撐業務,那么使用藍綠部署,你就需要購置20臺服務器。
2、滾動發布/更新
所謂滾動發布,就是在發布過程中,并不一下子啟動所有新版本,而是先啟動一臺新版本,再停止一臺老版本,然后再啟動一臺新版本,再停止一臺老版本,直到全部發布完成,這樣的話,如果當前需要10臺服務器支撐服務,那么升級過程中一共只需要11臺就行了。
滾動發布能夠解決掉藍綠部署時對硬件要求增倍的問題。
但是滾動發布有一個問題,在開始滾動發布后,流量會直接流向已經啟動起來的新版本,但是這個時候,新版本是不一定穩定/符合預期的,可能需要進一步的測試才能確認。那么在滾動發布期間,整個系統就處于較為不穩定的狀態,如果發現了問題,也比較難以確定是新版本還是老版本造成的問題。
為了解決這個問題,我們需要為滾動發布實現流量控制能力。也就是下面的金絲雀發布/灰度發布。
2.1、金絲雀發布 – CanaryRelease (也叫灰度發布)
17世紀,英國礦井工人發現,金絲雀對瓦斯這種氣體十分敏感。空氣中哪怕有極其微量的瓦斯,金絲雀也會停止歌唱;而當瓦斯含量超過一定限度時,雖然人類毫無察覺,金絲雀卻早已毒發身亡。當時在采礦設備相對簡陋的條件下,工人們每次下井都會帶上一只金絲雀作為“瓦斯檢測指標”,以便在危險狀況下緊急撤離。
金絲雀發布(Canary Releases)名稱的由來金絲雀發布指的是在生產環境中分階段逐步更新后端應用的版本(需要具備流量控制能力),在小范圍驗證符合預期之后,再推廣至整個生產環境。
金絲雀發布的好處在于可以用真實環境測試新版本,當新版本存在問題時最多只影響部分用戶,且支持安全快速的回滾策略(將路由到新版本上的流量切換到其它的老版本機器上即可)。
但金絲雀發布并不是完美的,如果新版本有問題,那么路由到新版本的小部分流量會有問題,就跟礦井中毒發身亡的金絲雀一樣。這種做法在非常敏感的業務中幾乎無法接受,但是當系統復雜的到一定程度,錯誤無法完全避免的時候,為了避免出現更大的問題,犧牲一小部分流量,就可以將大部分錯誤的影響控制在一定范圍內。
測試
A/B測試 – A/B Testing
首先需要明確的是,A/B測試和藍綠部署以及金絲雀發布,完全是不同類型的概念。
藍綠部署和金絲雀發布是發布策略,目標是確保新上線的系統穩定,關注的是新系統的BUG、隱患。
A/B測試是效果測試(一般用來驗證某個想法是否符合預期),同一時間有多個版本的服務對外服務,這些服務都是經過足夠測試,達到了上線標準的服務,有差異但是沒有新舊之分。它關注的是不同版本的服務的實際效果,譬如說轉化率、訂單情況等。
A/B測試時,線上同時運行多個版本的服務,這些服務通常會有一些體驗上的差異,譬如說頁面樣式、顏色、操作流程不同。相關人員通過分析各個版本服務的實際效果,以選出效果最好的版本。
參考鏈接:
BlueGreenDeployment
CanaryRelease
Continuous Integration
Continuous Delivery
Blue-green Deployments, A/B Testing, and Canary Releases – Software Blog
藍綠部署、金絲雀發布(灰度發布)、A/B測試的準確定義By李佶澳
部署策略對比:藍綠部署、金絲雀發布及其他-InfoQ
Win-Win Deployment Strategies for Modern Apps - Rollbar
http://blog.lfyzjck.com/14807508681806.html
Kubernetes常見部署方案--滾動更新、重新創建、藍綠、金絲雀 - gao88 - 博客園
藍綠部署、金絲雀發布(灰度發布)、AB測試||沉潛飛動|君子藏器于身,待時而動。
第十六章 灰度發布(直譯:金絲雀部署)
https://jdsre.gitbook.io/sre2/di-shi-liu-zhang
灰度發布、滾動發布、藍綠部署和兩種測試方法 | 文章 | BEWINDOWEB
藍綠部署、A/B測試以及灰度發布
https://www.v2ex.com/t/344341
藍綠部署、金絲雀發布(灰度發布)、A/B測試的準確定義 - 網絡課程 - 博客園
微服務部署:藍綠部署、滾動部署、灰度發布、金絲雀發布 - 簡書
金絲雀發布、滾動發布、藍綠發布到底有什么差別?關鍵點是什么?
運維派-Linux運維技術社區,Linux教程,云計算學習平臺,Devops工具下載站
一文搞懂藍綠發布、灰度發布和滾動發布_李振良的技術博客的技術博客_51CTO博客_藍綠發布部署
什么是藍綠部署、滾動發布和灰度發布? - 知乎
Colorful deployments: An introduction to blue-green, canary, and rolling deployments
Intro to blue-green, canary, and rolling deployments on OpenShift | Opensource.com
Blue Green Deployments vs Rolling Deployments? - Stack Overflow
總結
以上是生活随笔為你收集整理的蓝绿部署滚动部署金丝雀发布(灰度发布)A/B测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何炒股票入门知识 怎么炒股票的入门知识
- 下一篇: 意外医疗保险范围