IT系統的集成已經成為全球大小企業IT部門共同面對的問題。集成的困難在于太多的軟件平臺、太多的對象模型(比如,與CORBA不兼容),結果,很多架構設計師和軟件工程師被深陷于解決這些技術難題之中,他們要設計一種穩定的、能簡單、快速、安全地與現有系統和應用進行集成的架構。然而,不幸的是,直到SOA出現,這個問題一直沒有解決,而且愈演愈烈。滿足業務需求這個最實在的需求促使人們尋求一個更好的解決辦法: 一種能降低成本、縮短開發周期、實現企業內部集成、與B2B和B2C系統的集成、更快地獲得投資回報、能快速靈活地響應業務需求的軟件架構。人們的反復實踐表明,點對點的辦法已不能滿足要求,因為這種方式沒有一種統一的架構,使得軟件開發人員能快速開發、集成和重用應用。更為重要的是,我們需要一種軟件框架,能在業務發生變化之后,動態響應新的需求,快速重新裝配各種軟件構件和服務。本文重點將不是論述為什么某些技術,如Web服務非常有用,而是超越技術層面,從架構這個角度來討論這些問題。
企業的軟件之痛
這里首先從討論軟件所面臨的一些最基本的困難開始,要注意的是,我們考慮如何解決這些困難將決定我們成功的程度。
困難1: 復雜性
業務部門所遇到的困難幾乎IT部門都會遇到。企業管理者希望更充分地利用IT資源、更快地得到投資回報、和現存的系統進行整合、快速地部署新的系統。但有些事情正在發生變化,軟件運行環境日益復雜,IT預算日益緊張,再加上部署時間緊張,要求我們盡量重用舊的系統,而不是取代它們。便宜而且方便地接入互聯網為開拓全新的業務模式提供了可能,而另一方面,為了跟上競爭對手的步伐,企業也不得不重新審視現有的商業模式。今天,企業并購頻頻發生,從而使得企業的IT部門常常面臨集成企業的IT基礎設施和應用的任務。在這樣的一種環境中,點對點的解決方案只能增添問題的復雜程度,而遠不能真正解決上述困難?,F在需要一種新的架構,能充分包容各種異構的計算環境,包括各種不同的硬件、操作系統、中間件、語言和數據源。數十年來,計算機領域不斷演進留下的大量系統已經成為我們下一步發展的巨大障礙??紤]IT部門現在遭遇的上述挑戰,再看看今天很多CIO將集成列為頭等大事就一點兒也不覺得奇怪了。
困難2: 冗余和難以重用的程序
很多企業的應用系統來自于不斷被并購的企業。因而,企業不得不面對冗余的信息系統或者從功能上說難于重用的應用。在不少企業中,各個業務部門相互獨立,從而為企業重用某些功能和系統造成了極大的障礙。這些冗余的系統為企業在部署新的產品和服務時增加了成本,而且延誤了時間,因為某個系統中的一個小的改變就會導致在幾乎每一個系統或者應用的修改。不能重用最終還會消耗更多的有限資源,在交付新的應用時需要更長的開發和部署時間。
困難3: 眾多的接口
由于企業的并購或者成立新的企業聯盟或者只是為了和現有的系統建立連接,很多企業都面臨這方面問題。比如,有n個應用必須直接建立連接和接口,點對點的模式需要建立n(n-1)個連接。結果,如果需要連接一個新的應用,那么就必須建立、測試和文檔化2n個連接。這會給這些應用的維護帶來很大的問題,因為必須修改每一個現有的應用讓它們包含新的接口,相應的測試成本也會成指數級上升。為了降低成本和復雜性,我們需要一種簡單的解決辦法: 如果有n個應用就只需n個接口,新增一個應用也只是新增一個接口。然而,采用直接的點對點的連接是無法滿足這一要求的。
理想的軟件架構
過去的40多年里,軟件開發領域經歷了幾個不同的編程模型。每次轉變都在一定程度上降低了軟件系統的復雜性,使得軟件人員能在一定程度上更方便地組裝不同的應用、構件和服務。幾年前出現的Java技術提供了一種與平臺無關的編程特性,XML為數據提供了一種自我描述、跨平臺的表現形式,而現在的Web服務則幫人們搬掉了另外一個障礙,允許各種應用之間實現互通。例如,只要遵循基于XML的簡單消息規范,Java應用就可以調用微軟的.Net的應用或者與CORBA兼容的應用,甚至可以是COBOL應用。因此,位于新加坡大型機上的IBM CICS或者IBM IMS交易可以被.Net應用調用,而這個.Net應用則是被慕尼黑的Lotus服務器應用調用的。
最值得一提的是,在進行調用的時候,發起調用的一方根本就不用關心交易究竟在哪里完成、這個程序是用什么編程語言編寫的,以及消息會經歷什么樣的路由過程。整個過程只是一方申請服務,而另一方提供這個服務這么簡單。
相對而言,Web服務由于效率更高、更可靠、更可擴展,因而將比它的前輩更可能被作為一種機器與機器進行交互的事實標準。而幾個必要的技術的即時融合以及文化上的即時跟進更是加快了這個過程,包括:
● 隨處可得的基于開放標準、低成本的網絡基礎設施以及支持分布式環境的有關技術使得Web服務比CORBA和DCE(分布式計算環境)更有可能被作為標準。
● 在那些為了達到關鍵業務目標必須實現交互的網絡環境中(如分布式協作)的接受程度和技術成熟程度。
● 人們希望基于開放的互聯網標準和技術實現低成本的交互。
● 網絡技術(如TCP/IP)的成熟程度。
● 集成開發環境(IDE)、統一建模語言平臺(如J2EE)及其他有關的技術(如面向對象技術和服務)可以非常容易地實現機器與機器的松耦合交互,這是CORBA用戶很難有的一種經歷。
SOA既是一種軟件架構,也是一種編程模式,還是一種思考部署軟件的方法。SOA使我們能設計一種軟件系統,它能通過公開發布的或者可發現的接口為其他應用提供服務,這些服務可以通過網絡被其他應用調用。人們使用Web技術實現一個SOA應用時,就可以得到一種新的軟件構建方式,這種方式十分靈活、威力強大,而且能夠降低開發成本和擁有成本,減少系統實施風險。
另一方面,對于SOA來說,目前正面臨著很大的機遇。第一個是網格計算。今天,網格計算已經不是每秒完成數百萬條指令的一種應用,它能夠提供一種框架,使我們能動態分配、再分配、平衡和管理大量的服務,它能保證我們得到所需要的服務而無論這個任務是不是由自己的機器來完成。
按需計算與網格的概念非常相似,它能在任何配置的機器上實現,從簡單的集群到1024個節點的運行IBM SP系統的網絡。如果用戶為了解決某個問題而需要計算能力,無論多少,他可以根據實際使用的計算能力付費。為了達到這一目標,需要對現有軟件系統進行重構?,F在的單片集成電路可以在這個環境中運行,但是遠不是以一種最佳的使用方式使用。這些情形以及前面所述的問題意味著我們必須對軟件系統進行一個徹底的改變,也就是要向SOA轉變。
共3頁: 1 [2] [3] 下一頁 |