最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一文搞懂藍(lán)綠部署和金絲雀發(fā)布

2020-04-23 20:23 作者:Rancher_China  | 我要投稿

在之前關(guān)于CI/CD的文章深入了解CI/CD:工具、方法、環(huán)境、基礎(chǔ)架構(gòu)的全面指南中,我們簡單討論了藍(lán)綠部署和金絲雀發(fā)布以及它們在持續(xù)交付中所扮演的角色。這些都是十分有效的方法,能夠大大降低與應(yīng)用程序部署相關(guān)的風(fēng)險。所以,這篇文章我們來深入介紹藍(lán)綠部署和金絲雀發(fā)布。


藍(lán)綠部署和金絲雀發(fā)布通過讓IT人員可以在發(fā)布過程中發(fā)生問題時能夠還原到先前版本來減輕應(yīng)用程序部署的風(fēng)險。這兩個方法讓版本之間來回切換就像輕按開關(guān)一樣容易,并且可以自動執(zhí)行,從而最大程度減少了用戶暴露在錯誤代碼的時間。在我們更進(jìn)一步討論這兩種方法之前,讓我們先區(qū)分部署和發(fā)布。



如何將部署與發(fā)布解耦


雖然這兩個詞經(jīng)常混淆使用,但實際上部署和發(fā)布是兩個獨(dú)立的過程。部署是指在特定環(huán)境(包括生產(chǎn)環(huán)境)安裝指定軟件版本的過程,更多是一種技術(shù)行為。它不一定必須與發(fā)布相關(guān)聯(lián)。而發(fā)布則是指向客戶群提供新功能,是一種業(yè)務(wù)決策。


傳統(tǒng)過程中,會在發(fā)布日期前一天部署好更新或是新功能,該更新或功能發(fā)布后可能會在媒體中廣泛傳播。眾所周知,在部署過程中可能會出錯,而因為發(fā)布時間與部署時間十分相近,因此幾乎沒有解決問題的空間。而如果將部署和發(fā)布解耦,那么在整個功能開發(fā)過程中頻繁進(jìn)行生產(chǎn)部署可以降低IT部門的風(fēng)險。那么,要實現(xiàn)部署和發(fā)布的解耦,需要代碼和架構(gòu)能夠滿足新功能發(fā)布不需要變更應(yīng)用程序的代碼。


什么是藍(lán)綠部署


在藍(lán)綠發(fā)布過程中,有兩套生產(chǎn)環(huán)境:藍(lán)環(huán)境和綠環(huán)境。藍(lán)色是當(dāng)前版本并擁有實時流量,綠色是包含更新代碼的環(huán)境。無論任何時候,只有一套環(huán)境有實時流量。


要發(fā)布一個新版本,需要先將代碼部署到?jīng)]有流量的環(huán)境中,這是執(zhí)行最終測試的地方。當(dāng)IT人員確認(rèn)應(yīng)用程序已經(jīng)準(zhǔn)備就緒,就會將所有流量都將路由到綠色環(huán)境。那么綠色環(huán)境就已經(jīng)生效,并且執(zhí)行發(fā)布。


這是新代碼首次在生產(chǎn)負(fù)載(實際流量)進(jìn)行測試。在實際發(fā)布代碼之前,風(fēng)險仍然存在,并且永遠(yuǎn)不會消失。但是,如果出現(xiàn)問題,IT部門可以快速將流量重新路由回藍(lán)色版本。因此,他們所要做的就是密切監(jiān)控代碼行為,甚至可以使用適當(dāng)?shù)墓ぞ邔⑵渥詣踊?,以查看綠色環(huán)境中的版本是否運(yùn)行良好或是否需要回滾。


藍(lán)綠部署:無論何時,只有一套生產(chǎn)環(huán)境有實時流量


這種方法已經(jīng)不是新方法了。IT部門總會創(chuàng)建一個新版本,然后將實時流量重新路由到該版本。而版本控制中通過組件編碼提供可靠性和可重復(fù)性是這一方法的亮點(diǎn)。


我們應(yīng)該如何獲得可靠性和可重復(fù)性?開發(fā)人員將所有參數(shù)編入版本控制中,該版本控制是一個跟蹤所有代碼更改的系統(tǒng),類似于數(shù)據(jù)庫。其中包括應(yīng)用程序邏輯、構(gòu)建過程、測試、部署過程、升級過程以及恢復(fù)過程等??傊杏绊憫?yīng)用程序的因素。然后,計算機(jī)執(zhí)行代碼,在相應(yīng)的環(huán)境中部署應(yīng)用程序,該環(huán)境與版本控制中編碼的exact state相匹配。


在DevOps出現(xiàn)之前,該流程通常是手動的,并且容易出錯。因為所有更改都只能記錄在文檔中,基于此,開發(fā)人員可以重新創(chuàng)建應(yīng)用程序和環(huán)境。由于需要手動執(zhí)行兩個關(guān)鍵步驟,因此此過程過于不可靠,從而導(dǎo)致頻繁出現(xiàn)問題。


雖然將應(yīng)用程序和環(huán)境進(jìn)行編碼也是一項需要手動進(jìn)行的任務(wù),但是它畢竟只是開發(fā)過程的一部分,而不是單獨(dú)的工作,例如創(chuàng)建文檔。在版本控制中編入了與生產(chǎn)環(huán)境相同的代碼。任何更改或更新都將自動觸發(fā)測試,以確保代碼處于可部署狀態(tài)。這樣,如果出現(xiàn)人為錯誤,系統(tǒng)也能夠很快發(fā)現(xiàn)它。


如何理解金絲雀發(fā)布(灰度發(fā)布)


與藍(lán)綠部署類似,金絲雀發(fā)布也是始于兩套環(huán)境:有實時流量的環(huán)境以及沒有實時流量但包含了更新的代碼的環(huán)境。與藍(lán)綠部署不同的是,流量是逐漸遷移到更新的代碼。一開始是1%,然后10%、25%,以此類推,直至100%。通過自動化發(fā)布,當(dāng)確認(rèn)代碼能夠正確運(yùn)行時,它就可以逐步推廣到更大、更關(guān)鍵的環(huán)境中。如果在任何時候發(fā)生了問題,所有流量都會被回滾到之前的版本。這在很大程度上降低了風(fēng)險,因為僅有一小部分用戶會使用到新的代碼。


IT不僅可以控制用戶部署的比例,而且金絲雀發(fā)布還可以從不太重要的用戶開始,例如使用免費(fèi)賬戶的用戶或相對來說不太重要的業(yè)務(wù)市場。


金絲雀發(fā)布:實時流量逐漸從舊版本遷移到新版本直到更新生效


Cluster Immune System


Cluster Immune System可以讓金絲雀發(fā)布更進(jìn)一步。它會連接到生產(chǎn)監(jiān)控系統(tǒng),當(dāng)面向用戶的性能偏離預(yù)定義范圍(例如,錯誤率高出2%)時,將會自動回滾版本。這種方法可以識別通過自動測試難以發(fā)現(xiàn)的錯誤,并減少了檢測和響應(yīng)性能下降所需的時間。


通過將發(fā)布與部署解耦并利用藍(lán)綠部署或金絲雀發(fā)布,風(fēng)險將會顯著降低。在任何時候,IT都能夠?qū)?yīng)用程序回滾到之前的版本——這已經(jīng)與傳統(tǒng)的應(yīng)用程序發(fā)布流程相去甚遠(yuǎn)了。


新的技術(shù)和方法首次讓這一切成為可能:版本控制、作為代碼的基礎(chǔ)架構(gòu)(Infrastructure as code)、容器和Kubernetes都能在這個嶄新的、靈活的、面向DevOps的IT世界中發(fā)揮著作用。???



一文搞懂藍(lán)綠部署和金絲雀發(fā)布的評論 (共 條)

分享到微博請遵守國家法律
武穴市| 静安区| 屏山县| 巴塘县| 长武县| 叙永县| 公主岭市| 宜章县| 于都县| 宜昌市| 卓尼县| 库尔勒市| 迁安市| 沙田区| 浪卡子县| 陇西县| 桃江县| 出国| 锡林浩特市| 武安市| 元氏县| 丁青县| 红原县| 齐河县| 工布江达县| 海丰县| 铁力市| 子洲县| 太和县| 威远县| 齐齐哈尔市| 博湖县| 泰州市| 临沂市| 咸丰县| 江安县| 仪征市| 略阳县| 屏南县| 北流市| 彭阳县|