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