前言
隨着大量SaaS公司進入市場,我們看到顛覆性的軟件服務以各種方式進入企業流程-從營銷工具到支付系統。隨着SaaS幫助優化業務流程,實現更流暢和自動化的運營,風險投資公司首先潛入池中尋找最優秀和最聰明的企業。
如果您正在考慮將您的業務遷移到雲端,有三個詞將縈繞在你耳邊:
IaaS(技術設施即服務)
解釋
IaaS企業提供諸如即時即付存儲,網絡和虛擬化等服務。
IaaS為用戶提供了基於雲的內部基礎架構替代方案,因此企業可以避免投資昂貴的現場資源。
優勢
維護內部部署的IT基礎架構既昂貴又耗費人力。
它通常需要在物理硬件上進行大量的初始投資,然后您可能需要聘請外部IT承包商來維護硬件並保持一切正常運行和最新。通過IaaS,您可以根據需要購買所需的產品,並隨着業務的增長購買更多產品。
特點
IaaS平台是:
-
高度靈活,高度可擴展。
-
可供多個用戶訪問。
-
性價比高。
示例
IaaS示例: 阿里雲服務器ECS, AWS EC2Google Compute Engine(GCE)。
PaaS(平台即服務)
解釋
PaaS供應商通過互聯網提供硬件和軟件工具,人們使用這些工具開發應用程序。PaaS用戶往往是開發人員。
優勢
PaaS主要由正在構建軟件或應用程序的開發人員使用。PaaS解決方案為開發人員提供了創建獨特,可定制軟件的平台。
這意味着開發人員在創建應用程序時無需從頭開始,在編寫大量代碼時節省了大量時間(和金錢)。PaaS是那些想要創造獨特應用程序而又不花錢或承擔全部責任的企業的熱門選擇。
特點
PaaS平台是:
-
可供多個用戶訪問。
-
可擴展 - 您可以從各種級別的資源中進行選擇,以適應您的業務規模。
-
基於虛擬化技術。
-
無需廣泛的系統管理知識即可輕松運行。
示例
PaaS示例: AWS Elastic Beanstalk,Heroku,Windows Azure(主要用作PaaS)。
SaaS(軟件即服務)
解釋
SaaS平台通過互聯網向用戶提供軟件,通常每月訂閱費用。
優勢
使用SaaS,您無需在計算機(或任何計算機)上安裝和運行軟件應用程序。當您在線登錄帳戶時,一切都可通過互聯網獲得。您通常可以隨時從任何設備訪問該軟件(只要有互聯網連接)。使用該軟件的其他人也是如此。您的所有員工都將擁有適合其訪問級別的個性化登錄。
另一個關鍵優勢是支付結構:
大多數SaaS提供商都使用固定的包含性月度帳戶費用來運營訂閱模式。您確切地知道軟件的成本是多少,並且可以相應地進行預算,而不必擔心隱藏的意外。
大多數訂閱包括維護,合規性和安全性服務,這在使用內部部署軟件時可能既耗時又昂貴。SaaS提供商還提供易於設置的開箱即用解決方案(如果您需要基本軟件包),並為大型組織提供更復雜的解決方案。您可以在幾小時內啟動並運行基本軟件 - 並且您可以在此過程中獲得客戶服務和支持。
特點
SaaS平台是:
-
可通過互聯網獲得。
-
由第三方提供商托管在遠程服務器上。
-
可擴展,具有適用於小型,中型和企業級業務的不同層。
-
包容性,提供安全性,合規性和維護作為成本的一部分
示例
SaaS示例: BigCommerce,Google Apps,Salesforce,Dropbox,MailChimp,ZenDesk,DocuSign,Slack,Hubspot。
多租戶
什么是多租戶
聊到PaaS,SaaS,就不得不談到多租戶。
多租戶指一套系統能夠支撐多個租戶。一個租戶通常是具有相似訪問模式和權限的一組用戶,典型的租戶是同一個組織或者公司的若干用戶。
要實現多租戶,首先需要考慮的是數據層面的多租戶。數據層的多租戶模型對上層服務和應用的多租戶實現有突出影響。本文重點介紹數據層多租戶對各種多租戶模型的支持。
權衡不同的多租戶實現方式時,需要考慮如下因素:
-
擴展性:租戶數量級別,以及未來發展趨勢
-
安全性:租戶之間數據隔離級別要求
-
資源共享:多租戶通常有某種形式的資源共享,需要避免某個租戶的糟糕SQL吃掉系統資源,影響其他租戶的響應時間
-
靈活性:不同租戶可能有不同的需求,對特定租戶需求的擴展能力
-
跨租戶分析和優化:對全部租戶或者多個租戶的數據和行為進行分析的能力
-
運維和管理:運維管理的復雜度和便宜性,包括監控、修改數據庫模式、創建索引、收集統計數據、數據加載等
-
成本:總體擁有成本,包括方案實現成本、運維成本等
多租戶模型
多租戶模型描述了租戶和該租戶的數據之間的映射關系。不同的多租戶模型會影響數據庫和應用程序的設計、管理和維護。
一租戶一數據庫
最簡單的多租戶實現方式是為每一個租戶創建一個數據庫,如下圖所示。應用程序為每個租戶分配一個租戶id,並為每個租戶配置相應的數據庫連接信息(包括數據庫ip、端口等)。應用程序根據租戶id連接到為其分配的數據庫。
這種模型中不同租戶的數據物理隔離,安全級別高。如果每個租戶的數據庫使用不同的硬件和數據庫類型,則他們之間的資源使用也是物理隔離的;如果租戶的數據庫共用同一套硬件,則需要對資源進行合理分配和管理,避免相互影響。由於不同租戶使用獨立的數據庫,靈活性好,容易滿足不同租戶的特定需求(譬如需要額外的字段)。出現故障時影響面小。缺點是數據庫數量大,維護復雜,擁有成本高。適合租戶數目比較少的場景。
一租戶一名字空間(Schema/Namespace)
多個租戶共享同一個數據庫,每個租戶擁有獨立的名字空間(或模式)。應用程序為每個租戶分配一個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…
個人博客出處: