隨着大量SaaS公司進入市場,咱們看到顛覆性的軟件服務以各類方式進入企業流程-從營銷工具到支付系統。隨着SaaS幫助優化業務流程,實現更流暢和自動化的運營,風險投資公司首先潛入池中尋找最優秀和最聰明的企業。git
github
若是您正在考慮將您的業務遷移到雲端,有三個詞將縈繞在你耳邊:數據庫
IaaS企業提供諸如即時即付存儲,網絡和虛擬化等服務。安全
IaaS爲用戶提供了基於雲的內部基礎架構替代方案,所以企業能夠避免投資昂貴的現場資源。服務器
維護內部部署的IT基礎架構既昂貴又耗費人力。網絡
它一般須要在物理硬件上進行大量的初始投資,而後您可能須要聘請外部IT承包商來維護硬件並保持一切正常運行和最新。經過IaaS,您能夠根據須要購買所需的產品,並隨着業務的增加購買更多產品。架構
IaaS平臺是:框架
高度靈活,高度可擴展。運維
可供多個用戶訪問。工具
性價比高。
IaaS示例: 阿里雲服務器ECS, AWS EC2Google Compute Engine(GCE)。
PaaS供應商經過互聯網提供硬件和軟件工具,人們使用這些工具開發應用程序。PaaS用戶每每是開發人員。
PaaS主要由正在構建軟件或應用程序的開發人員使用。PaaS解決方案爲開發人員提供了建立獨特,可定製軟件的平臺。
這意味着開發人員在建立應用程序時無需從頭開始,在編寫大量代碼時節省了大量時間(和金錢)。PaaS是那些想要創造獨特應用程序而又不花錢或承擔所有責任的企業的熱門選擇。
PaaS平臺是:
可供多個用戶訪問。
可擴展 - 您能夠從各類級別的資源中進行選擇,以適應您的業務規模。
基於虛擬化技術。
無需普遍的系統管理知識便可輕鬆運行。
PaaS示例: AWS Elastic Beanstalk,Heroku,Windows Azure(主要用做PaaS)。
SaaS平臺經過互聯網向用戶提供軟件,一般每個月訂閱費用。
使用SaaS,您無需在計算機(或任何計算機)上安裝和運行軟件應用程序。當您在線登陸賬戶時,一切均可經過互聯網得到。您一般能夠隨時從任何設備訪問該軟件(只要有互聯網鏈接)。使用該軟件的其餘人也是如此。您的全部員工都將擁有適合其訪問級別的個性化登陸。
另外一個關鍵優點是支付結構:
大多數SaaS提供商都使用固定的包含性月度賬戶費用來運營訂閱模式。您確切地知道軟件的成本是多少,而且能夠相應地進行預算,而沒必要擔憂隱藏的意外。
大多數訂閱包括維護,合規性和安全性服務,這在使用內部部署軟件時可能既耗時又昂貴。SaaS提供商還提供易於設置的開箱即用解決方案(若是您須要基本軟件包),併爲大型組織提供更復雜的解決方案。您能夠在幾小時內啓動並運行基本軟件 - 而且您能夠在此過程當中得到客戶服務和支持。
SaaS平臺是:
可經過互聯網得到。
由第三方提供商託管在遠程服務器上。
可擴展,具備適用於小型,中型和企業級業務的不一樣層。
包容性,提供安全性,合規性和維護做爲成本的一部分
SaaS示例: BigCommerce,Google Apps,Salesforce,Dropbox,MailChimp,ZenDesk,DocuSign,Slack,Hubspot。
聊到PaaS,SaaS,就不得不談到多租戶。
多租戶指一套系統可以支撐多個租戶。一個租戶一般是具備類似訪問模式和權限的一組用戶,典型的租戶是同一個組織或者公司的若干用戶。
要實現多租戶,首先須要考慮的是數據層面的多租戶。數據層的多租戶模型對上層服務和應用的多租戶實現有突出影響。本文重點介紹數據層多租戶對各類多租戶模型的支持。
權衡不一樣的多租戶實現方式時,須要考慮以下因素:
擴展性:租戶數量級別,以及將來發展趨勢
安全性:租戶之間數據隔離級別要求
資源共享:多租戶一般有某種形式的資源共享,須要避免某個租戶的糟糕SQL吃掉系統資源,影響其餘租戶的響應時間
靈活性:不一樣租戶可能有不一樣的需求,對特定租戶需求的擴展能力
跨租戶分析和優化:對所有租戶或者多個租戶的數據和行爲進行分析的能力
運維和管理:運維管理的複雜度和便宜性,包括監控、修改數據庫模式、建立索引、收集統計數據、數據加載等
成本:整體擁有成本,包括方案實現成本、運維成本等
多租戶模型描述了租戶和該租戶的數據之間的映射關係。不一樣的多租戶模型會影響數據庫和應用程序的設計、管理和維護。
最簡單的多租戶實現方式是爲每個租戶建立一個數據庫,以下圖所示。應用程序爲每一個租戶分配一個租戶id,併爲每一個租戶配置相應的數據庫鏈接信息(包括數據庫ip、端口等)。應用程序根據租戶id鏈接到爲其分配的數據庫。
這種模型中不一樣租戶的數據物理隔離,安全級別高。若是每一個租戶的數據庫使用不一樣的硬件和數據庫類型,則他們之間的資源使用也是物理隔離的;若是租戶的數據庫共用同一套硬件,則須要對資源進行合理分配和管理,避免相互影響。因爲不一樣租戶使用獨立的數據庫,靈活性好,容易知足不一樣租戶的特定需求(譬如須要額外的字段)。出現故障時影響面小。缺點是數據庫數量大,維護複雜,擁有成本高。適合租戶數目比較少的場景。
多個租戶共享同一個數據庫,每一個租戶擁有獨立的名字空間(或模式)。應用程序爲每一個租戶分配一個id,並把每一個租戶的全部操做限制在爲其分配的名字空間/模式之中。以下圖所示。
這種多租戶模型下,不一樣租戶的數據邏輯上相互隔離,安全控制相對簡單。不一樣租戶有不一樣的模式,能夠簡便的知足不一樣租戶的特定需求,靈活性高。對資源管理能力要求高,以免不一樣租戶競爭資源。能夠把不一樣租戶的數據存儲在不一樣的磁盤上,下降了對磁盤IO的競爭。運維和管理較複雜,不易實現大量租戶的跨租戶分析。適合租戶數目適中的場景。
不一樣租戶共享同一個數據庫、同一個名字空間。不一樣租戶的數據在同一組表中共存,經過租戶id標記和訪問不一樣租戶的數據(應用須要調整訪問數據的SQL以包含租戶id)。以下圖所示。
這種多租戶模型中,不一樣租戶的數據物理存儲在一塊兒,對系統的資源隔離和安全隔離要求很高。運維相對簡單。擴展能力好,能夠支持較多數量租戶。因爲租戶數據存儲在一塊兒,跨租戶數據分析和優化很是簡單。成本低,能夠較低的代價支持更多的租戶。
全共享模型中,不少數據庫採用添加大量自定義字段的方式知足不一樣租戶的特定需求,以提升靈活性。這種方式有諸多侷限性,譬如字段數目不能太多、管理複雜等。支持更多半結構化數據,包括JSON 等,經過這種半結構化數據,能夠更靈活、高效、便捷的知足不一樣租戶的特定需求。
下面我經過用一個簡單的全共享數據庫的多租戶模式的案例,來對PaaS平臺型軟件進行演示。
系統帳戶層級以下圖所示:
在上圖這個系統用戶的層級關係中,咱們須要四張表:
ga_user:此表用於存儲PaaS平臺T1內全部的帳戶相關信息,如laowang@test.com,zhangshan@test.com,jingwa@test.com等帳戶和密碼。此表用於登陸平臺時,系統認證和權限控制時所用。
tenant:用於存儲全部的租戶信息,如SaaS A, SaaS B,SaaS C。
customer:用於存儲全部的客戶信息,如消費客戶/組織S1,消費客戶/組織S2。
device:用於存儲平臺內全部客戶,租戶的設備相關信息。
具體流程,能夠歸納爲:
咱們用PaaS平臺系統管理員賬號laowang@test.com登陸系統。
在系統中,新建SaaS A, SaaS B,SaaS C三個組織或者客戶,併爲這三個租戶分配各類租戶的租戶管理員帳戶,分別爲zhangsan@test.com, lisi@test.com,wangwu@test.com。當咱們用這三個帳戶登陸系統時,系統根據租戶id和相應的權限顯示對應的框架內容和組織信息。
這三個組織利用PaaS平臺上的服務框架和應用爲須要的客戶和組織提供一站式解決方案,有點相似咱們採用阿里雲平臺上的服務框架來解決本身的企業需求。
當SaaS B具體到實施項目時,爲消費客戶/組織S1或消費客戶/組織S2分配賬號進行公有云訂閱服務,進行項目迭代交付或者本地化實施。
UML實體圖以下:
版權聲明: 做者:穆書偉
github出處:github.com/sanshengshu…
我的博客出處: