尹培培
(國家廣電總局信息中心 北京 100866)
1996 年Gartner最早提出了SOA的概念設(shè)想[1],但在當(dāng)時只是個預(yù)言,后來隨著軟件和信息化程度的發(fā)展,以及Web服務(wù)的提出和應(yīng)用,SOA概念才逐漸走入實(shí)質(zhì)性應(yīng)用。SOA全稱為面向服務(wù)的體系架構(gòu)(Service Oriented Architecture),是一類分布式系統(tǒng)的體系架構(gòu)。其主要思想是在傳統(tǒng)的業(yè)務(wù)層和技術(shù)層之間增加一個服務(wù)層,服務(wù)層通過一套協(xié)議或規(guī)范把應(yīng)用程序從底層技術(shù)層調(diào)出去,加以封裝,再根據(jù)業(yè)務(wù)層需求靈活組合。SOA是一個組件模型,它將異構(gòu)平臺上的應(yīng)用程序拆分為不同的功能單元(服務(wù)),服務(wù)之間通過定義良好的接口和規(guī)范以松耦合的方式整合在一起。從2005年開始,很多專家學(xué)者、軟件廠商都開始關(guān)注SOA,SOA推廣與普及工作開始加速。各大廠商共同協(xié)作制定了SOA的多個重量級規(guī)范,SOA進(jìn)入了實(shí)施階段。
同時,在20世紀(jì)80年代網(wǎng)格計算、90年代公用計算,21世紀(jì)初虛擬化技術(shù)、SOA、SaaS應(yīng)用的支撐下,云計算作為一種新興的資源使用和交付模式逐漸為學(xué)界和產(chǎn)業(yè)界所認(rèn)知。根據(jù)wiki百科的定義[2],云計算是一種通過Internet以服務(wù)的方式提供動態(tài)可伸縮的虛擬化的資源的計算模式。云計算是分布式計算、并行計算、效用計算、網(wǎng)絡(luò)存儲、虛擬化、負(fù)載均衡等傳統(tǒng)計算機(jī)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物。近幾年來,在各大廠商和研究機(jī)構(gòu)的努力下,云計算開始真正落地實(shí)施,各個廠商的云技術(shù)、云方案陸續(xù)出臺,如亞馬遜的Cloud Drive,蘋果公司推出的iCloud,Google的云計算平臺,微軟的System Center 系統(tǒng)等等。云計算也成了IT界乃至全社會的熱點(diǎn)。
從概念上看來,SOA和云計算之間好像并無太大聯(lián)系,但它們都涉及到軟件架構(gòu)問題,并且各自提出了不同方向的解決方案。關(guān)于SOA和云計算的關(guān)系,自從云計算概念提出至今,始終是產(chǎn)業(yè)界、學(xué)術(shù)界和用戶界關(guān)注的焦點(diǎn)問題。業(yè)界觀點(diǎn)大致有以下3種:SOA和云計算融合發(fā)展;云計算將取代SOA;SOA中包含云計算。本文將從各個方面分析這兩種架構(gòu)之間的區(qū)別和聯(lián)系,以及在業(yè)界的發(fā)展趨勢。
1)云架構(gòu)
云計算的一開始出現(xiàn)主要是為了解決計算機(jī)硬件資源問題,它通過虛擬化方式大大降低企業(yè)數(shù)據(jù)中心的應(yīng)用成本。在這些年的發(fā)展之后,云計算的概念和范疇已經(jīng)擴(kuò)展為3個層次[3]:基礎(chǔ)架構(gòu)云(Infrastructure as a Service,IaaS)、平臺云(Platform as a Service,PaaS)和軟件應(yīng)用云(Software as a Service, SaaS)。IaaS指基礎(chǔ)設(shè)施即服務(wù),這一層的作用是提供虛擬機(jī)或者其他資源作為服務(wù)提供給用戶。PaaS指平臺即服務(wù),其作用是將一個開發(fā)平臺作為服務(wù)提供給用戶。SaaS指軟件即服務(wù),是指將應(yīng)用作為服務(wù)提供給客戶。它們主要提供的服務(wù)如圖1。企業(yè)利用云計算架構(gòu)去進(jìn)一步解決它的煙囪式問題,但主要目標(biāo)是降低IT運(yùn)營成本、提升IT資源的利用率,促進(jìn)企業(yè)自身IT建設(shè)從粗曠型向集約型進(jìn)行轉(zhuǎn)變。
圖1 云計算的3個層級架構(gòu)Fig. 1 The 3-tier architecture of cloud computing
從上圖可以看出,從底至上,IaaS層主要是將服務(wù)器、存儲及網(wǎng)絡(luò)資源虛擬化,將虛擬后的資源作為服務(wù)提供給用戶;PaaS層可以為用戶提供一個包括開發(fā)、測試環(huán)境以及文檔等的開發(fā)平臺,用戶可以在此開發(fā)平臺上編寫應(yīng)用,并且不用關(guān)心服務(wù)器部署、網(wǎng)絡(luò)和存儲等問題;SaaS層主要是給普通用戶提供無需安裝就能直接使用的應(yīng)用。
由于SOA架構(gòu)主要涉及的是軟件體系的架構(gòu),而云計算的三層架構(gòu)中的PaaS的平臺開發(fā)中亦涉及到軟件架構(gòu)問題,所以本文中主要將云計算中的PaaS模式與SOA進(jìn)行分析。在PaaS模式中,對用戶提供的服務(wù)是一種分布式平臺服務(wù),包括開發(fā)環(huán)境、測試環(huán)境、服務(wù)器平臺、硬件資源等。通過PaaS提供的服務(wù),用戶可在分布式平臺上定制開發(fā)應(yīng)用程序,并通過互聯(lián)網(wǎng)傳遞給其他客戶。PaaS能夠給企業(yè)或個人提供研發(fā)的中間件平臺,提供應(yīng)用程序開發(fā)、數(shù)據(jù)庫、應(yīng)用服務(wù)器、試驗(yàn)、托管及應(yīng)用服務(wù)。Gartner將PaaS分成兩類[4],APaaS(application platform as a service)和 IPaaS(integration platform as a service)。APaaS主要為應(yīng)用提供運(yùn)行環(huán)境和數(shù)據(jù)存儲,能夠?qū)⑵髽I(yè)內(nèi)部自建的簡單三層架構(gòu)的應(yīng)用直接部署到APaaS;IPaaS主要用于集成和構(gòu)建復(fù)合應(yīng)用。據(jù)Gartner稱,雖然PaaS市場的規(guī)模相對較小,但在市場上提供不完全PaaS產(chǎn)品的公司卻有超過150多家。目前市場上的PaaS產(chǎn)品既包括綜合PaaS產(chǎn)品,例如網(wǎng)站Salesforce.com旗下的Force.com,也包含獨(dú)立的應(yīng)用基礎(chǔ)架構(gòu)組件,如數(shù)據(jù)庫及其它為云計算服務(wù)提供支持的功能型中間件。目前代表產(chǎn)品有Google App Engine, Salesforce的force.com平臺,八百客的800APP等。以Google App Engine為例,它是一個由python應(yīng)用服務(wù)器群、BigTable數(shù)據(jù)庫及GFS組成的平臺,為開發(fā)者提供一體化主機(jī)服務(wù)器及可自動升級的在線應(yīng)用服務(wù)。用戶編寫應(yīng)用程序并在Google的基礎(chǔ)架構(gòu)上運(yùn)行就可以為互聯(lián)網(wǎng)用戶提供服務(wù),Google提供應(yīng)用運(yùn)行及維護(hù)所需要的平臺資源。
另外,云計算除了三層架構(gòu)之外,從橫向范疇來說,云還可以劃分為公有云、私有云、社區(qū)云和混合云等。公有云是指第三方提供商為用戶提供的能夠使用的云,可在整個開放的公有網(wǎng)絡(luò)中提供服務(wù)。在公有云中,云服務(wù)提供商通過自己的基礎(chǔ)設(shè)施直接向外部用戶提供服務(wù),外部用戶通過互聯(lián)網(wǎng)訪問服務(wù),并不擁有云計算資源。私有云是為一個客戶單獨(dú)使用而構(gòu)建的,該客戶擁有基礎(chǔ)設(shè)施,并可以控制在此基礎(chǔ)設(shè)施上部署應(yīng)用程序的方式。私有云可由公司自己的IT機(jī)構(gòu),也可由云服務(wù)提供商進(jìn)行構(gòu)建,可部署在企業(yè)數(shù)據(jù)中心的防火墻內(nèi),也可部署在一個安全的主機(jī)托管場所。社區(qū)云是由幾個組織共享的云端基礎(chǔ)設(shè)施,支持特定的社區(qū)。混合云由兩個或者更多云端系統(tǒng)組成云端基礎(chǔ)設(shè)施,這些云端系統(tǒng)中可能包含公有云、私有云、社區(qū)云等,這些系統(tǒng)保有獨(dú)立性,但借由標(biāo)準(zhǔn)化或封閉式專屬技術(shù)相互結(jié)合,可確保資料與應(yīng)用程序的可攜性。
2)SOA架構(gòu)
長期以來企業(yè)面臨的關(guān)鍵問題是如何解決已形成的煙囪式的企業(yè)計算環(huán)境,SOA的出現(xiàn)就是為了解決獨(dú)立系統(tǒng)間的整合問題,或者說系統(tǒng)架構(gòu)的問題。SOA作為一種面向服務(wù)的架構(gòu),是一種軟件架構(gòu)設(shè)計的模型和方法論。SOA將異構(gòu)平臺上的應(yīng)用程序拆分為不同的功能單元(服務(wù)),服務(wù)之間通過定義良好的接口和規(guī)范以松耦合的方式整合在一起。接口是采用中立的方式進(jìn)行定義的,它獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言,這使得構(gòu)建在各種系統(tǒng)中的服務(wù)可以使用一種統(tǒng)一和通用的方式進(jìn)行交互。
從業(yè)務(wù)角度來看,SOA利用企業(yè)現(xiàn)有的各種軟件體系,重新整合并構(gòu)建起一套新的軟件架構(gòu)。這套軟件架構(gòu)能夠隨著業(yè)務(wù)的變化,隨時靈活地結(jié)合現(xiàn)有服務(wù),組成新軟件,共同服務(wù)于整個企業(yè)的業(yè)務(wù)體系。我們可以把SOA看作是模塊化的組件,每個模塊都可以實(shí)現(xiàn)獨(dú)立功能,而不同模塊之間的結(jié)合則可以提供不同的服務(wù),模塊之間的接口遵循統(tǒng)一標(biāo)準(zhǔn),可以實(shí)現(xiàn)低成本的重構(gòu)和重組。在SOA的技術(shù)框架下,可以把雜亂無章的龐大系統(tǒng)整合成一個全面有序的系統(tǒng),從而增加企業(yè)在業(yè)務(wù)發(fā)展過程中應(yīng)用系統(tǒng)的靈活性,實(shí)現(xiàn)最大的IT資產(chǎn)利用率。
從上兩節(jié)云架構(gòu)和SOA架構(gòu)的概念來看,它們的出現(xiàn)也是為了解決不同的問題,但它們都是企業(yè)或政務(wù)信息化實(shí)施的架構(gòu),在業(yè)界看來屬于競爭關(guān)系,甚至有些學(xué)者認(rèn)為云計算可以取代SOA成為新的架構(gòu)風(fēng)格。實(shí)質(zhì)上,云計算和SOA架構(gòu)應(yīng)用在企業(yè)或政務(wù)信息化中,各有優(yōu)勢,也有自己的局限性。
從發(fā)展至今,云計算主要有處理能力強(qiáng)大、應(yīng)用高度集成、用戶成本低、大規(guī)模數(shù)據(jù)存儲等優(yōu)勢。但云計算還處于發(fā)展初期,局限性也有明顯。云的安全性是企業(yè)或政府需要考慮的首要問題。另外,現(xiàn)在不同云服務(wù)之間的交互能力非常弱,混合云架構(gòu)缺乏成熟的技術(shù)支撐。同時網(wǎng)絡(luò)帶寬的限制也會給云的部署和實(shí)施帶來一定影響。
SOA的優(yōu)勢主要有模塊的重用性、模塊之間的交互能力以及快速應(yīng)變能力。SOA 方法從服務(wù)提供者和服務(wù)消費(fèi)者的角度對功能方面涉及的對象、數(shù)據(jù)、組件、業(yè)務(wù)流程、界面等進(jìn)行層次化,為所有服務(wù)提取安全架構(gòu)、數(shù)據(jù)架構(gòu)、集成架構(gòu)、服務(wù)質(zhì)量管理等中的共用部分。SOA 架構(gòu)契合了企業(yè)信息化建設(shè)過程中業(yè)務(wù)創(chuàng)新的需要,同時也可以達(dá)到業(yè)務(wù)重用的效果,充分降低了企業(yè)的成本。
但是SOA 在企業(yè)信息化實(shí)施過程中仍有一些不足。目前SOA最好的實(shí)現(xiàn)方式是web服務(wù),但web服務(wù)本身也有不成熟的地方[5],比如在可靠消息傳遞、web事務(wù)處理等方面的標(biāo)準(zhǔn)還有待完善。另外,如何快速組裝服務(wù)以及控制服務(wù)顆粒度這兩方面,還有待進(jìn)一步研究,而服務(wù)顆粒大小問題在某種程度上決定了整個系統(tǒng)的靈活性和效率。
上一節(jié)提到云架構(gòu)與SOA架構(gòu)在信息化建設(shè)中各有優(yōu)缺點(diǎn),但其實(shí)它們之間除了競爭之外,還有著比較復(fù)雜的關(guān)系。我們認(rèn)為,云架構(gòu)和SOA架構(gòu)之間可以取長補(bǔ)短,在一定程度上結(jié)合起來形成新的架構(gòu)來更好地支撐復(fù)雜的信息化建設(shè)。
首先,從云計算的架構(gòu)和SOA的概念來看,SOA在云計算中最廣泛使用的地方是PaaS平臺的中間件組件。PaaS的中間件包含事務(wù)型中間件、消息中間件、遠(yuǎn)程過程/對象調(diào)用中間件、應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器、ESB、BPM等多種類型,SOA架構(gòu)本身即是一種組件模型,可以組合異構(gòu)平臺中的各種應(yīng)用程序,而目前PaaS平臺的能力還尚未成熟,PaaS架構(gòu)中正是需要這種標(biāo)準(zhǔn)化的組件模型,來支持其平臺中應(yīng)用程序的開發(fā)及部署。同時,SOA架構(gòu)的特性決定了它可用于包括PaaS在內(nèi)的任何云服務(wù)(包括基礎(chǔ)設(shè)施服務(wù)IaaS和軟件服務(wù)SaaS)的創(chuàng)建與交付中。
其次,云計算對于SOA有著良好的促進(jìn)作用。由于SOA架構(gòu)是一個好的架構(gòu)方法,使用SOA架構(gòu)建成的信息系統(tǒng)間的運(yùn)行與協(xié)作更加方便、標(biāo)準(zhǔn)化。為了獲得云計算的優(yōu)勢,企業(yè)用戶需要通過接口和架構(gòu)延展出去連接到云計算資源。為了更好的使用云計算的資源,企業(yè)內(nèi)部需要一定的架構(gòu)在核心企業(yè)信息系統(tǒng)和云計算資源之間建立鏈接,而這正是SOA可以做到的。
另外,市場上云的類型很多,私有云、公有云、社區(qū)云將長時間在市場上共存,形成混合云架構(gòu)。在這種情況下,SOA架構(gòu)可以很好的支持混合云的發(fā)展,利用模塊化架構(gòu)既可以更好地將模塊遷移到云,同時還可幫助云端的應(yīng)用程序進(jìn)行整合。SOA在企業(yè)應(yīng)用與混合云架構(gòu)中的作用大致如圖2所示。
圖2 SOA架構(gòu)應(yīng)用于混合云Fig. 2 SOA architecture used in hybrid cloud
如圖2所示,企業(yè)內(nèi)部應(yīng)用可通過SOA與混合云中某種云的應(yīng)用進(jìn)行互相遷移,同時混合云中不同平臺的應(yīng)用及服務(wù)也可通過SOA來進(jìn)行整合或遷移。
總的來說,云計算的發(fā)展對于SOA架構(gòu)在網(wǎng)絡(luò)、基礎(chǔ)架構(gòu)上的應(yīng)用都造成一定的影響,它們并不是排斥的關(guān)系,相反云計算的發(fā)展不僅對SOA不是一種取代關(guān)系,而是有顯著的促進(jìn)作用,同時云計算中也需要SOA架構(gòu)的應(yīng)用,有效地部署云計算服務(wù)需要SOA方法。云計算時代的到來,給SOA架構(gòu)帶來了更大的發(fā)展空間。
通過對云計算和SOA架構(gòu)之間關(guān)系的分析,可以看出兩者之間的關(guān)系比較復(fù)雜,并不是簡單的替代關(guān)系。上一節(jié)最后也提到,SOA與云計算架構(gòu)是密不可分的,對于將來的發(fā)展趨勢來說,由于兩種架構(gòu)各自的優(yōu)勢,更實(shí)際的方式是將兩種架構(gòu)結(jié)合應(yīng)用。將兩種架構(gòu)結(jié)合起來有兩種方式,一種是在SOA架構(gòu)中引入云計算,另一種是在云計算架構(gòu)中引入SOA,兩種方式各有偏重,主要區(qū)別是解決問題的出發(fā)點(diǎn)和側(cè)重點(diǎn)不一致,而實(shí)現(xiàn)的途徑基本一致。
1)在SOA中引入云計算
在SOA架構(gòu)中引入云計算,主要目的還是為了更好的集成軟件服務(wù),包括企業(yè)內(nèi)部信息系統(tǒng)與外部服務(wù)的集成,如SaaS和IaaS。有研究表示[6],使用SOA整合SaaS是可以實(shí)現(xiàn)的。通過SOA來整合SaaS服務(wù),可以將較小粒度的SaaS服務(wù)集成到一起,提供更抽象、粗粒度的軟件服務(wù)。SOA平臺中的ESB總線可以將云計算中的分布式計算模塊、云存儲等以服務(wù)的方式接入。同時SOA平臺需要的IT硬件基礎(chǔ)設(shè)施,可以直接使用云計算中IaaS層的虛擬化的計算能力單元和存儲能力單元,均以服務(wù)的方式接入到ESB總線上。
前文中提到了,SOA中的中間件平臺類似于云計算中的PaaS平臺,SOA中所包含的ESB總線、流程引擎、規(guī)則引擎等都可以發(fā)展為PaaS平臺的能力。
2)在云計算中引入SOA
在云計算中引入SOA,主要是為了解決云計算中不同云服務(wù)之間的交互能力弱的問題。如圖2所示,混合云架構(gòu)中不同云服務(wù)之間通常很難進(jìn)行整合和遷移,將SOA應(yīng)用到此處將有益于解決此問題。同時,通過引入SOA中的ESB總線,還可實(shí)現(xiàn)云計算中SaaS、PaaS、IaaS三層架構(gòu)之間的集成。
另外,PaaS層可以將SOA中的數(shù)據(jù)、業(yè)務(wù)、流程、展現(xiàn)服務(wù)均納入,提供給在線開發(fā)環(huán)境中應(yīng)用,這些服務(wù)在線進(jìn)行服務(wù)編排和組裝可借助SOA本身已有的流程引擎和規(guī)則引擎來完成。
前文分析了云計算與SOA兩種架構(gòu)各自的概念、優(yōu)缺點(diǎn),分析了兩種架構(gòu)之間的關(guān)系,以及業(yè)界將來可能的發(fā)展趨勢。
云計算和SOA均有自己的優(yōu)缺點(diǎn)。SOA使業(yè)務(wù)系統(tǒng)靈活應(yīng)對業(yè)務(wù)需求的變化,而云計算使軟硬件環(huán)境靈活響應(yīng)業(yè)務(wù)系統(tǒng)。同時云計算面臨不同云服務(wù)之間的交互問題,而SOA有利于整合技術(shù)平臺,統(tǒng)一技術(shù)標(biāo)準(zhǔn),打通不同云平臺上的服務(wù),促使云上的軟件和服務(wù)日趨成熟。
在實(shí)際工作中,企業(yè)或政府可以根據(jù)自身特點(diǎn)和實(shí)際需求,選擇通過適當(dāng)?shù)姆绞綄煞N架構(gòu)結(jié)合應(yīng)用,發(fā)揮兩種架構(gòu)各自的長處和優(yōu)勢。如果能將云計算和SOA進(jìn)行科學(xué)的結(jié)合,必將進(jìn)一步提高各自應(yīng)用時的效用,也有助于實(shí)現(xiàn)分布式系統(tǒng)和云計算產(chǎn)業(yè)的新一輪高速發(fā)展。
[1] W.Roy Schulte, Yefim V.Natis."Service Oriented" Architectures,Part 1[M].SSA Research Note,1996.
[2] Wikipedia.云計算[EB/OL].(2013-06-29)[2013-07-15].http://zh.wikipedia.org/wiki/%E4%BA%91%E8%AE%A1%E7%AE%97.
[3] 美國國家標(biāo)準(zhǔn)和技術(shù)研究院(NIST).NIST Cloud Computing Reference Architecture [S]. 2011.
[4] Massimo Pezzini, Benoit J. Lheureux. Integration Platform as a Service: Moving Integration to the Cloud [R].March, 2011.
[5] 王鄭. Web服務(wù)安全性研究[D]. 合肥:合肥工業(yè)大學(xué), 2007.
[6] 朱志良,苑海濤. SOA與云計算:競爭還是融合[J].計算機(jī)科學(xué),2011,38 (12):6-11.ZHU Zhi-liang, YUAN Hai-tao. SOA and cloud computing:competition or integration[J].Computer Science,2011,38(12):6-11.