引言
面向服務的體系結構 (SOA) 已成為了一項事實標準,用于開發基于組件的應用程序,可使用標準接口通過網絡(Inte.net 或其他網絡)訪問這些應用程序。至少 IBM 高級管理人員和很多其他供應商、分析師、顧問和軟件開發人員都這么說。他們還將告訴您,整個行業都在逐步采用 SOA,如果您尚未開始 SOA 開發,將很快跟不上時代的步伐了。
贊譽之詞。但這些看法是否真的很有吸引力,能讓您開始著手您自己的 SOA 嗎?讓我們來看看一位參加 Open Group 主辦的 SOA 大會的架構師的問題。在 IBM Global Services 副總裁 Michael Liebow 的主題發言后的提問期間,這位架構師問道:“SOA 是不是我們需要知道的唯一體系結構?(順便提一下,Liebow 先生的回答是“是的”)在稍后,另一位架構師大聲問道:“SOA 和我們多年前就知道的組件體系結構很相似。如果我們采用了它,是否意味著我們又多添了一個技術豎井(另一個開發死胡同),從而需要進行更多的集成?”(而這次,會議參加者——包括平臺供應商、企業 IT 架構師、顧問、系統集成商和其他人員——回答的是“不是?!?
這就提出了我們本月要向我們的專家詢問的問題。如果您和 IBM 最近接觸的很多架構師一樣,那么您可能正在評估甚至采用 SOA 的過程中。但您可能仍在懷疑這是否是體系結構樣式的必由之路,新東西很快由更為流行的東西取代,或者,這個體系結構是否真的適用。
我們的專家對此問題的回答包含了很多您之前聽到的說法:SOA 促進了可重用性,提供了接口和實現之間的抽象級別以最小化依賴關系,將業務需求與 IT 功能結合,從而可以為您提供用于將業務需求轉換為編程服務來實現流程自動化的機制,以及當前競爭激烈且快速變化的業務環境中所必需的靈活性,等等。另外,這些專家還根據他們與 IBM 內外開發先驅合作的實踐經驗提供了一些新穎的看法,將幫助您了解 SOA 在何時如何(甚至為什么)適合在您的 IT 體系結構和開發計劃中使用。
在此對本月的專欄供稿編輯 Holt Adams 表示感謝。Holt 是 IBM Software Group 團隊一位經驗豐富的 IT 架構師,就您將要讀到的內容為內部 IBM 社區提供了指導。他還提供了他自己對這個問題的回答“何時采用 SOA,何時不采用 SOA?!?/p>
好了,不再多說,下面就請了解一下我們的專家的觀點吧。(有關回答問題的專家的更多信息,請參閱本專欄最后的關于專家。)我們邀請您就 SOA 提出您的看法。您可以訪問我們的 IT 體系結構討論論壇,或通過以下地址給我發電子郵件:pdreyfus@us.ibm.com。
何時采用 SOA,何時不采用 SOA
IBM 的目標之一是在其產品內開發和采用開放標準。通過這樣做,就能在您公司的 IT 基礎結構中實現 SOA 的價值主張。SOA 能夠優化業務需求與 IT 的一致性,能夠將業務流程活動從服務實現中分離出來,還能夠降低操作成本。只有在不固定供應商的情況下才能真正實現這些功能,此時面向 SOA 實現的技術可以無縫集成(考慮:“開放標準”),以構造全面的端到端解決方案。
當考慮了策略業務目標和活動時,理論上的 SOA 概念非常具有吸引力,更加容易得到支持。不過,不可輕易決定要實現 SOA。這與改變生活方式有些類似,因為開發和操作團隊遵循的 IT 控制模式將完全不同。我提倡進行業務驅動開發。此過程涉及到將業務需求細化為 IT 要求,然后將 IT 要求細化為 IT 功能,以確定滿足這些需求所需的技術。根據我過去四年開發基于 Web 服務的解決方案和更為成熟的基于 SOA 的解決方案的經驗,以下這些相關因素通常會讓我建議采用面向服務的體系結構:
在理想情況下,您和您的業務合作伙伴間沒有預算限制、計劃期限、技能差距和優先級差異,我想,此時完全可以說每個人都會采用 SOA,或者至少會考慮采用 SOA。不過,我們的選擇實際上經常受到過去的決策的影響和限制(例如,技術投資、編程模型采用、服務的合同協定等)。因此,我們并不能總是自由地采用看起來能滿足某個業務需求或技術要求的最佳選項。以下的注意事項會讓我不建議采用面向服務的體系結構或說明現在實現 SOA 的邊際收益:
前面的列表只是一個示例,用以說明 SOA 是否是您公司最佳選擇的原因。當然,每個合同或項目都具有唯一的要求,因此關于何時采用 SOA 的決策取決于您公司的業務狀況。SOA 的價值主張十分誘人,但選擇何時讓您的公司采用 SOA 必須考慮業務環境的實際情況。采用 SOA 不一定要跨一大步,而通常是采用循序漸進的方式進行的。首先找到可以利用 SOA 概念和原則的項目,然后使用主要性能指標測定其價值,這是一種讓大家受益的好方法。
將業務與 IT 結合起來
SOA 不僅是一個開發范例。該體系結構用于在業務和 IT 之間構建中間地段,其中包含雙方都同意的一組與業務一致的 IT 服務,這些服務結合在一起,以實現組織的業務流程和目標。此范例提供了前所未有的靈活性:它允許將業務流程的結構化組成從為流中每個活動提供功能的服務中分離出來。它還允許將業務實現與其描述分離開來。進行了此分離后,公司能以增量的方式更改其后端遺留系統,并添加新功能來支持新需求,而不用受到供應商選擇的限制。因此,可以在最小化對業務流程和 IT 系統的影響的前提下對軟件包和自定義應用程序進行替換。
將訪問功能從其實現分離的下一步工作就是 SOA。而且,除了此功能方面外,我們還可以將非功能方面外部化。例如,我們可以根據建立的業務策略確定哪些人應該可以訪問特定的功能。我們還可以定義如何管理希望以靈活的、可重構的方式訪問的技術資源。
軟件工程發展的下一步就是此體系結構。它使我們從結構化對象轉向分布式對象和組件,然后以一組公共服務為中心來將業務和 IT 加以結合(這些服務結合在一起,可以實現組織的流程和目標)。SOA 還允許將公司的部分業務流程向生態系統中的合作伙伴公開。
當需要支持業務靈活性的 IT 靈活性時,就可以使用 SOA。因此,對于兩個程序需要進行通信并訪問組合業務流程的行業應用程序而言,就非常適合選擇 SOA。
使用 SOA 技術時,實時或被動系統通常不是進行實現的最佳選擇,因為當前的技術不支持將 SOA 用于有大量并發使用情況的實時系統。不過,這些系統的建模也可以從 SOA 提供的分離和獨立概念獲益。
SOA 非常適合用于消除冗余及將業務與未緊密耦合到特定服務實現的 IT 功能相結合。它可以允許服務使用者選擇后備服務提供者(不僅基于功能進行選擇——我需要類似的功能,但不要此版本的服務中的額外依賴項,還可以基于設計及運行時策略和 Web 服務管理功能進行選擇)。
企業體系結構基于 SOA 的公司具有穩定的基礎,能從現有系統概念地抽象業務功能。它們還具有允許隨著新軟件包、系統和資產的提供和新需求的出現以增量的方式進行業務驅動的 IT 轉換的基礎。
一個重要但略顯不足的機制
在企業范圍中,大量的創新都出現在以下兩個方面:企業邊緣和企業之間。在邊緣上,我們可以看到在中間件之上的框架投入了很多精力(獨立于領域的框架,如 Ajax,以及特定于領域的框架,以特定行業為中心進行結合),也投入了很多精力進行與設備相關的工作 [ 典型的移動設備和具有無線頻率識別(Radio Frequency Identification,RFID)標記的設備 ]。而在企業之間,我們可以看到系統(遺留系統和新系統)的系統的形成。
在此類以 Web 為中心的系統中,服務已被證實為這兩個方面的重要機制。在邊緣,服務提供超越基礎技術的行為。而在企業之間,服務提供了各種系統間語義豐富的強大通信方式。
雖然這樣說,但在系統的構造中,服務是一個重要卻略顯不足的機制。這樣說有些過于簡單化,但總的說來,服務對于高頻率或非常小粒度的連接而言,并不非常適合。而且,服務當然不是唯一適合各個系統的體系結構的分解機制。
共3頁: 1 [2] [3] 下一頁 |