SaaS系統(tǒng)著重于敏捷性和整合服務(wù),同時(shí)強(qiáng)調(diào)對(duì)多用戶的并發(fā)支持,所以在開(kāi)發(fā)時(shí),更多的會(huì)考慮系統(tǒng)的高并發(fā)性、高數(shù)據(jù)量的特點(diǎn),而且也要求系統(tǒng)平臺(tái)必須具有非常高的性能和伸縮性。由此可見(jiàn),研發(fā)人員在設(shè)計(jì)和實(shí)現(xiàn)基于SaaS的管理軟件時(shí)會(huì)面臨著諸多挑戰(zhàn),如系統(tǒng)性能、系統(tǒng)安全、良好的伸縮性與擴(kuò)展性等。本文主要從整體架構(gòu)、數(shù)據(jù)模型、擴(kuò)展性、伸縮性這幾個(gè)方面分析目前SaaS平臺(tái)管理系統(tǒng)的設(shè)計(jì)思路和主要特點(diǎn)。
1整體架構(gòu)
從整體系統(tǒng)架構(gòu)設(shè)計(jì)的角度來(lái)看,目前主流的SaaS平臺(tái)主要采用以下三種結(jié)構(gòu):
1.1獨(dú)立用戶架構(gòu)這種獨(dú)立用戶架構(gòu)中,每個(gè)客戶都擁有一個(gè)為其定制的應(yīng)用實(shí)例,應(yīng)用實(shí)例具有完全不同的底層代碼。從系統(tǒng)架構(gòu)而言,基于這種架構(gòu)SaaS管理軟件非常類似于傳統(tǒng)的本地軟件,它的基本特點(diǎn)是屬于同一客戶的不同終端用戶使用客戶端軟件連接到同一個(gè)應(yīng)用實(shí)例,與其它同時(shí)運(yùn)行在服務(wù)器上的應(yīng)用實(shí)例相比,該客戶的應(yīng)用實(shí)例在服務(wù)器上完全獨(dú)立運(yùn)行。
因?yàn)檫@個(gè)原因,在花費(fèi)少量開(kāi)發(fā)資源和無(wú)需重新設(shè)計(jì)整個(gè)架構(gòu)的前提下,傳統(tǒng)的服務(wù)器/客戶端的應(yīng)用可以被改造成為這種架構(gòu)的的SaaS系統(tǒng)。技術(shù)人員通過(guò)將已有的非SaaS系統(tǒng)重構(gòu)為基于獨(dú)立用戶的SaaS系統(tǒng),然后整合服務(wù)器資源,并降低管理成本,比起其它更為成熟的SaaS管理系統(tǒng),這種方式可以在投入不大的情況下獲得一定收益。所以目前不少企業(yè)管理軟件開(kāi)發(fā)商都常常使用這種架構(gòu)來(lái)設(shè)計(jì)并實(shí)現(xiàn)自己的SaaS系統(tǒng)。但是,雖然在開(kāi)發(fā)上投入較少,這種SaaS系統(tǒng)也具有不可避免的缺點(diǎn),主要是在使用后期,隨著所支持客戶數(shù)的上升,系統(tǒng)硬件維護(hù)和平臺(tái)運(yùn)營(yíng)費(fèi)用會(huì)急劇升高。因此從長(zhǎng)遠(yuǎn)角度來(lái)看,帶來(lái)的收益有限。
1.2獨(dú)立但可配置的用戶架構(gòu)在獨(dú)立但可配置的用戶架構(gòu)中,盡管每個(gè)客戶還是各自擁有一個(gè)單獨(dú)的應(yīng)用實(shí)例,但每個(gè)用戶實(shí)例可以根據(jù)客戶需求單獨(dú)定制。獨(dú)立但可配置的用戶架構(gòu)與獨(dú)立用戶架構(gòu)相比,最大的不同點(diǎn)在于,獨(dú)立但可配置的用戶架構(gòu)中,每個(gè)客戶所使用的應(yīng)用實(shí)例將基于完全相同底層的代碼,但SaaS服務(wù)提供商可以提供詳細(xì)的配置選項(xiàng),不同的應(yīng)用實(shí)例之間保持獨(dú)立運(yùn)行在服務(wù)器之上,并允許客戶修改部分流程和應(yīng)用的界面。獨(dú)立但可配置的用戶架構(gòu)將所有客戶的應(yīng)用實(shí)例統(tǒng)一在同一代碼庫(kù)之下,它在很大程度上減少了服務(wù)提供商的服務(wù)需求。
主要原因在于,此時(shí)對(duì)系統(tǒng)底層代碼任何微小的改變都會(huì)馬上影響到所有客戶,雖然可以節(jié)省單獨(dú)修改所付出的成本,但是比起獨(dú)立用戶架構(gòu),如果將一個(gè)傳統(tǒng)的C/S系統(tǒng)重寫(xiě)為這一類基于獨(dú)立但可配置的用戶架構(gòu)的SaaS管理軟件系統(tǒng),將需要花費(fèi)更多的二次開(kāi)發(fā)成本。最后,此類系統(tǒng)同獨(dú)立用戶架構(gòu)相類似的一點(diǎn)是,它同樣需要SaaS服務(wù)提供商提供足夠的硬件資源來(lái)同時(shí)運(yùn)行大量的并發(fā)應(yīng)用實(shí)例,因此在后期運(yùn)行中,需要非常高的運(yùn)營(yíng)成本和維護(hù)成本。因此不少企業(yè)管理開(kāi)發(fā)商在開(kāi)發(fā)基于SaaS管理軟件系統(tǒng)時(shí),已漸漸減少采用這種架構(gòu)。
1.3可配置的多用戶架構(gòu)這種架構(gòu)是目前的主流架構(gòu),在這一可配置的多用戶架構(gòu)中,一個(gè)運(yùn)行的應(yīng)用實(shí)例將為系統(tǒng)內(nèi)的所有客戶服務(wù),同時(shí)系統(tǒng)配置元數(shù)據(jù),通過(guò)這一方式為每一個(gè)客戶提供不同用戶功能。而且系統(tǒng)采用可配置的安全策略和權(quán)限控制方式,這能保證每一個(gè)客戶的數(shù)據(jù)可被單獨(dú)存放,并將它數(shù)據(jù)隔離于其它的客戶。因此從最終用戶來(lái)看,他們看到所使用的應(yīng)用實(shí)例是透明的,這些實(shí)例在同一時(shí)間也會(huì)為其他客戶所共享。隨著SaaS服務(wù)提供的業(yè)務(wù)和客戶增多,通常的解決辦法是通過(guò)提供更多的服務(wù)器資源來(lái)運(yùn)行更多應(yīng)用實(shí)例,而且常常這是唯一的方式,這種可配置的多用戶架構(gòu)同樣有效地解決了這樣一個(gè)問(wèn)題。采用了這種架構(gòu)后,比起前兩種架構(gòu)的SaaS系統(tǒng),SaaS服務(wù)供應(yīng)商可以用同樣數(shù)量的服務(wù)器資源為更多的客戶服務(wù),從而更有效地利用硬件資源,降低運(yùn)營(yíng)成本。因此不少企業(yè)管理開(kāi)發(fā)商在開(kāi)發(fā)基于SaaS管理軟件系統(tǒng)時(shí),紛紛采用這種架構(gòu)。
2數(shù)據(jù)模型 除了整體架構(gòu),數(shù)據(jù)模型也是一個(gè)SaaS系統(tǒng)中最為核心的部分。對(duì)于構(gòu)建一個(gè)SaaS平臺(tái)的數(shù)據(jù)模型來(lái)說(shuō),最關(guān)鍵的問(wèn)題在于決定如何在數(shù)據(jù)的共享和隔離之間求得一定的平衡,而目前主流的SaaS平臺(tái)一般采用以下兩種方式構(gòu)造其數(shù)據(jù)模型。
2.1獨(dú)立數(shù)據(jù)庫(kù)獨(dú)立數(shù)據(jù)庫(kù)方式是實(shí)現(xiàn)數(shù)據(jù)隔離的一種最為簡(jiǎn)便的解決方案,在這一方案中,每個(gè)客戶的數(shù)據(jù)單獨(dú)存放在一個(gè)獨(dú)立數(shù)據(jù)庫(kù)中。所有的客戶共享使用大部分的系統(tǒng)資源,大部分的代碼。但在物理層面上,每個(gè)客戶都擁有自己一整套單獨(dú)存放的數(shù)據(jù)。系統(tǒng)用元數(shù)據(jù)來(lái)記錄基本信息,如數(shù)據(jù)庫(kù)和特定客戶的對(duì)應(yīng)關(guān)系等。系統(tǒng)內(nèi)也設(shè)置一系列的數(shù)據(jù)安全訪問(wèn)策略和用戶控制權(quán)限,通過(guò)這一方法,即使整個(gè)SaaS系統(tǒng)突然發(fā)生異常狀況,也能保證某個(gè)客戶的數(shù)據(jù)不會(huì)意外被其它客戶所訪問(wèn),從而提高數(shù)據(jù)的安全性。
在實(shí)際商業(yè)應(yīng)用中,如果客戶為了做到數(shù)據(jù)隔離,確保數(shù)據(jù)安全,而愿意支付額外的費(fèi)用,這種獨(dú)立數(shù)據(jù)庫(kù)的數(shù)據(jù)模型是最為適合的解決方案。如銀行業(yè)或醫(yī)療行業(yè)的客戶們,為了安全考慮,經(jīng)常需要隔離數(shù)據(jù),在某些極端情況下,這些客戶可能都不會(huì)去使用任何不支持客戶獨(dú)立數(shù)據(jù)庫(kù)的SaaS系統(tǒng)。所以一般這種數(shù)據(jù)模型的應(yīng)用范圍比較有限,只會(huì)被通用客戶或者對(duì)數(shù)據(jù)安全不具備敏感性的行業(yè)客戶所采用。
2.2共享數(shù)據(jù)庫(kù)目前大部分基于SaaS的管理系統(tǒng)都采用共享數(shù)據(jù)庫(kù)的方式,所有客戶各自擁有一套不同的數(shù)據(jù)表組合,并存放在單獨(dú)的Schema之內(nèi),但它們共享同一個(gè)數(shù)據(jù)庫(kù)。從開(kāi)發(fā)的角度而言,技術(shù)人員比較容易實(shí)現(xiàn)這種客戶獨(dú)立Schema的方式。從數(shù)據(jù)擴(kuò)展性來(lái)看,這種解決方案允許客戶相對(duì)自由地增加和修改其中的數(shù)據(jù)結(jié)構(gòu)。系統(tǒng)在開(kāi)始建立客戶的Schema時(shí),會(huì)預(yù)先創(chuàng)建一系列初始的數(shù)據(jù)結(jié)構(gòu),然后客戶可以對(duì)其做個(gè)性化的修改,來(lái)使其符合實(shí)際應(yīng)用中的業(yè)務(wù)需求。
在數(shù)據(jù)共享和數(shù)據(jù)隔離之間,這種客戶獨(dú)立Schema的方式獲得了一定的平衡。通過(guò)數(shù)據(jù)庫(kù)共享的方式,一臺(tái)服務(wù)器就可以支持更多的客戶,同時(shí)又確保了數(shù)據(jù)安全,因?yàn)樵谖锢砩蠈?shí)現(xiàn)了一定程度的數(shù)據(jù)隔離。正因?yàn)檫@一良好特性,因此為大部分的SaaS系統(tǒng)所采用。
3系統(tǒng)擴(kuò)展性和伸縮性 在使用SaaS管理系統(tǒng)的時(shí)候,不同情況下的使用者有著不同的要求,在實(shí)際應(yīng)用中,一個(gè)擴(kuò)展性不好的數(shù)據(jù)模型無(wú)法滿足客戶在配置方面的個(gè)性化需求。因此開(kāi)發(fā)的SaaS系統(tǒng)具有良好的擴(kuò)展性,是應(yīng)用中的一個(gè)重要用戶需求。除此之外,SaaS系統(tǒng)在自設(shè)計(jì)之初就是為了使數(shù)以千計(jì)的用戶同時(shí)使用,與普通的一般軟件系統(tǒng)相比,系統(tǒng)具備良好的伸縮性就顯得非常重要。因?yàn)樵赟aaS系統(tǒng)內(nèi),每一客戶端都擁有非常多的用戶,而且隨著客戶數(shù)量的上升,用戶數(shù)量也會(huì)成倍地上升。用戶數(shù)量的上升對(duì)于客戶端安裝的企業(yè)軟件而言,意味著提升系統(tǒng)的性能。 ..
|