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