專家認(rèn)為像“微服務(wù)”和“12因子app”這樣的術(shù)語未必是SOA已死的信號(hào),其實(shí)只是舊技術(shù)換了個(gè)新名字。
正如Bon Jovi曾經(jīng)唱過那樣,“一切還是老樣子,只是名字改了而已。”對(duì)于曾喚起許多架構(gòu)師、開發(fā)者以及IT專業(yè)人士對(duì)希望交給歷史書的大型主機(jī)時(shí)代回憶的SOA來說,這似乎的確如此。不過根據(jù)行業(yè)專家的說法,隨著微服務(wù)以及12因子app這樣的術(shù)語出現(xiàn),這些叫法未必就是SOA已死的信號(hào),可能只是換個(gè)馬甲而已。
“SOA就是微服務(wù),”總部位于科羅拉多州Evergreen市的Savoir Technologies CTO Jeff Genender這樣說,他把這一新叫法稱為是“給豬涂口紅(無用之功)”。SOA在整體應(yīng)用及實(shí)現(xiàn)搞砸的時(shí)候收到了不好的名聲,用像微服務(wù)這樣的術(shù)語是除掉SOA不好的名聲和內(nèi)涵,同時(shí)保持基本原則的手段之一,他補(bǔ)充道。
“這不是微服務(wù)對(duì)戰(zhàn)SOA,而是更好利用了應(yīng)用分發(fā)的前端GUI與部署在單個(gè)包之內(nèi)的對(duì)比。這才是值得考慮的差別,”Genender說。這一點(diǎn)是通過超過10年的混搭來實(shí)現(xiàn)的,其原因也基本上一樣:更多從控制API和GUI做的事情的角度來控制混搭。雖如此,在它下面的架構(gòu)師RESTful端點(diǎn)或者SOAP端點(diǎn),由它們反復(fù)推送數(shù)據(jù),他說。
微服務(wù)本身是隨著前端Ajax革命而涌現(xiàn)出來的,在這場(chǎng)革命中,開發(fā)者利用了Web應(yīng)用的客戶/服務(wù)器實(shí)現(xiàn)與后端進(jìn)行接口,而不是通過HTML。這使得開發(fā)者在選擇前端利用自己API時(shí)更加游刃有余,這就是令微服務(wù)取得今日地位的差異化因子,據(jù)Genender說。然而,它底子里依然是SOA,尤其是因?yàn)楦阍伊说奈⒎?wù)實(shí)現(xiàn)的樣子很容易看起來像是曾經(jīng)部署過的整體應(yīng)用一樣,他補(bǔ)充道。
埋藏SOA的名字,而不是原則
SOA也許是架構(gòu),但是這個(gè)名字的內(nèi)涵約束太多,以至于總部位于洛杉磯的SOA Software最近把自己的名字給改成了Akana,公司的執(zhí)行副總裁Roberto Medrano說。盡管Akana將會(huì)組合SOA、微服務(wù)以及云集成,但是仍然支持SOA愿景以及API管理和安全,他說。
SOA不會(huì)消失:作為架構(gòu),其可重用和敏捷性將繼續(xù)發(fā)揮價(jià)值,Medrano說。盡管許多開發(fā)者正在使用Web服務(wù)和API,一切都還是服務(wù)且仍將繼續(xù)是服務(wù),這取決于它是如何實(shí)現(xiàn)和被消費(fèi)的,他補(bǔ)充道。
盡管微服務(wù)跟SOA在服務(wù)管理和安全方面并不相同,但它還是可以跟SOA和平共存的,據(jù)Akana的CTO Alistair Farquharson說。
這兩個(gè)在顆粒度方面并不一樣,微服務(wù)關(guān)注的是“微觀”部分,他說。這使得開發(fā)者能夠?yàn)榱丝蓴U(kuò)充性、負(fù)載均衡以及提高吞吐量而分解應(yīng)用,但同時(shí)也引發(fā)了打破數(shù)據(jù)模型以及維護(hù)一致性的問題。大多數(shù)微服務(wù)是部署方法論,他補(bǔ)充說。
微服務(wù)可能會(huì)變成新的SOA
新的流行語導(dǎo)致開發(fā)者和架構(gòu)師剝掉了SOA的舊皮——出于錯(cuò)誤的理由而使用了微服務(wù)是有可能的,據(jù)Farquharson說。“大家正在為了微服務(wù)而開發(fā)微服務(wù),而不是為了創(chuàng)建一個(gè)好的微服務(wù),”他說。正如API一樣,開發(fā)者和架構(gòu)師也許認(rèn)為他們可以通過微服務(wù)修正好應(yīng)用,而不是最終得到一個(gè)更復(fù)雜更糟糕的應(yīng)用。“應(yīng)用寫得不好的人別指望能寫出好的微服務(wù),”他說。
至于12因子app,那也不是什么新東西,這是Savoir Technologies的Genender的說法。“這就好比你拿到了SOA的郵票然后重新用微服務(wù)蓋上,”他說。基本上12因子app只不過是換了一種說法而已,因?yàn)樗唧w化了修正SOA和微服務(wù)的方法論,他補(bǔ)充道。
“這讓我想起了實(shí)用主義程序員宣言的很多東西,”英國(guó)的C2B2公司首席顧問Matt Brasier說。“里面說得很多的一個(gè)東西是常識(shí)而已,即將配置與代碼分離。”
然而,12因子app然后進(jìn)入到了規(guī)定實(shí)現(xiàn)決定而不是把它留給應(yīng)用開發(fā)者,以及討論代碼和集成。有更好的辦法—這往往要考開發(fā)者自己判斷,據(jù)Brasier說。“把實(shí)現(xiàn)與架構(gòu)性原則混在一起很奇怪,”他補(bǔ)充道。
最后結(jié)論是,SOA并沒有死亡,微服務(wù)只是如同《大鼻子情圣》的‘Christian de Neuvillette’。“趨勢(shì)上說SOA可能己死,但你卻可以使用相同的原則,相同的基礎(chǔ)技術(shù),以及相同方法,” Brasier。由于項(xiàng)目中企業(yè)服務(wù)總線而造成了失敗,所以開發(fā)人員和應(yīng)用架構(gòu)師不會(huì)再在經(jīng)理面前使用SOA這一術(shù)語,所以說現(xiàn)在是改名運(yùn)動(dòng),他補(bǔ)充說。
這只是對(duì)相同的原則進(jìn)行重塑,Brasier說。但是微服務(wù)和12因子app將會(huì)走上與SOA相同的道路:當(dāng)不適合應(yīng)用時(shí),就會(huì)重新塑造。