1 引言
橫看成嶺側成峰,遠近高低各不同。 不識廬山真面目, 只緣身在此山中。
________蘇軾,《 題西林壁》
“社會化大開發”是人們夢寐以求的事情,信息化的軟件將象您自家的水管一樣,當您需要時您只要擰開水龍頭,自來水就會源源不斷地送到您家。將來的軟件也會這樣,只要您能上網,您隨時都可通過訪問軟件服務公司提供商的某個地址,您所需要的業務就可以在網上完成,這里您完全不需要把軟件和數據庫下載到本地安裝,也不讓您自己手工升級和維護。您所要做的一個前提條件是您先必須通過注冊的方式去購買這種服務。不僅僅是業務軟件,就連操作系統等這樣的龐然大物將來也會在您開機時通過網聯網臨時送到您電腦而不是您事先安裝好。
2 什么是SaaS
2.1 SaaS的定義
SaaS是Software-as-a-service(軟件即服務)的簡稱,是隨着互聯網技術的發展和應用軟件的成熟,而在21世紀開始興起的一種完全創新的軟件應用模式。它與“on-demand software”(按需軟件),ASP,hosted software(托管軟件)所具有相似的含義。它是一種通過Internet提供軟件的模式,廠商將應用軟件統一部署在自己的服務器上,客戶可以根據自己實際需求,通過互聯網向廠商定購所需的應用軟件服務,按定購的服務多少和時間長短向廠商支付費用,並通過互聯網獲得廠商提供的服務。用戶不用再購買軟件,而改用向提供商租用基於Web的軟件,來管理企業經營活動,且無需對軟件進行維護,服務提供商會全權管理和維護軟件,軟件廠商在向客戶提供互聯網應用的同時,也提供軟件的離線操作和本地數據存儲,讓用戶隨時隨地都可以使用其定購的軟件和服務。對於許多小型企業來說,SaaS是采用先進技術的最好途徑,它消除了企業購買、構建和維護基礎設施和應用程序的需要。近年來,SaaS的興起已經給傳統套裝軟件廠商和平台軟件廠商帶來真實的壓力,同時,社會化軟件大開發就是以SaaS為基礎,它是時代發展的必然產物和先進思想。
在這種模式下,企業不再象傳統模式那樣花費大量投資用於硬件、軟件、人員,而只
需要支出一定的租賃服務費用,通過互聯網便可以享受到相應的硬件、軟件和維護服務,享有軟件使用權和不斷升級,這是網絡應用最具效益的營運模式。企業采用SaaS服務模式在效果上與企業自建信息系統基本沒有區別,但節省了大量用於購買IT產品、技術和維護運行的資金,且像打開自來水龍頭就能用水一樣,方便地利用信息化系統,從而大幅度降低了中小企業信息化的門檻與風險。
同時,服務提供商通過大規模的客戶收取一定服務費用,一方面來達到軟件的最大利
用率,另一方面也降低頻繁的客戶現場實施和維護費用,更多的精力投入到技術及服務質量上,更好地通過有效的技術措施保證每家企業數據的安全性和保密性。
2.2 SaaS的三層含義
SaaS有三層含義:
1. 表現層
SaaS是一種業務模式,這意味着用戶可以通過租用的方式遠程使用軟件,解決了投資和維護問題。而從用戶角度來講,SaaS是一種軟件租用的業務模式。
2. 接口層
SaaS是統一的接口方式,可以方便用戶和其他應用在遠程通過標准接口調用軟件模塊,實現業務組合。
3. 應用實現層
SaaS是一種軟件能力,軟件設計必須強調配置能力和資源共享,使得一套軟件能夠方便地服務於多個用戶。
SaaS模式下的軟件運營商,從不同層面提出了從系統設計、接口需求到軟件實現的不同要求見圖2-1:
圖2-1 SaaS模式下各層的含義及實現
對SaaS軟件的第一個要求就是將SaaS軟件中的管理流與業務流進行分離。運營的本質就是控制,“通信能力運營”就是對用戶能否使用通信能力的切換,而通信能力本身在設計之初,就支持這種切換;“IT應用運營”,也同樣需要支持這種切換能力,而應用軟件本身,往往更關注業務能力的實現,應用軟件要轉變成為SaaS軟件,必須從根本上實現對使用權限的外部控制,也就是要實現管理流與業務流的分離,管理流用於實現對IT應用的切換控制,業務流用於保證IT應用功能的實現。
SaaS軟件在接口方面,必須滿足用戶統一的遠程調用要求。隨着互聯網技術和分布式計算技術的發展,越來越多的用戶希望遠程連接到數據源和應用,以期實現應用程序跨多個服務器的分布和運行,這也是Web2.0中混合搭建(Mash Up)的目標。SaaS軟件需要支持采用分布式的SOA架構,使軟件系統具備更強的靈活性、適應性和可維護性。分布式SOA架構通過智能端點讓具備某種服務功能的應用自動找尋其他服務,並與其實現相互通信,從而滿足基於SOA架構的SaaS軟件對各項技術和成本的要求。
SaaS模式面向長尾市場,要求SaaS軟件必須具備低成本運行能力和個性化配置能力。一方面,利基市場雖然總和誘人,但如果不能解決多用戶間的資源共享,隨着用戶數量的增加,SaaS軟件的運營成本就會線性上升,而無法產生規模效應;另一方面,客戶在接受SaaS軟件主要業務流程的前提下,還會有一定的個性要求,比如企業標識、頁面版式、頁面色系等,這也是SaaS軟件需要滿足的客戶需求。此外,計算能力共享、存儲能力共享、代碼共享、個性化配置能力、大容量支持能力等等,都是編制SaaS軟件中需要解決的問題。
2.3 SaaS常用詞語解釋
l 跨界混搭(mash-up)
“跨界混搭”這個術語起源於流行音樂,編曲者把兩張唱片混編以后重新制作出一首
新歌。這個概念應用在SaaS上,就是指把多個不同的在線應用軟件服務搭建成為一種新型的整合服務。用戶通常只需要登錄一次就可以使用集成好的應用軟件組合。
需要注意的是,當您把多種SaaS服務混合到一個軟件中去后,其中一種會是核心,如果其出現嚴重問題,將會影響到整個軟件的使用。
l 集成器(Connector)
集成器是一種軟件程序,讓您從一個應用程序中讀取數據,然后下載到SaaS解決方案中(同樣可以用於將數據送回到另一個應用程序中)。這種數據傳送通常用於實時或批量傳送的情況,企業完成初始數據的導入或導出,然后根據需要定期更新這些數據。比如,像國外的SaaS服務商Salesforce或國內的800CRM提供SAP[/url]集成器,就將SAP中的客戶數據導入到Salesforce或800CRM系統中。
l 解決方案擴展(Solution extension[/url])
SaaS 解決方案具有的擴展性讓用戶能夠在已存在的軟件結構上,按需再增加額外的工具或功能。像前面提到的Salesforce的App Exchange應用軟件開發平台,以及國內的SaaS托管商800CRM的800App應用軟件開發平台都是解決方案擴展的典型代表。
還有一些擴展性例如可以擴展數據模型,提供個性化的用戶界面以及其他更多自定制的擴展服務。
l 垂直應用(Vertical applications)
“垂直應用”不是SaaS的專用術語,它也應用於其他領域,通常是指為某一個領域(例如銀行,醫葯等)建立一個專門的平台。雖然它已經在傳統行業應用很多年了,但是相對來講應用在SaaS中還是一個比較新的概念。
隨着SaaS的不斷成熟,客戶希望SaaS服務商能提供詳細的垂直應用行業方案。例如,目前Salesforce的APP Exchange平台已經能夠實現全方位跨行業的應用,各個行業的公司都能夠在Salesforce的平台上進行二次開發。
l 參數應用(Parametric applications)
在傳統軟件模式下,如果軟件的服務功能需要改變,那么相應的代碼也需要重新編寫。但是在SaaS模式下,用戶可以通過輸入新的參數變量,或者制定一些數據關聯規則來開啟一種新的應用。這種新式服務模式也被稱為“參數應用”,“宏或”自定制對象,主要是因為這種應用程序可以讓用戶自己定制新的應用,不需要懂軟件編程。
Salesforce或800CRM升級系統,自定制對象也同時升級,而最本質的應用則是客戶可以自己通過改變參數和參數關聯來為系統增加新的功能。
l 模塊化(Modular)
SaaS中模塊功能主要用於關閉或開啟服務。在聚集了豐富功能的強大應用平台中,經理可以像選擇菜單那樣任意地選擇功能,關閉某些不需要用到的功能,也可以根據需求增加新的功能。
SaaS服務商基於網絡]架構建立了自己的應用平台,模塊的靈活性使得他們可以根據客戶的不同需求,將功能復雜繁多的系統配置成適合客戶的系統。
l 在線SaaS
“在線SaaS”從表面意思來看似乎有點累贅,SaaS本身的概念就是提供一種在線服務,因此所有的SaaS應用程序都應該是產生於網絡,壯大於網絡的。但該術語是相對於SaaS的前身——ASP(應用服務提供商)來說的,這是一種早期的遠程軟件托管形式。跟如今直接在網上使用的系統相比,ASP時代的用戶可能覺得通過專線或專用加密設備訪問的系統來得更安心。顯然,早期的ASP解決方案設計的一些運行緩慢的程序並沒有很好地體現“在線”這個概念, 很多ASP客戶需要借用、Citrix等實現遠程訪問。
所以當人們說 “在線SaaS”時,這個術語其實是在強調使用瀏覽器直接使用軟件,而加密是通過瀏覽器通用的加密協議。
l 基礎架構平台(Platform)
有時候SaaS的擁護者希望出現一種基礎架構的平台來推動SaaS更好地發展。
這是因為首先得有一個平台來支撐SaaS軟件應用程序的運行,如今最著名的是國外Salesforce公司的APP Exchange平台,國內800CRM的800APP Native的平台與Salesforce兼容。
l 服務水平協議(SLA)
SLA(Service Level Agreement),指IT服務提供商和客戶之間就服務提供中關鍵的服務目標及雙方的責任等有關細節問題而簽訂的協議,此協議重在陳述服務的質量、優先級和責權。
對於SLA的必要性,在BS15000-1中的服務提供過程中有明確指出:對服務提供全過程中的服務水平目標和工作量參數,應在組織(服務提供商和雇主公司)間協商同意並形成記錄。對每一項服務應定義、協定和記錄一個或多個服務水平協議(SLAs)。SLAs、運營級別協議和第三方合同(支持合同)及相應的程序應在相關組織間協商並記錄。
SLA不止是一個合同書,更主要的方面是“SLA過程”。所謂“SLA過程”是指通過SLA的管理,來保障在SLA合同書中對客戶承諾的QoS(Quality of Services)服務質量。
3 SaaS與傳統軟件的對比
SaaS的興起將是IT業的一場新革命。SaaS模式將徹底改變傳統軟件的開發方式和使用方式。傳統軟件將在這場革新的浪潮中被沖擊得支離破碎,大多數傳統軟件將會消亡或者轉型。
3.1 SaaS與傳統軟件的區別
傳統軟件是在公司內部架設軟件運行環境,自己購買應用服務器、數據庫服務器、網卡等硬件,安裝自己的局域網並在局域網內部署軟件。所以不同公司都各自部署一套自己的系統。不同公司的用戶事實是通過不同的途徑訪問不同的系統,如圖2-2所示:
圖2-2 傳統軟件
這種情況明顯可看出一個致命的問題。就是軟件的部署十分重要,軟件的部署不僅要投入大量的硬件設備,並且軟件部署的好壞直接影響着軟件的正常使用,有些軟件開發得再好,可是沒有較好的部署結果還是失敗。
以ERP軟件為例,需要ERP這樣的企業應用軟件,軟件的部署和實施比軟件本身的功能、性能更為重要,萬一部署失敗,那所有的投入幾乎全部白費,這樣的風險是每個企業用戶都希望避免的。通常的ERP、CRM項目的部署周期至少需要一兩年甚至更久的時間,而SaaS模式的軟件項目部署最多也不會超過90天,而且用戶無需在軟件許可證和硬件方面進行投資。傳統軟件在使用方式上受空間和地點的限制,必須在固定的設備上使用,而SaaS模式的軟件項目可以在任何可接入Internet的地方與時間使用。相對於傳統軟件而言SaaS模式在軟件的升級、服務、數據安全傳輸等各個方面都有很大的優勢。讓我們來看看SaaS模式的軟件部署,如圖2-3所示:
圖2-3 SaaS模式
通過上面的分析我們總結出SaaS模式與傳統軟件許可模式的區別:
表2-1 SaaS模式與傳統軟件許可模式的區別
比較項目SaaS模式傳統軟件許可模式
開發方式產品式開發。軟件開發商針對大眾化以產品式開發項目式開發。軟件開發商針對特定用戶大眾化以項目式開發為主
設備部署只需要使用最簡單的PC設備自己構建復雜的IT系統
服務模式由廠商提供專業維護和服務需要自己培養一個專業的IT維護團隊
使用方式任何可接入Internet的地方與時間使用必需在固定設備上使用
升級更新通過互聯網隨時更新軟件使用的版本版本更新周期較長
付費方式定期為定購的服務支付費用一次性承擔購買軟件的投資風險
升級更新通過互聯網隨時更新軟件使用的版本版本更新周期較長
3.2 SaaS對傳統軟件的影響
軟件運營服務(SaaS)的誕生將會對傳統軟件產業產生巨大的沖擊。它主要表現在以下三個方面:
第一,軟件運營服務模式將會成為未來軟件應用和銷售模式的主要模式之一,將越來越多地搶占傳統軟件模式的市場。計世資訊(CCW Research)預計,從2007年開始,會有大量的運營化(SaaS)軟件出現。到2010年,50%以上的傳統軟件將會同時出現軟件運營服務模式。如果傳統軟件提供商不進行戰略轉型,將會在未來的市場競爭中處於不利地位。
第二,軟件運營服務模式的出現將會促使傳統軟件的商業模式發生變化。由於軟件運營服務模式實行的是按需服務、按需付費的模式,對用戶的吸引力要遠遠高於傳統軟件的許可證模式。計世資訊(CCW Research)認為,隨着軟件運營服務按需服務和按需付費模式的普及與推廣,傳統軟件的商業模式尤其是付費模式也會逐漸向此靠攏。
第三,軟件運營服務的出現將會加劇傳統軟件業的整合與並購。由於軟件運營商采用“一對多”的服務模式,這必然導致軟件運營商的數量會大大減少,這也會給傳統軟件提供商帶來巨大的挑戰。計世資訊(CCW Research)預計,2010年,中國傳統的軟件提供商將有一半會消亡或轉型。
4 SaaS與ASP的異同
SaaS和ASP的重點都是“軟件部署為托管服務,通過因特網存取”。他們相同的地方
有:
l 運營模式:
軟件所有權屬於供應商,供應商來負責基礎設施和軟件維護升級工作。
l 服務方式:
客戶按一定的付費周期來租賃供應商的服務,費用可能隨着客戶使用規模大小不同。
供應商定期和客戶一起整理需求,以使服務能響應客戶變化。
l 盈利方式:
通過專業化和規模經濟來降低供應商軟件服務成本,以此達到盈利目的。附加的盈利
方式有廣告和無線增值等。
只有達到一定的規模,才能使供應商投入的硬件和專業服務成本和營業收入達到平
衡。在此之后,隨着規模的增大,供應商的銷售成本絲毫不受影響,利潤才開始增長。
SaaS雖然是建立在ASP的基礎上,它們的根源是相同的。ASP曾經倒在大眾的一片
“喝彩”聲中,只是過眼煙雲。今天的SaaS又有什么新的變化呢?這是大加都很關心的,SaaS並不是簡單的由ASP改變一下,也不是一種慨念的炒作。現在我們來討論下SaaS和ASP的主要區別:
l ASP是“一對一”關系而SaaS是“一對多”關系
ASP提供客戶服務是“一對一”關系,即針對不同的客戶定制不同的應用。而SaaS
提供客戶服務是“一對多”關系,即針對所有客戶都是相同的應用服務。
ASP模式下每個客戶運行供應商為自己定制的特有實例。從技術角度來說,就是每個
客戶使用一個數據庫、一個Web站點或者虛擬目錄。數據庫中的數據結構和應用的代碼可能都根據客戶需求做過定制化修改。
l SaaS是可自定義的
SaaS對於應用系統來說,更強調應用的可自定義,SaaS的自定義能力使得SaaS應用
能適合更廣泛的企業用戶,增多了很多用戶體驗,比如說自定義表單,自定義數據結構,自定義報表,自定義用戶界面,自定義業務流程。用戶可以通過這些可自定義的工具來滿足自己的個性要求。
l 服務范圍不同
SaaS應用更拓展了ASP的應用范圍,並不僅僅局限於應用系統的托管,而更着眼於
提供更多的互聯網服務。如Google Apps、Google Map甚至於郵件服務,都可以認為是SaaS應用的一種表現形式,原來含義上的托管已經從窄義的應用向廣義的互聯網應用轉換。總之,SaaS提供了企業更多可供選擇的互聯網服務,這些服務通過SaaS進行整合,集約地提供給企業用戶,和敏捷的應用互相輝映。
l 技術復雜程度不同
傳統的ASP只是針對每個客戶定制不同的應用,而沒有將所有的客戶放在一起進行考
慮。在SaaS模式中,在用戶和Web服務器上的應用之間增加了一個中間層,這個中間層用來處理用戶的定制、擴展性和多用戶的效率問題。技術上來說,要比ASP模式復雜得多。
SaaS模式ASP模式都秉承“軟件即服務”的理念,但是SaaS要比ASP復雜的多。
而SaaS的軟件架構有較大改變,廣泛應用Ajax技術,支持界面局部刷新,讓用戶有更好的體驗感受。
l 擴展性不同
SaaS模式的代碼和數據結構都是相同的,供應商在設計應用的時候已經考慮了擴展性,所以針對不同需求的客戶,可以采用靈活的配置來響應,但是應用數據仍然是隔離的。從技術角度來說,所有客戶都是使用一套安裝包,數據庫結構和一樣。
下面我們從“軟件即服務的”三個層面來比較SaaS模式與ASP模式的主要區別如表
2-2:
表2-2 SaaS模式與ASP模式在三個層面的區別
比較項目SaaS模式ASP模式
表現層以應用為中心,軟件開發商和應用服務商分離以應用為中心,軟件開發商和應用服務商合一
接口層支持遠程標准接口應用級的調用不支持遠程標准接口應用級的調用
應用實現層強調對資源的合理調配及共同使用一般通過軟件復用實現應用共享
5 SaaS與SOA的異同
SOA是現在最流行的話語之一,它廣泛被業界所關注。大家一談到SaaS,似乎都要聯想到SOA,有的人甚至把SaaS與SOA混為一談,認為SaaS就是SOA。
SOA和SaaS,雖然有許多相似之處,一度被比喻成軟件圈內的雙“S”。它們有時被稱作攣生姐妹,真是情同手足;但有時又被看作冤仇世家,看似貌合神離,又不得不走到一起。這么多的難以理解的東西纏在一起確實搞得人一團霧水,還是讓我們先來正確地理解SOA是什么?
什么是SOA?
SOA(Service-Oriented Architecture,面向服務架構)是一個面向服務的架構模型,它將應用程序的不同功能單元——服務(service),通過服務間定義良好的接口和契約(contract)聯系起來。接口采用中立的方式定義,獨立於具體實現服務的硬件平台、操作系統和編程語言,使得構建在這樣的系統中的服務可以使用統一和標准的方式進行通信。SOA與大多數通用的客戶端/服務器模型的不同之處,在於它着重強調軟件組件的松散耦合,並使用獨立的標准接口。
從業務角度理解SOA,它是針對企業的一些舊的軟件體系重新利用,進行整合,構建一套松散耦合的軟件系統,同時也能方便的結合新的軟件共同服務於企業的一個體系。使系統能夠隨着業務的變化更加靈活適用。
從技術角度理解SOA,SOA實際上是系統分析設計思想的進一步發展,它的思想超出了對象的概念,一切都以服務為核心,而服務由組件構成,組件是若干操作的集合,操作對應具體實現的程序函數。服務是通過對業務過程模型的分析而識別出來的。每個服務能夠實現若干功能,這些功能由組件而不是操作來實現。組件是操作的調用集合,是服務功能實現的最小單位,而不是程序實現的最小單位。
在具體實現上,只要能提供服務的技術都可以實現SOA思想,如Web Service、RMI、Remoting、CORBA、JMS、MQ、甚至JSP、SERVLET等,另外還可以通過分布式事務處理和分布式軟件狀態管理來進一步地改善它。但是如果想讓這些服務能夠更廣泛的被使用,或被大家認可,在互聯網上發布,那么就要遵循一定的規則標准了。這一類的標准有SOAP、Java API for XML-based RPC (JAX-RPC)、WSDL 和 WS-* 規范等等。另外它的實現還需要安全性、策略管理、可靠消息傳遞以及會計系統的支持。
直觀地理解,可以把SOA看做是模塊化地組件,每個模塊實現獨立功能,不同的拼合提供不同的服務。利用SOA,把一團亂麻龐大無章的系統規整成一個一個的模塊,方便地實現IT的最大利用率,並提高重用度。
雖然SOA和SaaS的本質都是Service(服務),但內涵卻大相徑庭。
通過上面的分析,SOA和SaaS的區別大概可以概括為以下幾點:
l 服務的方式不同
SaaS所說的服務實際上是基於web的應用軟件,而SOA所說的服務是web API,
或者叫web service。這兩個概念是完全不同的。比如一個SaaS的運營商,在SaaS平台上提供了HR,CRM等系統。用戶可以通過在網上租賃的形式來租借這些軟件。而SOA是提供的不是軟件,而是接口函數,比如說查詢IP地址和城市對應的API,查詢天氣的API。當然SOA主要還是用戶開發應用軟件的中間件,這些中間件可以在互聯網上發布,這是將來互聯網的趨勢,也可以解決軟件的版權問題。
l 服務的對象不同
SOA包括了關於軟件是如何被架構起來的東西,而SaaS是關於軟件是如何被應用的。SOA是種技術,這種技術供軟件生產者使用。SaaS是種商業模式,是把開發出的軟件通過租賃的方式供用戶使用。
l 服務的范圍不同
SaaS模式的軟件既可用SOA來架構,也可以不需要SOA。SOA不僅僅在SaaS模式的軟件上被采用,而且大膽的應用在任何WEB軟件架構中,包括一個小型的單用戶軟件。
l 整體與部分的關系
在SaaS當中,應用程序可以像任何服務一樣被傳遞,就像您家中電話的語音一樣,看起來似乎就是為您的需求量體裁衣得到的,SaaS是個整體的軟件系統;而SOA的定義和這個無絲毫的聯系。SOA支持的服務,都是些離散的可以再使用的事務處理,這些事務處理合起來就組成了一個業務流程,是從基本的系統中提取出來的抽象代碼,SOA只是構成一個完整系統的部分框架。
l SaaS主要提供服務而SOA提供技術支持
SaaS主要是指一個軟件企業向其它企業提供軟件服務。而SOA一般是企業內部搭建系統的基礎。SaaS注重的是提供服務的思維。而SOA注重的是實現服務的思維。
6 小結
本文介紹了什么是SaaS,並且比較了SaaS與ASP、SOA的不同之處。通過對SaaS的介紹,讓我們對SaaS有了較深入的理解,也能區分ASP與SaaS的不同。為我們進行SaaS的深入研究奠定的基礎。