也談Devops與微服務(wù),有分亦有合
在云計(jì)算時(shí)代,組織面臨著比以往更快交付業(yè)務(wù)和客戶價(jià)值的壓力。為了做到這一點(diǎn),企業(yè)和獨(dú)立軟件供應(yīng)商便將他們的敏捷軟件開發(fā)實(shí)踐與DevOps以及最近的微服務(wù)一起提升到了一個(gè)新的層次。
將這兩種技術(shù)結(jié)合起來可以極大地提高效率。其實(shí),某種程度上,正是這種快速的發(fā)展推動了今天的新興技術(shù),如大數(shù)據(jù)、機(jī)器學(xué)習(xí)和其他下一代IT概念。
如何理解DevOps和微服務(wù)?
DevOps是一種方法,它使開發(fā)人員和IT運(yùn)營人員能夠更緊密地協(xié)作,從而更快地交付高質(zhì)量的軟件。DevOps通過讓開發(fā)人員了解他們的軟件將在其中運(yùn)行的生產(chǎn)環(huán)境來幫助他們提高軟件質(zhì)量,從而使他們受益。
雖然DevOps可以模擬生產(chǎn)環(huán)境(這是DevOps早期的標(biāo)準(zhǔn)),但是模擬的環(huán)境從未完全匹配生產(chǎn)環(huán)境。最近,組織已經(jīng)將DevOps實(shí)踐轉(zhuǎn)移到云中,在云中可以更準(zhǔn)確地復(fù)制生產(chǎn)環(huán)境。DevOps使開發(fā)人員可以看到IT運(yùn)營,反之亦然,這減少了兩個(gè)角色之間的傳統(tǒng)摩擦,增加了協(xié)作。
與敏捷一樣,DevOps將軟件程序分解成更小的部分,以提高軟件交付速度和質(zhì)量。DevOps的一個(gè)標(biāo)志是“持續(xù)”實(shí)踐,包括持續(xù)集成、持續(xù)測試、持續(xù)交付和持續(xù)部署,所有這些都有助于軟件產(chǎn)品和軟件相關(guān)實(shí)踐的持續(xù)改進(jìn)。
而微服務(wù)體系結(jié)構(gòu)是一種軟件開發(fā)技術(shù),是面向服務(wù)體系結(jié)構(gòu)(SOA)的一種類型。與不使用微服務(wù)的敏捷或DevOps相比,它產(chǎn)生的功能更小(因此模塊化程度更高)。
顧名思義,微服務(wù)是服務(wù)自身的一小部分功能。由于它們是獨(dú)立的構(gòu)建塊,因此使應(yīng)用程序更易于創(chuàng)建、測試和理解。模塊化的一個(gè)好處是多個(gè)DevOps團(tuán)隊(duì)可以并行構(gòu)建和部署微服務(wù)。微服務(wù)和容器通常在任意數(shù)量的公有云或私有云環(huán)境中組合使用。
此外,微服務(wù)可以部署在任何云中,例如,這可以使開發(fā)人員不必為微軟Azure和亞馬遜Web服務(wù)編寫特定于平臺的代碼。簡而言之,微服務(wù)節(jié)省了時(shí)間和金錢,并提供了新的開發(fā)和部署級別的靈活性。
結(jié)合DevOps和微服務(wù)的好處
微服務(wù)支持持續(xù)的交付和部署,這兩者都加速了軟件的交付。大多數(shù)組織都在朝著或?qū)崿F(xiàn)持續(xù)交付的方向前進(jìn),這意味著在月與年、周與月、天與周、小時(shí)與天之間不斷發(fā)布軟件。
持續(xù)的部署每天可以產(chǎn)生成百上千個(gè)版本。它通常由亞馬遜、Facebook和谷歌等云原生廠商實(shí)踐。
事實(shí)上,微服務(wù)源自云本地公司的DevOps實(shí)踐,這些公司希望更快地交付軟件并提高產(chǎn)品質(zhì)量。微服務(wù)和DevOps的一些好處是:
- 更頻繁的軟件發(fā)布
- 更好質(zhì)量的代碼
- 軟件的可重用性
- 可擴(kuò)展性
- 彈性
- 更高水平的自動化
- 靈活性(使用新數(shù)據(jù)源、框架、庫和其他資源的能力)
- 自由(不同的團(tuán)隊(duì)可以使用他們喜歡的工具和語言)
- 基于云計(jì)算架構(gòu)
- DevOps更高的生產(chǎn)力水平
DevOps如何與微服務(wù)協(xié)同工作
微服務(wù)使DevOps團(tuán)隊(duì)能夠并行開發(fā)獨(dú)立的功能片段。而不是將代碼從一種類型的專家轉(zhuǎn)移到另一種類型的專家(例如,開發(fā)、測試、生產(chǎn)),跨功能團(tuán)隊(duì)協(xié)作地構(gòu)建、測試、發(fā)布、監(jiān)控和維護(hù)應(yīng)用程序。
為了加快流程并減少手工錯(cuò)誤,構(gòu)建微服務(wù)的DevOps團(tuán)隊(duì)利用自動化的連續(xù)交付管道,使他們能夠以安全可靠的方式試驗(yàn)新特性,并從失敗中快速恢復(fù)。
為了確保產(chǎn)品質(zhì)量,持續(xù)測試被添加到持續(xù)集成和持續(xù)交付(或部署)中。實(shí)現(xiàn)持續(xù)的質(zhì)量不僅僅包括測試。具體來說,它包括其他質(zhì)量元素,如安全性、與用戶需求的一致性、業(yè)務(wù)風(fēng)險(xiǎn)緩解和度量價(jià)值。
微服務(wù)的獨(dú)立性幫助DevOps團(tuán)隊(duì)在更短的時(shí)間內(nèi)完成更多的工作。與導(dǎo)致整個(gè)應(yīng)用程序崩潰的單片軟件不同,微服務(wù)缺陷往往僅限于該微服務(wù)。然而,微服務(wù)失敗會使其他微服務(wù)“承受壓力”,這可能意味著其他微服務(wù)無法與失敗的微服務(wù)通信。
微服務(wù)的模塊化支持增量發(fā)布,這是DevOps的目標(biāo)之一。總之,微服務(wù)和DevOps:
- 加速創(chuàng)新
- 讓DevOps團(tuán)隊(duì)更加高效
- 減少錯(cuò)誤
- 降低軟件開發(fā)成本
- 提高產(chǎn)品質(zhì)量
- 推動更高層次的業(yè)務(wù)價(jià)值
在未來幾年,微服務(wù)和devops的結(jié)合將會發(fā)生怎樣的變化?
如前所述,微服務(wù)已經(jīng)使DevOps團(tuán)隊(duì)的工作效率更高了。展望未來,這兩者的結(jié)合將帶來更高的效率。此外,終端用戶體驗(yàn)到的與應(yīng)用程序相關(guān)的摩擦也會減少:
云本地開發(fā)將補(bǔ)充云本地部署。雖然能夠在任何云中運(yùn)行微服務(wù)是非常有效的,但軟件通常都在向云轉(zhuǎn)移。在哪里開發(fā)云應(yīng)用程序比在云本身中更好?首先,在發(fā)布之前更容易捕獲應(yīng)用程序錯(cuò)誤。
機(jī)器學(xué)習(xí)和人工智能正在進(jìn)入DevOps和微服務(wù)工具。智能工具的好處之一是更深入地了解DevOps管道、代碼、配置更改、性能等。
更多的DevOps團(tuán)隊(duì)將采用微服務(wù),使企業(yè)應(yīng)用程序更具價(jià)值、可伸縮性、彈性和適應(yīng)性。
微服務(wù)幫助開啟了“后應(yīng)用”時(shí)代,在這個(gè)時(shí)代,用戶打開單個(gè)應(yīng)用的時(shí)間減少,而花在應(yīng)用之外的時(shí)間增多。例如,你可以問Alexa這樣的虛擬助手,“今天的天氣預(yù)報(bào)是什么?”在電話里,天氣預(yù)報(bào)可以作為通知推送。可能性實(shí)際上是無窮無盡的。