來源:CSDN http://news.csdn.net/n/20070123/100877.html
面向服務導向架構(Service Oriented Architecture,SOA),企業用戶存在各種各樣模糊的認識,這些模糊認識很可能將企業的SOA項目引入誤區,在這樣的狀況下部署SOA,可能 會把企業的業務帶入歧途,了解SOA的關鍵問題,或許可幫助CIO避開SOA部署中的陷阱。
1. 為什么不同的人對SOA有不同的解釋?
SOA 的定義取決于你在組織業務中的角色。
對于業務執行人員,SOA創建了企業希望向其客戶和合作伙伴或組織的其他部分公開的一組服務。對于IT架構師,SOA是一種體系結構樣式,此樣式至少需要有服務提供者、請求者和服務描述。對于程序員,SOA是一個由標準、工具和Web服務等技術加以補充的編程模型。
當然,企業信息技術系統及流程管理人員之所以存在似是而非的SOA概念,還可能因為軟件廠商沒有向企業用戶解釋清楚SOA的含義。比如,SOA 中的服務(Service)并非我們理解的傳統企業服務,而是軟件開發的專業用語,指技術層面的、細顆粒度的功能模塊,還遠未達到與企業業務流程直接對應 的程度。軟件廠商在強調SOA給企業帶來巨大商業價值的同時,并沒有具體闡釋這一點。
2. 業務流程管理(BPM)和SOA是何關系?
BPM與SOA既可以單獨部署,也可以組合使用。
如果企業的IT系統比較簡單,企業規模比較小,用同樣的一組IT人員就可以控制所有IT系統,那么,部署一個不使用SOA的BPM套件,就可以 獲得快速創建、執行和監控/管理業務流程的能力,而不必部署SOA。但是,如果BPM套件由一個IT小組部署,而同時使用來自另一個IT小組的系統服務, 那么SOA就可以幫上忙了。
如果企業的IT系統足夠復雜,可以考慮將BPM和SOA組合使用,通常在SOA上實施BPM解決方案可以獲得更大的業務靈活性。如果BPM項目達到一定的范圍和規模時效果才能顯現,最好先開發出BPM,而將SOA組件留待以后考慮。
最好一開始就讓業務流程團隊和IT架構團隊保持持續良好溝通,針對未來進行可行性規劃。例如,BPM套件本身應該能夠提供豐富的連通性,以便無需全面應用完善的SOA來使得BPM運行,不要讓BPM與SOA成為互不連通的兩套系統。
3. “瀑布式”開發與迭代式開發哪個適合SOA?
企業部署SOA最好是通過迭代模型來實現。
迭代模型將標識一組對業務非常關鍵且價值高的功能來進行服務支持工作。此模型可隨后供后續服務支持項目和活動使用。如果采用傳統應用程序開發時使用的“瀑布式”開發方法部署SOA,可能導致創建僅能部署一次的服務,而無法在以后對其進行重用。
使用迭代式開發部署SOA,可通過允許組織逐步納入到系統中,從而減少出現業務故障的風險。同時,任何組織接受和容納更改的能力都是有限的,迭代式開發可確保引入新的流程和系統帶來的更改非常適應企業的容量,且不會在企業中引起大的混亂。
同時,在SOA中,新功能并不一定總是僅受單個業務部門(Line Of Business,LOB)的約束,需要考慮很多跨組織的依賴關系,迭代式開發也有助于解決跨組織的協調。
4. Web服務與SOA是一樣的嗎?
Web服務僅僅是目前最流行的SOA實現技術,但并非可以用于開發SOA的唯一技術。
SOA與Web服務(Web Service)的數量無關。對于SOA來說,真正有價值的是對于Web服務的再利用而不是Web服務本身。即使將所有信息技術系統都用Web服務實現, 也不見得就等于部署了SOA。有些企業使用了太多的Web服務來做同樣的IT服務,結果部署SOA的效果非常差。將Web服務等同于SOA,很容易發生在 一些希望快速實現SOA但是并未真正理解SOA的企業身上。
很多SOA項目都涉及到集成遺留數據,此類數據包含在使用MQSeries和CORBA(Common Object Request Broker Architecture)等“舊”技術的系統中。其中的許多技術都已針對SOA進行了調整,不管有沒有Web服務都可使用。事實上,企業可以只使用 MQSeries、CORBA甚至遠程過程調用(Remote Procedure Call,RPC)技術就能實現SOA。
5. 所有應用程序或環境都適合部署SOA嗎?
不是所有的應用環境都適合部署SOA,很多情況下,部署SOA的效果可能會適得其反。
SOA可以根據需求通過網絡對各種應用組件進行分布式部署、組合和使用,從而滿足用戶統一服務界面、快速部署新業務等需求。但是,如果企業的 IT系統并不復雜,系統基本上都建立在同一架構上,整合系統并不困難,那么實施SOA并不能給企業帶來太多好處,反而可能會帶來負面影響。
專家認為,針對某些應用程序或IT環境,SOA可能并不值得推薦。比如,不需要組件或者應用集成的、獨立的、非分布式的應用程序;應用范圍非常 狹小或者生命周期短的應用程序;建立在同一架構上的應用程序環境等等。對于一些企業來說,采用了單一廠商的技術和產品,擁有同一架構的IT環境,就不需要 那么急迫地實施SOA,或者實施的效果并不是很明顯。
有些企業很多年前就已經成形了業務支撐系統,雖然經過了很多次修修補補,但都一直在正常運作。專業人士認為,這種結構老、補丁多、又肩負重任的系統,與其用SOA動大手術,還不如等這種系統壽終正寢,重新開發符合SOA架構的新系統,進行自然淘汰比較好。
6. 企業應該如何著手部署SOA?
部署SOA應該制定明確的路線圖,循序漸進。
企業部署SOA時最好先制訂一個清晰的路線圖,然后從單個應用程序開始構建SOA架構,可以先從比較簡單的應用開始。這樣,企業可以在做出全面部署SOA之前先衡量投資回報率,并在出現大的問題之前積累足夠的經驗。
當企業計劃部署SOA項目時,CIO要注意各種細節,比如,供應商提供的軟件是否支持Web服務和SOA;開發某些應用程序時,該應用是否要支 持其他業務需求;哪些應用需要嵌入對Web服務的支持等。如果企業大規模部署SOA,還需要建立企業服務總線(ESB),通過ESB提供服務請求。當然 ESB的建立也需要一個過程,CIO必須注意部署節奏。
盡管目前已經可以找到很多關于SOA的知識,但部署SOA仍然非常困難。其中最直接的原因在于SOA需要企業部門之間的高度溝通,而且要求整個 企業都為變革做好準備。變化帶來的問題解決之后,可能又會出現技術問題。因此,企業部署SOA需要提前做好各種各樣的準備,并且有長期的詳細計劃安排。