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