近幾年,我們有很多文章對SOA和微服務(wù)之間的不同點和相似點進行了分析。有些人認為SOA有很多地方是值得微服務(wù)學(xué)習(xí)的,而有些人則認為區(qū)別對待微服務(wù)和SOA會更好。而Neal Ford認為,將單體遷移到面向服務(wù)的架構(gòu)要比遷移到微服務(wù)來得容易。關(guān)于選擇SOA還是微服務(wù)的話題,最近并沒有太多的爭論,直到Redmonk的Stephen O'Grady發(fā)表了他的文章,這個話題再次進入了人們的視野。O'Grady在他的文章里說到,服務(wù)的大小不應(yīng)該成為關(guān)鍵的決定性因素。這些年來,人們也一直在爭論這個觀點,比如Dan North。而Jeppe Cramon也說過:
單純使用服務(wù)大小來定義微服務(wù)有失偏頗,也難以確定一個微服務(wù)是否被賦予了正確的職責(zé)……
O'Grady相信,SOA和微服務(wù)之間有著千絲萬縷的聯(lián)系:
在過去,SOA存在的一些缺陷導(dǎo)致它變成企業(yè)的幻象,就像今天那些使用了微服務(wù)云原生架構(gòu)的激進型組織一樣。如果我們深入到SOA的核心,我們會發(fā)現(xiàn),SOA的本意是說架構(gòu)應(yīng)該由服務(wù)組成,而不是單體。
O'Grady在他的文章里通過Google Trends生成了一些圖表,其中第一張圖表顯示了SOA在整個行業(yè)歷史上曾經(jīng)有一小段時期處于流行的高峰狀態(tài)。
Stephen認為,通過服務(wù)大小來區(qū)分SOA和微服務(wù)將有礙找出導(dǎo)致SOA沒落與微服務(wù)崛起的真正原因,SOA是由廠商驅(qū)動的,而微服務(wù)更多的是由開發(fā)者來驅(qū)動。
因為AWS的大肆成功,我們無法否認基于服務(wù)驅(qū)動的平臺確實是構(gòu)建可伸縮平臺的一種有效方式,也無法否認它們在現(xiàn)今所取得的主導(dǎo)地位。但值得注意的是,現(xiàn)今基于服務(wù)的平臺一般是由開發(fā)者來驅(qū)動的。而SOA最初由大型的廠商來驅(qū)動,基于拜占庭式的復(fù)雜(一般帶有政治性質(zhì))的標(biāo)準框架來構(gòu)建服務(wù),而這些標(biāo)準并不為開發(fā)者所接受。
O'Grady在文章中提到,微服務(wù)在好的方面和不好的方面都借鑒了SOA。
微服務(wù)比單體更容易開發(fā),而且沒有了SOA的廠商標(biāo)準累贅。
在過去幾年,還有其他的一些人也表達了類似的觀點,Asanka說:
如今,企業(yè)正在轉(zhuǎn)向更干凈的SOA,開始擁抱MSA?;蛟S最大的看點是組件化,以及微服務(wù)提供的單一功能能夠被快速地部署成組件,在必要的時候可以很容易地進行伸縮。不管怎樣,這是一種很新奇的概念。
其中的第二張Google Trends圖表也很有趣。
查看英文原文: The Difference between SOA and Microservices?