張 華
(渤海大學(xué) 應(yīng)用技術(shù)學(xué)院,遼寧 錦州121000)
云計算是一種使用Internet來訪問IT資源的新型網(wǎng)絡(luò)應(yīng)用模式。用戶只要連接上Internet,就可以以租用的方式來使用存諸在“云”中的各種各樣的IT資源,無論是硬件還是軟件,而租戶不用知道到底這些資源存諸在什么位置,由誰來管理。云計算正在逐漸改變著終端用戶的使用體驗(yàn)。云計算提供IaaS(Infrastructure as a Service:基 礎(chǔ) 設(shè) 施 即 服 務(wù)),PaaS(Platform-as-a-Service:平臺即服務(wù)),SaaS(Software-as-a-Service:軟件即服務(wù))。本文主要討論目前應(yīng)用最為廣泛的SaaS。
SaaS(Software-as-a-Service:軟件即服務(wù))是云計算提供的一種服務(wù)類型,即通過Internet提供應(yīng)用軟件的服務(wù)模式。SaaS供應(yīng)商將開發(fā)的應(yīng)用軟件統(tǒng)一部署在服務(wù)器上,租戶可以根據(jù)自己的實(shí)際需求,通過Internet向SaaS供應(yīng)商租用所需的應(yīng)用軟件服務(wù),租戶按租用應(yīng)用軟件服務(wù)數(shù)量的多少和租用時間的長短向SaaS供應(yīng)商支付費(fèi)用。這種模式作為一種新型的軟件運(yùn)營模式,具有價格適中、維護(hù)方便、使用簡單等特點(diǎn),正在被越來越多的企業(yè)接受和認(rèn)可,那么它和傳統(tǒng)的在本地運(yùn)行的應(yīng)用軟件相比有哪些區(qū)別呢?
(1)開發(fā)的周期:對于個性化的定制軟件,傳統(tǒng)的開發(fā)模式從需求分析、軟件設(shè)計、程序編碼、軟件測試到運(yùn)行維護(hù)根據(jù)定制軟件的復(fù)雜程度可能最快需要三個月的時間才能完成投入使用;而SaaS模式企業(yè)只要找到合適的SaaS供應(yīng)商,提出自已的實(shí)際需求,最快可能在幾分鐘之內(nèi)就可以把應(yīng)用軟件布署完成,租戶便可以使用。
(2)軟件的所有權(quán):傳統(tǒng)應(yīng)用軟件的所有權(quán)是屬于自己企業(yè)的,比如從某軟件公司定制一個財務(wù)管理的應(yīng)用軟件,企業(yè)會得到一個安裝文件,在本機(jī)上安裝運(yùn)行使用,以后這個軟件的所有權(quán)就屬于本企業(yè);而SaaS模式,應(yīng)用軟件的所有權(quán)是屬于SaaS供應(yīng)商的,企業(yè)只是租用了應(yīng)用軟件的服務(wù),而沒有擁有應(yīng)用軟件本身。
(3)硬件的支持:傳統(tǒng)應(yīng)用軟件都是運(yùn)行在本地計算機(jī)上,所有的硬件環(huán)境是由企業(yè)自身來提供的。而SaaS模式因?yàn)閼?yīng)用軟件不是運(yùn)行在本地計算機(jī)上,而是在SaaS供應(yīng)商所提供的計算機(jī)上,所以所需的硬件也是由SaaS供應(yīng)商提供,企業(yè)是租用SaaS供應(yīng)商的硬件資源。
(4)性能的維護(hù):傳統(tǒng)的應(yīng)用軟件性能的維護(hù)是由企業(yè)自已的IT部門來負(fù)責(zé),因?yàn)檐浖男阅芎艽蟮某潭仁怯捎布l件來決定的;而SaaS模式則是由SaaS供應(yīng)商來負(fù)責(zé)保證應(yīng)用軟件的性能。
(5)費(fèi)用:傳統(tǒng)應(yīng)用軟件的費(fèi)用主要由購買軟件的版本費(fèi)用,硬件支持費(fèi)用、軟件維護(hù)的費(fèi)用三方面購成的;SaaS模式是按照租用應(yīng)用軟件服務(wù)數(shù)量的多少和租用時間的長短向SaaS供應(yīng)商支付費(fèi)用。
通過對比,發(fā)現(xiàn)使用SaaS模式租用軟件和使用傳統(tǒng)方式定制軟件相比優(yōu)勢非常明顯,SaaS模式正逐漸受到企業(yè)的關(guān)注,并在將來很可能會成為企業(yè)信息化首選的一種實(shí)現(xiàn)方式。
對于SaaS供應(yīng)商而言,一個SaaS應(yīng)用發(fā)布后,最重要的技術(shù)難關(guān)應(yīng)該是能夠提供多個租戶同時租用,不同的租戶對應(yīng)用軟件配置之后可以形成適合自已企業(yè)的一個應(yīng)用軟件實(shí)例,由本企業(yè)來使用。但租戶的要求是千差成別的,要讓一個軟件支持多個租戶同時使用,目前主要通過配置文件和數(shù)據(jù)庫設(shè)計兩個方面來滿足其個性化的業(yè)務(wù)需求。為了便于理解,在此之前,先來參考一下微軟提出來的SaaS架構(gòu)的四個成熟度模型。
一級:定制級
在這種成熟度模型下,應(yīng)用程序的代碼有一部分是公用的,但SaaS供應(yīng)商也要為每個租戶做一部分定制化的開發(fā),每個租戶都擁有獨(dú)一無二的應(yīng)用實(shí)例。
二級:配置級
在這種成熟度模型下,所有實(shí)例都使用相同的基礎(chǔ)代碼,但要求SaaS供應(yīng)商提供詳盡的配置文件,可以讓租戶能夠任意的訂制應(yīng)用軟件的行為和外觀,從而滿足不同租戶的需求。
三級:多用戶效率級
在這種成熟度模型下,SaaS供應(yīng)商利用一個實(shí)例來滿足不同租戶的需求,并采用可配置文件為不同的租戶提供獨(dú)一無二的用戶使用體驗(yàn)。
四級:可擴(kuò)展性級
此級成熟度是最高級別的成熟度,SaaS供應(yīng)商在負(fù)載平衡的服務(wù)器上為不同租戶提供主機(jī)服務(wù),運(yùn)行相同的實(shí)例,不同客戶的數(shù)據(jù)彼此分開,可配置的文件可以提供單獨(dú)的租戶體驗(yàn)與特性集。
在這四個級別的成熟度中,成熟度級一和成熟度級二隔離性好,共享性低,成本會高一些;成熟度級三和成熟度級四共享性高,隔離性差,成本會低一些。
不同的租戶對于租用的應(yīng)用軟件功能和外觀要求有差異,目前解決的辦法是通過配置文件來實(shí)現(xiàn),可以使用Portal技術(shù)來完成配置實(shí)現(xiàn)。Portal技術(shù)主要提供個性化定制、單點(diǎn)登錄和內(nèi)容聚集等功能,所有這些功能在與最終用戶進(jìn)行個性化的交互中實(shí)現(xiàn),用戶可以決定自已的應(yīng)用程序窗口的風(fēng)格,也可以決定自已的頁面上顯示哪些內(nèi)容,通過 “My Portal”來滿足每個租戶的需求。
Portal的每個交互頁中包含了很多種不同的信息,分成不同的小窗口,而每個窗口是一個單獨(dú)的應(yīng)用,這些窗口稱為Portlet。一個Portal可以是多個Portlet的集合。Portal提供Portlet的運(yùn)行環(huán)境,稱之為Portlet容器。Portlet容器負(fù)責(zé)創(chuàng)建Portlet,接受Portal服務(wù)器的請求,并將請求發(fā)給相應(yīng)Portlet,同時返回Portlet生成的內(nèi)容并管理它們的生命周期。而Portal服務(wù)器負(fù)責(zé)將每個Portlet生成的內(nèi)容集合起來展現(xiàn)給租戶,與租戶交互。因此在開發(fā)Portal應(yīng)用時,主要是開發(fā)實(shí)現(xiàn)各個功能的Portlet。Portlet實(shí)際上和Servlet很類似,是Java編寫的WEB組件。
Potal應(yīng)用的重要功能就是“個性化”,一方面Portlet也會根據(jù)租戶的要求顯示不同的內(nèi)容,另一方面Portal服務(wù)器需要根據(jù)租戶的不同顯示不同的Portlet。這就要求Portlet能夠保存租戶的信息,Portlet的Portlet Preferences接口提供讀取、設(shè)置屬性的方法。通過Portal便能對配置文件進(jìn)行控制,讓不同的租戶有不同的使用體驗(yàn)。
為了讓SaaS應(yīng)用能滿足不同租戶的需求,數(shù)據(jù)庫的設(shè)計必須具有可擴(kuò)展性,以滿足不同租戶的不同需求。目前數(shù)據(jù)庫設(shè)計可分為隔離模式和共享模式。隔離模式即為每個租戶設(shè)計單獨(dú)的數(shù)據(jù)庫,此種方式安全性較高,但消耗的硬件資源較大,成本較高。共享模式即為不同租戶共享同一數(shù)據(jù)庫,此種模式相對來說數(shù)據(jù)庫安全性較低,成本較低,但開發(fā)難度較大,因?yàn)椴煌淖鈶魧τ跀?shù)據(jù)庫的要求是不一樣的,比如同為公司員工信息表,有的公司可能有家庭住址的信息,而有的公司沒有,或者都有這一項(xiàng),但不同公司定義的名稱是不一樣的,怎樣讓不同的公司來共享同一個數(shù)據(jù)庫呢?
(1)傳統(tǒng)的解決方案是冗余設(shè)計,就是設(shè)計一個詳盡的大表,設(shè)計時把各個公司所有可能出現(xiàn)的字段都填加上,如果租戶有需要就添加該字段信息,否則為NULL。這樣的設(shè)計固然能解決問題,但缺點(diǎn)也不言而喻,浪費(fèi)空間,影響效率。
(2)通過關(guān)聯(lián)表的方式來解決,即通過擴(kuò)展表來實(shí)現(xiàn)數(shù)據(jù)擴(kuò)展。在這種方案中關(guān)聯(lián)表將數(shù)據(jù)表的橫向列擴(kuò)展轉(zhuǎn)換成縱向的數(shù)據(jù)集,將原數(shù)據(jù)表中每一個擴(kuò)展字段都保存成一條數(shù)據(jù)記錄,并將數(shù)據(jù)表中的記錄與原表關(guān)聯(lián),構(gòu)成擴(kuò)展數(shù)據(jù)記錄。通常需要三張數(shù)據(jù)表:租戶表,配置表和擴(kuò)展表。當(dāng)租戶想要增加數(shù)據(jù)時,只需把字段名稱、類型和擴(kuò)展表等信息存在配置表中,在擴(kuò)展表中保存關(guān)聯(lián)記錄、與之關(guān)聯(lián)的配置記錄和數(shù)據(jù)的值。
(3)XML的數(shù)據(jù)擴(kuò)展模型。XML即可擴(kuò)展標(biāo)記語言,它的主要功能是存儲數(shù)據(jù)和WEB服務(wù),在SaaS應(yīng)用中可以把XML作為一個字段放在數(shù)據(jù)庫中來實(shí)現(xiàn)數(shù)據(jù)的擴(kuò)展性,通過SQL查詢語句來訪問字段中的XML文檔中的數(shù)據(jù)。XML文檔的層次性便于對數(shù)據(jù)的擴(kuò)展,而且XML文檔具有數(shù)據(jù)語義的自解釋性,使得對數(shù)據(jù)的解析變得簡單。很多關(guān)系型數(shù)據(jù)庫都增加了XML數(shù)據(jù)類型。XML數(shù)據(jù)類型可用作參數(shù)和變量的數(shù)據(jù)類型,還可用于創(chuàng)建表、列或視圖。這種模型只需要對XML字段進(jìn)行擴(kuò)展就可以靈活地滿足租戶擴(kuò)展數(shù)據(jù)的要求,而且對字段類型和字段擴(kuò)展的數(shù)量都沒有限制。因此,基于XML的數(shù)據(jù)類型,可以靈活方便地應(yīng)對不同租戶的數(shù)據(jù)擴(kuò)展需求。
綜上所述,通過Portal技術(shù)和數(shù)據(jù)庫的擴(kuò)展技術(shù),便能夠設(shè)計出能夠同時滿足多個租戶的SaaS應(yīng)用。
SaaS模式是隨著云計算發(fā)展,滿足市場的一種需求。要想使SaaS應(yīng)用更加普及,就要求SaaS供應(yīng)商能夠提供更加低廉的價格、更加完善的功能、和更高品質(zhì)的服務(wù)。目前,SaaS應(yīng)用在中國仍在起步階段,除了技術(shù)問題之外,SaaS供應(yīng)商的可靠性和口碑、營銷手段、商業(yè)運(yùn)作模式等方面都對SaaS模式在中國的推廣提出了挑戰(zhàn),也會為國內(nèi)軟件企業(yè)和互聯(lián)網(wǎng)企業(yè)的發(fā)展帶來新的機(jī)遇。