基於經驗的SOA成功原則

2022-09-01 14:24:14 字數 1856 閱讀 3870

多年以來,我們對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)上耗費太多精力,應盡可能的將更多的精力花在構建最好的服務介面上(也就是指有效地管理變更)。

不要「過度治理」,治理應該保持最小化並且是基於短期內(3-6個月)的合乎情理的共識。而資料治理(data governance)則更為重要,因為你的資訊模型發生的任何變更通常都會對服務介面造成影響。

松耦合通常作為成功soa的核心組成部分而被人們廣為稱道,對於如何實現松耦合,jj建議道:

對消費者互動環境的管理不涉及介面背後的業務邏輯實現。在介面消費者中,不出現重複的涉及對各類記錄系統狀態管理的業務邏輯。

服務復用通常是soa中另乙個被認為非常重要,然而也很難實現的領域。早在2023年的時候,我們就援引過burton的richard watson曾經說過的一段話:

乙個服務可能永遠不會被復用,但是我們仍然可以通過其他方式來創造價值:通過適應性和低成本的維護來減少冗餘;通過對既定策略的貫徹執行來提公升安全 性和依從性,以上列舉了一些我們期望得到的其他成果。而過於專注在復用上將會蒙蔽我們的雙眼,從而導致我們無法看到這些其他的成果。

而jj也贊同這一點:

沒有人會指望今天構建的乙個服務會在從現在開始的三年內被持續的新消費者們不斷消費,這是荒唐的想法。如果你想以這種方式進行復用,那麼你遲早會失 敗並最後得出乙個例如「soa不起作用了」這樣的愚蠢結論。對於soa(在現實世界中也是如此)的復用,它是以另外一種方式進行的:並不是乙個新的消費者 復用乙個老的服務;幾乎都是乙個服務的新版本(變更以支援新消費者)在不打斷老消費者的情況下被消費者復用。

大多數的人仍然無法理解的是:在soa中的「復用」並不是人們通常聽到的「復用」,對它們的理解是不一樣的。在soa中的復用是向前復用 (forward reuse),而例如我今天早上聽到的復用則是向上復用(upward reuse)。在soa中,復用意味著為新消費者構建的服務新版本並不會打斷現有的老消費者。對於認為某人能在今天設計出乙個服務並且可以在兩年內被一直 「復用」這種想法,很大程度上來說是個幻想。在soa中,較老的消費者可以「復用」那些為最新消費者而建立的服務新版本。

正如最初所提到的,所有這些原則和思想都受到了jj在這個領域中多年經驗的影響。其他人對於這些問題又是怎麼認為的呢?你願意也來分享一下你的經驗嗎?

SOA的依賴原則

在去年的qcon上,ganesh prasad分享了他對soa的看法。今年早些時候,他在一篇文章裡對其中部分內容作了展開,闡述了在他是怎樣將soa 思想視作一種面向依賴 思想的 u0026 xd n u0026 xd n soa是一門對系統之間的依賴進行分析和管理的科學,管理依賴 意味著消除不必要的...

SOA的依賴原則

在去年的qcon上,ganesh prasad分享了他對soa的看法。今年早些時候,他在一篇文章裡對其中部分內容作了展開,闡述了在他是怎樣將soa 思想視作一種面向依賴 思想的 soa是一門對系統之間的依賴進行分析和管理的科學,管理依賴 意味著消除不必要的依賴,並將合規依賴轉變為易於理解的契約。為了...

構建成功的 SOA 專案

從架構師的角度了解面向服務的體系結構 soa 開發過程的主要階段。了解實現成功的 soa 專案方面的經驗教訓和最佳實踐,包括組織準備情況 使用者的角色 對流程進行轉換 基於資產的支援和工具要求。引言saugatuck technology gartner 及其他公司所做的行業調查表明,無論各自的基礎...