SaaS軟件相對(duì)傳統(tǒng)軟件而言,具有強(qiáng)大的規(guī)模效應(yīng)。就傳統(tǒng)軟件而言,每部署一套應(yīng)用都需要配置相應(yīng)的服務(wù)器,網(wǎng)絡(luò)設(shè)備,運(yùn)維人員及進(jìn)行一定程度的定制化開發(fā),成本隨部署應(yīng)用的增多以恒定的速率上升。但SaaS模式只部署一套軟件實(shí)例,所需投入的開發(fā)、服務(wù)器、運(yùn)維人員是明確的。隨著客戶規(guī)模的上升,分?jǐn)偟絾蝹€(gè)客戶所需要承擔(dān)的成本將進(jìn)一步下降。如圖所示:
在軟件初期,SaaS模式需要投入的軟件綜合使用成本會(huì)比傳統(tǒng)模式高,但隨著客戶數(shù)的增加,SaaS模式的”規(guī)模效應(yīng)”的逐漸形成,其綜合使用成本上升幅度不大,并逐步趨于平穩(wěn)。反觀傳統(tǒng)模式,隨著客戶數(shù)的增加,所需投入的軟件綜合使用成本一直以恒定的增幅上升。
SaaS應(yīng)用具有可預(yù)期的規(guī)模效應(yīng),這種規(guī)模效應(yīng)不僅僅是商業(yè)上的問(wèn)題,更是一個(gè)應(yīng)用架構(gòu)的問(wèn)題,只有更穩(wěn)定優(yōu)良的應(yīng)用架構(gòu),才能更好的支撐SaaS。根據(jù)是否具有可配置性、高性能、可伸縮可將SaaS成熟度分為四級(jí),每一級(jí)都比前一級(jí)增加三種特性中的一種。
Level1:定制開發(fā)
為用戶提供專用的數(shù)據(jù)庫(kù)實(shí)例及應(yīng)用服務(wù)器實(shí)例,依據(jù)用戶實(shí)際需求進(jìn)行定制化開發(fā),其實(shí)最初的SaaS應(yīng)用成熟度模型,在技術(shù)架構(gòu)上和傳統(tǒng)項(xiàng)目型軟件開發(fā)或軟件外包沒(méi)什么區(qū)別。有一個(gè)客戶項(xiàng)目,就按照客戶的需求來(lái)定制一個(gè)版本,每個(gè)客戶都有一份獨(dú)立的代碼,各版本間可通用的只有少量可重用軟件,庫(kù)及開發(fā)人員經(jīng)驗(yàn)。
雖然最初級(jí)的SaaS模型,在應(yīng)用架構(gòu)上和傳統(tǒng)軟件模式并沒(méi)有什么區(qū)別,但,在商業(yè)模式上,最初級(jí)的SaaS模型和傳統(tǒng)軟件模式,還是存在本質(zhì)上的區(qū)別–即軟硬件及相應(yīng)的維護(hù)職責(zé)都由SaaS服務(wù)商提供,用戶按需繳納費(fèi)用即可使用。
Level2:可配置
還是為用戶部署單獨(dú)的運(yùn)行實(shí)例,但有效的減低了第二次開發(fā)的成本,通過(guò)可配置的形式,滿足用戶的基本需求。
最初級(jí)的成熟度模型,顯然并不是良好的SaaS成熟度模型,每次新增用戶都需要進(jìn)行定制化的開發(fā),單獨(dú)部署。這種模式勢(shì)必會(huì)導(dǎo)致隨著客戶數(shù)的增加,需要投入的定制化開發(fā)成本,軟硬件已經(jīng)運(yùn)營(yíng)成本,都將隨著客戶的增加而按照比較增加。
但這種模式達(dá)到一定規(guī)模后,想要進(jìn)一步擴(kuò)大規(guī)模,基本上就只能依賴于人肉戰(zhàn)術(shù)了。
所以,首先需要解決的問(wèn)題就是降低定制化開發(fā)成本。SaaS第二級(jí)依賴的解決方案,就是通過(guò)可配置化實(shí)現(xiàn)有效降低開發(fā),進(jìn)而達(dá)到縮減成本的目的。希望通過(guò)可配置化來(lái)滿足不同客戶的需求,而不需要為客戶進(jìn)行特定的開發(fā)。
但是,其實(shí)通過(guò)描述可發(fā)現(xiàn),在第二級(jí)模型中,軟件的部署架構(gòu)并沒(méi)有發(fā)生多大的變化,依舊是為每個(gè)客戶部署一個(gè)運(yùn)行實(shí)例,只是每個(gè)運(yùn)行實(shí)例都是運(yùn)行著同一份代碼,通過(guò)配置的不同來(lái)滿足不同客戶的需求。
Level3:高性能多租戶架構(gòu)
從應(yīng)用架構(gòu)的角度而言,第一級(jí)和第二級(jí)成熟度模型和傳統(tǒng)軟件并沒(méi)有太大的區(qū)別,只是在商業(yè)模式上比較符合SaaS的定義。由于其應(yīng)用架構(gòu)的設(shè)計(jì)是為每一個(gè)新的租戶都單獨(dú)部署一份軟件實(shí)例,在一對(duì)一的架構(gòu),勢(shì)必會(huì)導(dǎo)致需要維護(hù)軟硬件成本,隨著新租戶的增加而直線上升,無(wú)法有效的發(fā)揮SaaS模式的規(guī)模效應(yīng)。
所以,多租戶單實(shí)例的SaaS架構(gòu)才是通常上真正意義的SaaS模式,多個(gè)租戶對(duì)應(yīng)一個(gè)軟件實(shí)例可有效的降低軟硬件成本,充分發(fā)揮SaaS模式的規(guī)模效應(yīng)。
實(shí)現(xiàn)多租戶模型的關(guān)鍵是通一定的策略來(lái)確保用戶數(shù)據(jù)的獨(dú)立性,用戶共享統(tǒng)一的應(yīng)用實(shí)例,勢(shì)必會(huì)對(duì)數(shù)據(jù)獨(dú)立性提出一定的要求,在用戶需求差別不大,客戶數(shù)量不多時(shí),講一個(gè)第一級(jí)/第二級(jí)成熟度模型改造成多租戶并不會(huì)太復(fù)雜,通??梢酝ㄟ^(guò)獨(dú)立數(shù)據(jù)庫(kù),共享數(shù)據(jù)庫(kù)獨(dú)立數(shù)據(jù)結(jié)構(gòu),共享數(shù)據(jù)結(jié)果實(shí)現(xiàn)。
Level4:可伸縮性多租戶架構(gòu)
該級(jí)別的初始目的為了實(shí)現(xiàn)在用戶數(shù)大量增加的情況下,無(wú)須更改應(yīng)用架構(gòu),只需要簡(jiǎn)答的增加硬件部署的數(shù)量,就可支撐應(yīng)用規(guī)模的增長(zhǎng)。在架構(gòu)設(shè)計(jì)中的Tenant Load Balaner層將會(huì)保存用戶,租戶與對(duì)應(yīng)軟件實(shí)例的映射,用戶登錄后,即刻映射到對(duì)應(yīng)的軟件實(shí)例。