都是使用微服務(wù),憑什么他能成功?其實(shí)掌握這4招你也能!

數(shù)據(jù)流屏蔽與藍(lán)-綠部署類似,但路由技術(shù)不是使用綜合測(cè)試來驗(yàn)證“綠色”環(huán)境,而是復(fù)制所有輸入的產(chǎn)品數(shù)據(jù)流,并將其鏡像到尚未公開的單獨(dú)的測(cè)試部署中。這樣,數(shù)據(jù)流屏蔽部署基于真實(shí)的數(shù)據(jù)流,能夠清楚地展現(xiàn)新版本部署后會(huì)出現(xiàn)什么情況。同時(shí),數(shù)據(jù)流屏蔽部署保證了測(cè)試不會(huì)影響實(shí)際產(chǎn)品。

導(dǎo)語(yǔ)

采用本文所介紹的這些云原生路由技術(shù)可以測(cè)試并降低微服務(wù)部署中的風(fēng)險(xiǎn)。

與傳統(tǒng)架構(gòu)相比,開發(fā)人員使用微服務(wù)構(gòu)建應(yīng)用程序速度會(huì)更快、更靈活。但是,每一次修改代碼仍然會(huì)帶來風(fēng)險(xiǎn),如果沒有發(fā)現(xiàn)并解決代碼質(zhì)量問題,就為潛在的失敗埋下了伏筆。為了降低這類風(fēng)險(xiǎn),應(yīng)用程序開發(fā)團(tuán)隊(duì)?wèi)?yīng)實(shí)施現(xiàn)代的云原生路由策略,以便更方便地測(cè)試危險(xiǎn)因素,并確保應(yīng)用程序能真正準(zhǔn)備好部署到產(chǎn)品環(huán)境中。

以下4種部署策略使用路由技術(shù)安全地引入新的服務(wù)和特性、測(cè)試功能、改進(jìn)迭代、發(fā)現(xiàn)并消除漏洞等等。這些方法共同構(gòu)成了一個(gè)虛擬工具箱,應(yīng)用程序開發(fā)團(tuán)隊(duì)可以使用它們來降低開發(fā)和部署微服務(wù)應(yīng)用程序時(shí)的風(fēng)險(xiǎn)。

金絲雀部署

“金絲雀”的命名源于一種歷史上的習(xí)慣做法,人們把實(shí)際的鳥類放到煤礦里,目的是查看空氣質(zhì)量對(duì)人類是否安全,金絲雀部署是以最小影響和最小風(fēng)險(xiǎn)測(cè)試實(shí)際產(chǎn)品部署的一種方式。所謂的金絲雀是一個(gè)服務(wù)的候選版本,它按照一定百分比來采集輸入請(qǐng)求的子集(比如1%),嘗試一下新的特性或者構(gòu)建方法。然后,開發(fā)團(tuán)隊(duì)可以檢查結(jié)果,如果進(jìn)展順利,可逐步將部署增加到100%的服務(wù)器或者節(jié)點(diǎn)。如果不順利,則在檢查和調(diào)試有問題的代碼時(shí),可以利用金絲雀部署快速重定向數(shù)據(jù)流。

金絲雀部署可以通過與負(fù)責(zé)處理流入用戶數(shù)據(jù)流的邊緣路由組件集成來實(shí)現(xiàn)。以這種方式路由數(shù)據(jù)流可以確保在正式推出新服務(wù)之前驗(yàn)證新服務(wù)是否可行。如果不可行,就會(huì)被退回以解決問題,在準(zhǔn)備好后再進(jìn)行新一輪金絲雀部署測(cè)試。

A/B測(cè)試

A/B測(cè)試與金絲雀部署類似,但有一個(gè)重要的區(qū)別。金絲雀部署偏重于發(fā)現(xiàn)漏洞和性能瓶頸,而A/B測(cè)試則偏重于衡量用戶對(duì)新應(yīng)用程序特性的接受程度。例如,開發(fā)人員可能想知道新特性是否受用戶歡迎,是否容易被發(fā)現(xiàn),或者UI功能是否正常等等。

這種模式使用軟件路由來激活并測(cè)試不同數(shù)據(jù)流區(qū)段的某些特性,把新特性呈現(xiàn)給指定百分比的數(shù)據(jù)流,或者有限的組。A和B路由區(qū)段可能會(huì)將數(shù)據(jù)流發(fā)送到軟件的不同內(nèi)部開發(fā)版本,服務(wù)實(shí)例甚至能使用相同的軟件內(nèi)部開發(fā)版本,但具有不同的配置屬性(就像在編排器或者其他地方指定的那樣)。

藍(lán)-綠部署

藍(lán)-綠部署模式涉及到并行操作兩個(gè)產(chǎn)品環(huán)境:一個(gè)用于當(dāng)前穩(wěn)定版本(藍(lán)色),另一個(gè)用于在下一版本上準(zhǔn)備和執(zhí)行測(cè)試(綠色)。這種策略使更新后的軟件版本能夠以一種易于重復(fù)的方式來發(fā)布。DevOps團(tuán)隊(duì)可以使用這一方法,通過CI/CD(Continuous Integration and Delivery)管道自動(dòng)執(zhí)行新版本的發(fā)布。

采用藍(lán)-綠策略,現(xiàn)有實(shí)例在處理產(chǎn)品數(shù)據(jù)流時(shí),開發(fā)人員可以同時(shí)部署新的服務(wù)版本。一旦新服務(wù)通過了最后的測(cè)試,就可以使用軟件路由無縫地管理從藍(lán)到綠的數(shù)據(jù)流切換,數(shù)據(jù)流就可以安全地自動(dòng)重定向到新服務(wù)。同樣重要的是,如果在最后一刻出現(xiàn)了關(guān)鍵問題,可以簡(jiǎn)單地將部署回退到藍(lán)色版本。

數(shù)據(jù)流屏蔽

數(shù)據(jù)流屏蔽與藍(lán)-綠部署類似,但路由技術(shù)不是使用綜合測(cè)試來驗(yàn)證“綠色”環(huán)境,而是復(fù)制所有輸入的產(chǎn)品數(shù)據(jù)流,并將其鏡像到尚未公開的單獨(dú)的測(cè)試部署中。這樣,數(shù)據(jù)流屏蔽部署基于真實(shí)的數(shù)據(jù)流,能夠清楚地展現(xiàn)新版本部署后會(huì)出現(xiàn)什么情況。同時(shí),數(shù)據(jù)流屏蔽部署保證了測(cè)試不會(huì)影響實(shí)際產(chǎn)品。

企業(yè)開發(fā)人員已經(jīng)利用了一系列旨在確保新應(yīng)用程序代碼能夠滿足某些要求的測(cè)試技術(shù)。例如,單元測(cè)試和功能測(cè)試仍然是清理代碼的基本措施。然而,基于微服務(wù)體系結(jié)構(gòu)的本質(zhì)使得端到端集成測(cè)試比以往任何時(shí)候都更為重要??紤]到微服務(wù)體系結(jié)構(gòu)固有的相互依賴性和長(zhǎng)期接口漂移的風(fēng)險(xiǎn),綜合測(cè)試仍然有價(jià)值,但最終無法準(zhǔn)確地表示產(chǎn)品環(huán)境中服務(wù)之間的所有交互。

4種策略,一個(gè)目標(biāo)

這些路由技術(shù)都提供了獨(dú)特但又相關(guān)的方法來幫助發(fā)現(xiàn)、緩解和測(cè)試基于微服務(wù)的應(yīng)用程序中的缺陷。它們是解決漏洞、性能問題和安全薄弱點(diǎn)的有力工具,尤其是作為端到端持續(xù)集成和交付(CI/CD)管道的一部分進(jìn)行部署時(shí)。

這些方法中哪一種最適合你自己的情況,很大程度上取決于最關(guān)鍵的問題所在。例如,對(duì)UI進(jìn)行重大調(diào)整非常適合采用A/B測(cè)試,而藍(lán)-綠部署則適用于了解新特性怎樣影響現(xiàn)有數(shù)據(jù)存儲(chǔ)的性能。

通常,把這些方法組合起來使用,覆蓋范圍會(huì)更好。但是,重要的是要考慮每一種部署與現(xiàn)有開發(fā)模型的集成程度。例如,側(cè)重單個(gè)特性的金絲雀部署比完整版本的藍(lán)-綠部署更適合敏捷開發(fā)方法。雖然數(shù)據(jù)流屏蔽部署能夠在部署前很好地了解應(yīng)用程序的性能,但其實(shí)現(xiàn)起來很困難而且非常耗時(shí),計(jì)算資源也很昂貴。

通過應(yīng)用這些方法中的一種、一些或者全部,同時(shí)注意它們的具體優(yōu)勢(shì),應(yīng)用程序開發(fā)團(tuán)隊(duì)能夠更好地保證項(xiàng)目的完整性和項(xiàng)目的成功,更有信心地投入生產(chǎn)。

作者:Manuel Zapf是從事開源項(xiàng)目Traefik和Maesh的云原生網(wǎng)絡(luò)公司Containous的產(chǎn)品OSS負(fù)責(zé)人。

編譯:Charles

原文網(wǎng)址:https://www.infoworld.com/article/3565750/4-deployment-strategies-for-resilient-microservices.html

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論