草根開發(fā)群體的大力支持正在將微服務(wù)架構(gòu)的采用率推到新的高度。據(jù)紅帽公司中間件專家Mark Little博士聲稱,微服務(wù)是個好東西,卻不是世界和平的答案。
紅帽公司中間件部門工程副總裁Mark Little博士:采用微服務(wù)并不意味著你那架構(gòu)差強(qiáng)的泥球突然變得架構(gòu)很好。
鑒于微服務(wù)的人氣扶搖直上,那些記性不好的人可能忽略了這種方法極其類似面向服務(wù)的架構(gòu)(SOA),20年前SOA第一次出現(xiàn)在世人眼前。
不過紅帽公司中間件部門工程副總裁Mark Little博士喜歡將微服務(wù)看成面向服務(wù)的架構(gòu)中的精華部分,它得益于出現(xiàn)了更先進(jìn)的工程和運(yùn)維技術(shù)及技巧。
Little說:“區(qū)別就在于,推動它的主要是開發(fā)軟件和分布式軟件領(lǐng)域的新方法。Linux容器等技術(shù)――Docker就是個典例。你現(xiàn)在有了不變的服務(wù),有了Kuberneters之類用于協(xié)調(diào)那些服務(wù)的技術(shù)――很顯然,你有了開發(fā)運(yùn)維(DevOps),而開發(fā)運(yùn)維受到敏捷開發(fā)理念的重大影響。”
“那些技術(shù)讓人們真正回顧我們在過去開發(fā)分布式系統(tǒng)的方法,面向服務(wù)的架構(gòu)就是這方面的一個例子,并挑選與那些技術(shù)相匹配的精華部分?;蛘叻粗嗳?,找到與面向服務(wù)的架構(gòu)的一些精華部分相匹配的那些技術(shù)。這可能就是區(qū)別所在。架構(gòu)方法并非不一樣,但是其背后的技術(shù)確實不一樣。”
在微服務(wù)架構(gòu)中,應(yīng)用程序組裝成一組小小的半自主式進(jìn)程,這些進(jìn)程執(zhí)行特定的任務(wù),并使用API彼此進(jìn)行聯(lián)系。微服務(wù)旨在易于使用、靈活擴(kuò)展,在Web應(yīng)用程序、移動應(yīng)用程序和物聯(lián)網(wǎng)應(yīng)用程序中日益嶄露頭角。
在面向服務(wù)的架構(gòu)的以往不足中,Little提到了一個不足:無法在客戶機(jī)和服務(wù)之間提供很好的契約定義,他還提到了Web服務(wù)描述語言(WSDL)的不足,這種語言對松散耦合、分布式的系統(tǒng)而言差強(qiáng)人意。
然而,就因為許多因素和技術(shù)融合到一起,讓微服務(wù)成為當(dāng)下風(fēng)光無限的架構(gòu),并不能保證它就能一帆風(fēng)順。
Little說:“認(rèn)識到微服務(wù)不是世界和平的答案,這一點(diǎn)很重要。它對一些任務(wù)來說很好。但是它跟任何技術(shù)一樣,也有缺點(diǎn)。就因為你采用了微服務(wù),并不突然意味著你那架構(gòu)差勁的泥球(ball of mud)突然架構(gòu)變得很好,不再是泥球。它有可能變成了好多分布式泥球。”
“這讓我有點(diǎn)擔(dān)憂。我長期以來就在關(guān)注面向服務(wù)的架構(gòu),知道優(yōu)點(diǎn)和缺點(diǎn)。我喜歡微服務(wù),因為它讓我們得以關(guān)注優(yōu)點(diǎn),但是人們以為它能解決根本就解決不了的許多問題,這確實讓我擔(dān)心。”
如果你正在考慮微服務(wù),最好從良好的軟件工程實踐開始入手。
Little說:“從根本上來說,這正是面向服務(wù)的架構(gòu)背后的思想。如果你不從那方面開始入手,無論你使用Docker、虛擬化、Java虛擬機(jī)還是使用其他什么都不重要,合適的工具不會為你解決架構(gòu)問題。”
微架構(gòu)或者甚至面向服務(wù)的架構(gòu)真正發(fā)揮所長的地方在于,應(yīng)彼此獨(dú)立部署的邏輯服務(wù),這些邏輯服務(wù)可以獨(dú)立于其他服務(wù)進(jìn)行擴(kuò)展,而且能夠?qū)崿F(xiàn)獨(dú)立的故障切換。