天天看點

CIO的新難題: 認清SOA使用中的五大隐患

        現在是SOA領域動蕩變化的時期,其發展變幻莫測,而這僅僅隻是開始。由于服務設計、服務總線、服務治理甚至服務本身都處于不斷變化中,而且各大公司仍在重審這一舞台,是以,人們的立場通常很複雜。對于IT産業中SOA的成熟度和整體狀态,許多人還非常迷惑,但是,可以确定的是,SOA在結合商業和技術方面的潛力的确非凡。

  今年,釋出了許多SOA的新方案,每一個方案都有其特定的一套目标和期望。很可惜,其中一些方案與成功相距甚遠,一些方案距成功僅僅是一步之遙。但是,對于大多數方案而言,它們都實作了最初的目标,其成功的決定因素是——借鑒那些經曆過失敗項目的人們的寶貴經驗。這些前輩講述他們的經驗教訓,告訴人們在通往SOA道路上所要警惕的重重障礙。

  在我們的日常工作中,我們被卷入進度不同、狀态不同的多個項目中。而現在,我們已經看到,很好的SOA變得越來越差,甚至更糟。雖然,問題能夠被解決,錯誤能夠被避免,但是,總是有一種強大的力量把事情拖回到原來的軌道上。很明顯,最佳做法就是:第一時間避免問題和錯誤。

  在SOA的使用中存在着隐患,很多人已經被這些錯誤的概念或者做法誤導,那麼,了解這些隐患,能夠幫助你達到深謀遠慮的程度,進而使你在SOA的道路上更加安全的前行。為了使你有一個好的開端,我們已經收集了五種最為常見的、SOA使用中的隐患。

  沒有了解SOA的性能需求

  松散耦合是需要代價的。當使用Web服務實作松散耦合時,SOA引入了資料處理層,同時也帶來了由這些層所影響到的上層的相關性能。當SOA項目剛開始時,規模較小,是以,建構符合功能和響應要求的、面向服務的解決方案并不複雜。但是,随着規模的增加,需要添加更多的功能,由此可以預見到,基于資訊的通訊量将會大幅度增長。如果事先沒有考慮這一情況,沒有準備好建構環境的話,那麼,就需要對前一階段所做的小規模系統進行必要的遺留處理。

  要建構一個成功的面向服務的解決方案,其關鍵是:盡快了解你的解決方案的性能需求、以及基礎架構的性能瓶頸。這意味着測試(如果需要的話,增強)你的建構環境的消息處理能力,并且密切關注服務設計,進而達到傳輸率、傳輸規模以及與其他服務特性之間的一個可接受的平衡點——這一平衡點會影響解決方案的性能。

  沒有從XML基礎架構開始

  在今天的SOA世界中,每件事情都開始于Web服務。這似乎已經成為公司内部的既成标準,但是它并不完全正确。事實上,在今天的SOA世界中,所有的事情都開始于XML。這才是真正的标準,依據這一标準,許多補充的标準都已經逐漸發展起來,并且形成了實際的資料表示架構。這一标準的核心,奠定了許多Web服務規則的形成基礎,并且促進着SOA的發展。

  是以,人們更多地關注于資料在服務之間是如何傳輸的,而經常忽略在服務背後,資料構造和驗證的方式。這一疏忽可能導緻無法合理實作SOA的持久化XML資料表示層。對于SOA而言,這一層是基礎,如果它存在着弱點,那麼,所有基于這一層的解決方案都會受到不利影響。

  沒有建立一個過渡計劃

  如果沒有使用一個詳盡的過渡計劃,那麼,成功遷移的機會将會降低很多。因為,在一個企業内部,服務終端所處位置的範圍将導緻環境基礎架構的重新确定,一次差強人意的遷移有可能帶來重大影響。使用過渡計劃,你就能夠控制面向服務和SOA特性,并且進行相應的協調,如此一來,遷移就能夠在技術、架構以及組織層面上,按照計劃進行。

  對于一個SOA過渡計劃而言,其典型的元件包括:一個具有重大影響的分析結果(預測SOA的改變程度将如何影響已有資源處理、使用者标準和技術)、過渡架構(目标是SOA,勾畫出一系列通向這一目标的中間過渡狀态)以及推測分析(考慮Web服務和支援技術的未來發展)。

  沒有标準化SOA

  與其他的架構相同,SOA也需要建立并且執行内部設計标準,以便能夠使人們真正地認識到它的優勢。舉例說明,如果一個項目采用建構面向服務的解決方案,與其他項目不同,那麼,該項目的解決方案的關鍵點将不再是與相關的應用程式保持一緻,它可能是需要互操作或者分享某些不可預知的服務。

  這可能引發很多問題,包括不比對的資料表示、含有不規則接口特性和語義的服務契約,以及使用非互補的Web服務擴充(或者是用不同方式實作的擴充)。

  SOA的出現,促進了分離後端處理這一開發環境的發展,是以,在每個應用程式内部,SOA都能夠獨立執行。然而,标準化仍然要求——服務需要封裝這一後端邏輯,并且在設計和互動上確定一緻性。

  将SOA建構成傳統分布式架構

  在實作SOA的過程中,企業一直面對的誘惑是:自稱SOA已經實作了,但是在建構面向服務的解決方案時,采用與建構傳統分布式解決方案相同的建構方式。

  SOA既不是CORBA + XML,也不是 ASP.NET + WSE。同樣,面向服務既不是面向對象,也不是“足夠接近”面向對象。雖然,通常情況下,建構面向對象組建邏輯總是“非常适合”于面向服務解決方案的環境。但是,SOA是基于面向服務的、與衆不同的架構模型,以及截然不同的設計模式。對于建構自動化邏輯——純粹的面向服務,與SOA産業向全球規模發展保持一緻——了解上述這些不同之處,是非常關鍵的。 

繼續閱讀