前言
不知道大家有了解過(guò)你們公司的軟件產(chǎn)品是如何部署的么?采用的什么部署策略?其實(shí)在軟件開發(fā)生命周期中,部署是非常關(guān)鍵的一環(huán),你需要考慮多方面的因素,如何保證你部署對(duì)用戶無(wú)感知?如何把影響范圍控制到最小?如何出現(xiàn)問(wèn)題快速的實(shí)現(xiàn)回滾?
現(xiàn)在的大多數(shù)應(yīng)用程序都是云原生、微服務(wù)的方式。例如,淘寶,它就是由許許多多的子服務(wù)組成的。服務(wù)數(shù)量越多,意味著出現(xiàn)問(wèn)題的可能性更大。那么部署的策略極為關(guān)鍵,高效部署的期望達(dá)成的目標(biāo)有如下幾點(diǎn):
- 零停機(jī)
- 快速部署
- 客戶對(duì)新版本的快速反饋
- 出現(xiàn)問(wèn)題容易回滾
那么本文和大家分享3種微服務(wù)部署比較常見的3種部署策略,滾動(dòng)部署、藍(lán)綠部署和金絲雀部署。
滾動(dòng)部署
上圖顯示了部署模式: 舊版本以藍(lán)色顯示 ,新版本在集群中的每個(gè)服務(wù)器上 以綠色顯示 。
在滾動(dòng)部署中,應(yīng)用程序的新版本逐漸替換舊版本。實(shí)際部署發(fā)生在一段時(shí)間內(nèi)。在此期間,新舊版本將共存,不會(huì)影響功能使用和用戶體驗(yàn)。此過(guò)程可以更輕松地回滾與舊組件不兼容的任何新組件。
優(yōu)點(diǎn):
- 減少停機(jī)時(shí)間 :滾動(dòng)部署允許以增量方式部署更新,從而減少應(yīng)用程序的整體停機(jī)時(shí)間。這是因?yàn)閼?yīng)用程序在部署過(guò)程中對(duì)用戶仍然可用。
- 更好的風(fēng)險(xiǎn)管理 :通過(guò)逐步更新一部分服務(wù)器,滾動(dòng)部署可以實(shí)現(xiàn)更好的風(fēng)險(xiǎn)管理。如果在更新期間出現(xiàn)任何問(wèn)題,可以及早檢測(cè)到并在將更新推廣到所有服務(wù)器之前緩解這些問(wèn)題。
- 提高可靠性 :滾動(dòng)部署可以通過(guò)降低廣泛故障的風(fēng)險(xiǎn)來(lái)幫助提高應(yīng)用程序的可靠性。由于更新是針對(duì)一部分服務(wù)器推出的,因此可以在問(wèn)題影響整個(gè)系統(tǒng)之前檢測(cè)并解決問(wèn)題。
- 簡(jiǎn)化回滾 :如果在部署過(guò)程中出現(xiàn)問(wèn)題,滾動(dòng)部署可以更輕松地回滾更新。由于更新是增量部署的,回滾到以前的版本只需要回滾已更新的服務(wù)器子集。
缺點(diǎn):
- 復(fù)雜性: 滾動(dòng)部署的設(shè)置和管理可能很復(fù)雜,尤其是對(duì)于具有許多服務(wù)器的大型應(yīng)用程序。它需要仔細(xì)規(guī)劃和協(xié)調(diào),以確保以正確的順序推出更新,并及時(shí)更新所有服務(wù)器。
- 更長(zhǎng)的部署時(shí)間 :滾動(dòng)部署可能需要比其他部署策略更長(zhǎng)的時(shí)間才能完成,因?yàn)楦率侵鸩酵瞥龅摹_@可能會(huì)導(dǎo)致更長(zhǎng)的部署時(shí)間,這可能不適合對(duì)正常運(yùn)行時(shí)間有嚴(yán)格要求的應(yīng)用程序。
- 增加資源使用 :滾動(dòng)部署可能需要更多資源,因?yàn)楦聲?huì)在部署到所有服務(wù)器之前先部署到一部分服務(wù)器。這可能會(huì)導(dǎo)致資源使用量增加和成本增加。
- 兼容性問(wèn)題的風(fēng)險(xiǎn) :滾動(dòng)部署會(huì)增加在不同服務(wù)器上運(yùn)行的不同版本的應(yīng)用程序之間出現(xiàn)兼容性問(wèn)題的風(fēng)險(xiǎn)。這可以通過(guò)在推出更新之前徹底測(cè)試應(yīng)用程序情況的兼容性來(lái)緩解。
藍(lán)綠部署
在藍(lán)綠部署中,有兩個(gè)相同的環(huán)境(或資源集)用于部署和測(cè)試新版本的軟件。一個(gè)環(huán)境被認(rèn)為是“藍(lán)色”環(huán)境,而另一個(gè)被認(rèn)為是“綠色”環(huán)境。
當(dāng)前版本的軟件在藍(lán)色環(huán)境中運(yùn)行,新版本在 綠色環(huán)境中進(jìn)行部署和測(cè)試 。一旦新版本在綠色環(huán)境中被認(rèn)為穩(wěn)定且功能齊全,流量可以從藍(lán)色環(huán)境切換到綠色環(huán)境,使新版本成為當(dāng)前版本。
這種方法的優(yōu)點(diǎn)是它最大限度地降低了部署新版本軟件可能導(dǎo)致的停機(jī)或錯(cuò)誤的風(fēng)險(xiǎn)。如果在部署或測(cè)試過(guò)程中出現(xiàn)問(wèn)題,可以快速切換回藍(lán)色環(huán)境,而不會(huì)對(duì)用戶造成任何干擾。這使得藍(lán)綠部署成為需要高可用性和正常運(yùn)行時(shí)間的公司的熱門選擇。
優(yōu)點(diǎn):
- 停機(jī)時(shí)間最短 :藍(lán)綠部署允許零停機(jī)更新,因?yàn)樾掳姹镜膽?yīng)用程序在切換到藍(lán)色環(huán)境之前部署到綠色環(huán)境,這可以導(dǎo)致停機(jī)時(shí)間最少。
- 降低風(fēng)險(xiǎn) :由于新版本的應(yīng)用部署到綠色環(huán)境,部署過(guò)程中出現(xiàn)的任何問(wèn)題都與綠色環(huán)境隔離,降低了大范圍故障的風(fēng)險(xiǎn)。
- 簡(jiǎn)化回滾 :如果部署過(guò)程中出現(xiàn)問(wèn)題,很容易回滾到以前的版本,因?yàn)樗{(lán)色環(huán)境仍然運(yùn)行以前的版本。
- 提高可靠性 :由于藍(lán)色和綠色環(huán)境相同,藍(lán)綠部署可以幫助確保應(yīng)用程序可靠和穩(wěn)定。
缺點(diǎn):
- 復(fù)雜性增加 : 藍(lán)綠部署的設(shè)置和管理可能很復(fù)雜,尤其是對(duì)于具有許多組件的大型應(yīng)用程序。它需要仔細(xì)規(guī)劃和協(xié)調(diào),以確保正確設(shè)置綠色環(huán)境,并確保從藍(lán)色環(huán)境到綠色環(huán)境的無(wú)縫切換。
- 增加資源使用 :運(yùn)行兩個(gè)相同的環(huán)境可能需要更多資源,這會(huì)導(dǎo)致成本增加。
- 更長(zhǎng)的部署時(shí)間 : 藍(lán)綠可能需要更長(zhǎng)的部署時(shí)間,因?yàn)樾掳姹镜膽?yīng)用程序需要先部署到綠色環(huán)境,然后才能切換到藍(lán)色環(huán)境。
- 配置漂移的風(fēng)險(xiǎn) :由于兩個(gè)相同的環(huán)境同時(shí)運(yùn)行,如果更改一個(gè)環(huán)境而不更改另一個(gè)環(huán)境,則存在配置漂移的風(fēng)險(xiǎn)。通過(guò)使用自動(dòng)化和配置管理工具來(lái)確保環(huán)境保持相同,可以減輕這種風(fēng)險(xiǎn)。
金絲雀部署
金絲雀部署就像藍(lán)綠部署,只是它風(fēng)險(xiǎn)更小。你無(wú)需一步從藍(lán)色切換到綠色,而是使用一種 分階段的方法 。
通過(guò)金絲雀部署,您可以在生產(chǎn)基礎(chǔ)設(shè)施的一小部分中部署新的應(yīng)用程序代碼。一旦應(yīng)用程序被簽署發(fā)布,只有少數(shù)用戶被路由到新版本上,這樣可以最大限度地減少任何影響。
在沒(méi)有錯(cuò)誤報(bào)告的情況下,新版本可以逐步推廣到基礎(chǔ)架構(gòu)的其余部分。
優(yōu)點(diǎn):
- 降低風(fēng)險(xiǎn) : 金絲雀部署可以降低風(fēng)險(xiǎn),因?yàn)樾掳姹镜膽?yīng)用程序被推出到一小部分用戶或服務(wù)器,允許在問(wèn)題影響更廣泛的受眾之前檢測(cè)和緩解任何問(wèn)題。
- 早期反饋 : 金絲雀部署提供一小部分用戶對(duì)新版本應(yīng)用程序的早期反饋,這有助于在向更廣泛的受眾推出之前識(shí)別問(wèn)題并改進(jìn)應(yīng)用程序。
- 提高可靠性 :金絲雀部署有助于提高應(yīng)用程序的可靠性,確保在問(wèn)題影響更廣泛的受眾之前及早發(fā)現(xiàn)并解決任何問(wèn)題。
- 受控推出 :金絲雀部署允許受控推出新版本的應(yīng)用程序,這有助于確保推出順利并且不會(huì)導(dǎo)致任何意外問(wèn)題。
缺點(diǎn):
- 復(fù)雜性增加 :金絲雀部署的設(shè)置和管理可能很復(fù)雜,尤其是對(duì)于具有許多組件的大型應(yīng)用程序。它需要仔細(xì)規(guī)劃和協(xié)調(diào),以確保正確設(shè)置金絲雀版本并且無(wú)縫推出。
- 增加資源使用 :運(yùn)行兩個(gè)版本的應(yīng)用程序可能需要更多資源,這會(huì)導(dǎo)致成本增加。
- 更長(zhǎng)的部署時(shí)間 : 金絲雀部署可能需要更長(zhǎng)的時(shí)間才能部署,因?yàn)樾掳姹镜膽?yīng)用程序需要在向更廣泛的受眾推出之前進(jìn)行測(cè)試和監(jiān)控。
- 金絲雀超載的風(fēng)險(xiǎn) :如果金絲雀子集太小或不能代表更廣泛的受眾,它可能會(huì)因流量或使用而超載,這可能會(huì)扭曲結(jié)果并影響應(yīng)用程序的整體性能。
總結(jié)
總而言之,沒(méi)有適用于所有情況的單一“最佳”部署策略,因?yàn)椴煌姆椒赡芨m合不同的場(chǎng)景、團(tuán)隊(duì)和應(yīng)用程序。比如我們公司就是采用的停機(jī)部署,雖然提起來(lái)有點(diǎn)low,但是我們是TO B業(yè)務(wù),這種方式成本最低,怎么簡(jiǎn)單怎么來(lái)。
總的來(lái)說(shuō),最佳部署策略將取決于多種因素,包括應(yīng)用程序的規(guī)模和復(fù)雜性、團(tuán)隊(duì)的規(guī)模和專業(yè)知識(shí)、所需的風(fēng)險(xiǎn)和停機(jī)時(shí)間級(jí)別、資源和基礎(chǔ)設(shè)施的可用性以及其他特定考慮因素給相關(guān)組織和應(yīng)用程序。
重要的是要不斷評(píng)估和試驗(yàn)不同的部署策略,以找到最適合你的團(tuán)隊(duì)和你的應(yīng)用程序的策略,并且需要隨著需求的變化,去不不斷調(diào)整迭代你的部署策略,這才是正道。
-
軟件開發(fā)
+關(guān)注
關(guān)注
0文章
612瀏覽量
27353 -
架構(gòu)
+關(guān)注
關(guān)注
1文章
513瀏覽量
25468 -
微服務(wù)器
+關(guān)注
關(guān)注
0文章
11瀏覽量
8095
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論