基于经验的SOA成功原则
多年以來(lái),我們對(duì)SOA 原則這一主題以及什么會(huì)促進(jìn)SOA成 功,什么會(huì)阻礙SOA實(shí)施等內(nèi)容都進(jìn)行過(guò)很多相關(guān)的報(bào)道。從初期的狂熱宣傳,到大規(guī)模企業(yè)的實(shí)施、Web服務(wù)以及較近期REST帶來(lái)的影響力。我們可以通 過(guò)這7年來(lái)的文章,對(duì)SOA的演進(jìn)進(jìn)行追溯。然而,在此期間的成功案例卻通常少之又少,據(jù)一些數(shù)據(jù)表明僅有20%的SOA項(xiàng)目獲得了成功。其中包括了CISCO和 eBay等幾個(gè)著名的成功案例。
InfoQ英文站編輯Jean-Jacque Dubray不僅幫助我們追溯了SOA在那段歲月的發(fā)展,也分享了不少他的個(gè)人觀點(diǎn)。他對(duì)SOA起到了積極的影響并基于SOA原則部署過(guò)很多成功的系統(tǒng)。通過(guò)基于這些經(jīng)驗(yàn)背景的思考,Jean-Jacques(JJ)最近在博客中發(fā)表了他所信奉的四條促進(jìn)SOA成功的原則:
1. 服務(wù)接口應(yīng)該與服務(wù)實(shí)現(xiàn)解耦
- 在服務(wù)消費(fèi)者準(zhǔn)備就緒之前,服務(wù)變更對(duì)消費(fèi)者來(lái)說(shuō)應(yīng)該是不可見(jiàn)的
- 當(dāng)服務(wù)消費(fèi)者準(zhǔn)備就緒之后,服務(wù)變更應(yīng)該是易于消費(fèi)的
JJ認(rèn)為只要你在所有設(shè)計(jì)和開(kāi)發(fā)階段一貫地遵守這些原則,成功的機(jī)率將會(huì)大大提升。雖然這些原則相對(duì)來(lái)說(shuō)比較容易理解,但遺憾的是他沒(méi)有對(duì)所列舉的這些原則進(jìn)行更詳細(xì)的闡述。對(duì)于“服務(wù)接口”,JJ補(bǔ)充道:
大部分人在SOA中遭遇了失敗,因?yàn)樗麄冋J(rèn)為服務(wù)是一種抽象,就好比OO中的“類(lèi)”。但實(shí)際上服務(wù)接口是一種契約,通過(guò)它可以暴露和控制變更。 [...]不要在你的服務(wù)邊界(service boundaries)上耗費(fèi)太多精力,應(yīng)盡可能的將更多的精力花在構(gòu)建最好的服務(wù)接口上(也就是指有效地管理變更)。
然而,JJ所做的工作還涉及到圍繞SOA相關(guān)的其他一些領(lǐng)域,這些領(lǐng)域在過(guò)去的時(shí)間里也曾引起了很多人的關(guān)注。其中包括治理(governance),對(duì)此他建議道:
不要“過(guò)度治理”,治理應(yīng)該保持最小化并且是基于短期內(nèi)(3-6個(gè)月)的合乎情理的共識(shí)。而數(shù)據(jù)治理(Data Governance)則更為重要,因?yàn)槟愕男畔⒛P桶l(fā)生的任何變更通常都會(huì)對(duì)服務(wù)接口造成影響。
松耦合通常作為成功SOA的核心組成部分而被人們廣為稱(chēng)道,對(duì)于如何實(shí)現(xiàn)松耦合,JJ建議道:
對(duì)消費(fèi)者交互環(huán)境的管理不涉及接口背后的業(yè)務(wù)邏輯實(shí)現(xiàn)。在接口消費(fèi)者中,不出現(xiàn)重復(fù)的涉及對(duì)各類(lèi)記錄系統(tǒng)狀態(tài)管理的業(yè)務(wù)邏輯。
服務(wù)復(fù)用通常是SOA中另一個(gè)被認(rèn)為非常重要,然而也很難實(shí)現(xiàn)的領(lǐng)域。早在2009年的時(shí)候,我們就援引過(guò)Burton的Richard Watson曾經(jīng)說(shuō)過(guò)的一段話(huà):
一個(gè)服務(wù)可能永遠(yuǎn)不會(huì)被復(fù)用,但是我們?nèi)匀豢梢酝ㄟ^(guò)其他方式來(lái)創(chuàng)造價(jià)值:通過(guò)適應(yīng)性和低成本的維護(hù)來(lái)減少冗余;通過(guò)對(duì)既定策略的貫徹執(zhí)行來(lái)提升安全 性和依從性,以上列舉了一些我們期望得到的其他成果。而過(guò)于專(zhuān)注在復(fù)用上將會(huì)蒙蔽我們的雙眼,從而導(dǎo)致我們無(wú)法看到這些其他的成果。
而JJ也贊同這一點(diǎn):
沒(méi)有人會(huì)指望今天構(gòu)建的一個(gè)服務(wù)會(huì)在從現(xiàn)在開(kāi)始的三年內(nèi)被持續(xù)的新消費(fèi)者們不斷消費(fèi),這是荒唐的想法。如果你想以這種方式進(jìn)行復(fù)用,那么你遲早會(huì)失 敗并最后得出一個(gè)例如“SOA不起作用了”這樣的愚蠢結(jié)論。對(duì)于SOA(在現(xiàn)實(shí)世界中也是如此)的復(fù)用,它是以另外一種方式進(jìn)行的:并不是一個(gè)新的消費(fèi)者 復(fù)用一個(gè)老的服務(wù);幾乎都是一個(gè)服務(wù)的新版本(變更以支持新消費(fèi)者)在不打斷老消費(fèi)者的情況下被消費(fèi)者復(fù)用。
事實(shí)上在2009年的文章中,JJ曾對(duì)此有過(guò)以下評(píng)論:
大多數(shù)的人仍然無(wú)法理解的是:在SOA中的“復(fù)用”并不是人們通常聽(tīng)到的“復(fù)用”,對(duì)它們的理解是不一樣的。在SOA中的復(fù)用是向前復(fù)用 (forward reuse),而例如我今天早上聽(tīng)到的復(fù)用則是向上復(fù)用(upward reuse)。在SOA中,復(fù)用意味著為新消費(fèi)者構(gòu)建的服務(wù)新版本并不會(huì)打斷現(xiàn)有的老消費(fèi)者。對(duì)于認(rèn)為某人能在今天設(shè)計(jì)出一個(gè)服務(wù)并且可以在兩年內(nèi)被一直 “復(fù)用”這種想法,很大程度上來(lái)說(shuō)是個(gè)幻想。在SOA中,較老的消費(fèi)者可以“復(fù)用”那些為最新消費(fèi)者而創(chuàng)建的服務(wù)新版本。
正如最初所提到的,所有這些原則和思想都受到了JJ在這個(gè)領(lǐng)域中多年經(jīng)驗(yàn)的影響。其他人對(duì)于這些問(wèn)題又是怎么認(rèn)為的呢?你愿意也來(lái)分享一下你的經(jīng)驗(yàn)嗎?
轉(zhuǎn)載于:https://www.cnblogs.com/dushu/archive/2013/04/16/3024081.html
總結(jié)
以上是生活随笔為你收集整理的基于经验的SOA成功原则的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux内核--网络栈实现分析(三)-
- 下一篇: jquery实现在元素外单击,隐藏此元素