Azure 上的多租用戶 SaaS

Microsoft Entra ID
Azure App Service
Azure DNS
Azure Front Door
Azure Kubernetes Service (AKS)

當您識別企業軟體解決方案的一部分時,您可以將品牌和市場化為其他企業,為公司新增全新的收入來源。 不過,設定解決方案以考慮大量租使用者帶來的負載,通常是一個具有挑戰性的障礙。 此解決方案會導覽一套可保護及平衡流量的 Azure 技術。

架構

此圖顯示兩個不同區域中在 Azure 中設定的多租使用者 SaaS 架構。

下載此架構的 Visio 檔案

工作流程

一套 Azure 技術可保護流量並平衡負載。

  1. Microsoft Azure Front Door 會處理一些初始工作:

    • 處理初始要求

    • 跨區域的負載平衡

    • SSL(HTTPS) 終止和卸除

    • 如果發生區域性中斷,故障轉移

  2. Azure DNS 會管理 DNS 記錄,並確保路由至正確的 Azure Front Door 端點。

  3. 此架構會使用 Microsoft Entra ID 作為驗證的識別提供者。

  4. 路由至適當的區域之後,應用程式閘道 路由和負載平衡,將要求導向適當的 Azure App 服務。

  5. 針對此架構,使用 App Service 是下列服務的慣用服務:

    • 任何 HTTP 型應用程式。

    • 提供 Web 內容。

    • 公開 RESTful API。

    • 實作前端應用程式背後的商業規則。

    您可以設定 App Service 自動相應增加和相應放大。 它讓 App Service 非常適合視需要調整租使用者 HTTP 驅動要求的主機。

  6. 數據存取層服務也會根據負載獨立調整。 數據服務會管理數據模型、連接客戶端和驅動程式。 這些服務也會為想要在應用程式中取用數據的所有較高層級服務提供一致的數據介面。 您可以使用 Azure Kubernetes Service (AKS) 部署和調整這些數據服務。 每個 AKS 叢集都負責圖層中的一組相關功能。 AKS 可以實作微服務架構,其具有一系列容器,每個容器都會封裝叢集中的特定功能。 這允許在程式代碼中產生高度的抽象和取消結合。 它也允許叢集個別相應放大,以考慮從多個租使用者增加的負載。 如果叢集上的負載增加,每個叢集都可以相應增加其資源。 相應增加不會影響資源群組中的其他叢集,只要它們沒有發生相同的增加。

  7. 在應用程式架構外部儲存和管理關係型數據。 這樣做會為任一區域提供單一數據輸入點。 您可以利用 Azure SQL 彈性集區的強度來達成複寫、可用性、延展性和安全性。 在集區中布建每個租用戶一個資料庫。 在載入和要求傳入時,將集區中可用的資源配置給隨選資料庫。 這會針對您的預算,將租使用者可用的資料庫資源優化。

元件

主要元件是此解決方案中架構的建議元件。 如果任何主要元件不符合您的架構,請參閱替代元件清單。

主要元件

  • Azure Front Door:將用戶端流量路由傳送至正確區域的區域負載平衡器。 如果發生區域失敗,它可以故障轉移至第二個區域,而且可以透過 Azure Web 應用程式防火牆 保護因特網對向進入點。

  • Microsoft Entra 識別碼:作為整個應用程式的識別提供者,在應用程式中強制執行要求的驗證和端對端授權。

  • Azure DNS:Azure 中用於功能變數名稱解析的主機服務。 在多租用戶解決方案中,多個用戶端會透過自己的個別網域存取解決方案。 使用 Azure DNS 來設定用戶端要求並將其解析為其正確的應用程式堆疊。

  • 應用程式閘道:將應用程式中內部的流量路由和負載平衡至滿足客戶端業務需求的各種服務。 雖然 Azure Front Door 會平衡高階區域的負載,但 應用程式閘道 可感知群組內個別服務的負載。 Azure Front Door 和 應用程式閘道 結合,在多租用戶解決方案中提供所有層級的複雜負載平衡。 如需 Azure 中負載平衡選項的詳細資訊,請流覽 Azure 負載平衡的概觀。

  • App Service:適用於 Web 應用程式和 Web 型 API 的 Azure 頂級服務。 安全性會與 Microsoft Entra ID 和 Azure 金鑰保存庫 等服務整合。 您可以設定自動調整。 此外,可供調整的資源數量在應用程式可執行的各種 App Service 方案之間具有彈性。 App Service 也可以利用整合式 DevOps 功能,持續整合和部署至多個環境。 Azure 平台的這些和其他支援功能可讓開發人員專注於其應用程式的開發。

  • Azure Kubernetes Service:協調部署到叢集的容器映像實例。 管理多個客戶端資料通常牽涉到實作一組要管理的元件:

    • 資料模型

    • 資料來源連線能力

    • 擷取、轉換、載入 (ETL)

    • 匯入/匯出活動

    將這些較小的元件開發為容器型微服務,會建立部署至 AKS 叢集的理想案例。 自動調整、負載平衡和可升級性的工具已內建於架構中。 AKS 使用可用的 DevOps 功能和 Azure Container Registry,與持續整合/持續傳遞 (CI/CD) 策略整合良好。

  • Azure SQL 彈性集區:提供一個解決方案,讓您以資源集區彈性管理一組資料庫。 服務會視需要配置資源給資料庫。 它可讓多租使用者 SaaS 架構的開發人員在需要資料庫資源時將資料庫資源傳遞給用戶端。 此服務也會減少使用大量未使用計算資源來維護多個 SQL Server 的預算和額外負荷。

  • Azure 認知搜尋(先前稱為 Azure 搜尋服務):將功能強大的索引和查詢引擎新增至您的應用程式的服務。 它可讓用戶端存取強式查詢功能。 他們也可以使用 Azure 的 AI 功能來擴充和增強查詢功能。 Azure 認知搜尋 可以使用每個租用戶索引或服務個別租使用者策略來考慮多租使用者。

  • Azure Cache for Redis:將快取層當做服務套用至解決方案,提供記憶體內部受控快取,以減少延遲並提升用戶端的效能。 高輸送量可讓大量要求處理存取系統的多個租使用者。 隨著應用程式負載增加,您可以彈性地相應增加服務。 它也支援待用加密來保護和隔離快取的租用戶數據。

替代元件

  • Azure 虛擬機器擴展集:允許將服務部署至虛擬機 (VM) 環境,視需要自動調整和成長。 虛擬機器擴展集與 整合良好負載平衡器或 應用程式閘道,以在擴展集成長時自動重新平衡負載。 虛擬機器擴展集 提供此解決方案所需的延展性。 不過,在許多情況下,管理完整的 VM 環境並不必要,我們可以將堆疊層級延遲至 App Service 或 AKS。

  • Azure SQL 資料庫:實作為個別專用實例,以取代彈性集區。 使用 Azure SQL 資料庫 可增加直接管理實例的額外負荷,併產生更多已配置資源的成本。 也就是說,當租使用者需要專用伺服器時,這是一個可接受的替代方案。 特別是,用戶端可能需要對實例和專用可用資源進行更多控制。 需要專用 SQL Server 的租使用者可以與彈性集區設定上的租用戶並存。 購買 SaaS 的授權時,您可以將 SQL 資料庫的其中一個定價選項提供給租使用者。

  • 虛擬機器 上的 SQL Server:部署 SQL 資料庫的另一個選項。 租使用者可能有預先存在的 IT 基礎結構和內部部署的現有 SQL Server。 在此情況下,租使用者可能會想要使用其目前的授權,做為完整移轉或在混合式案例中。 SaaS 的分離本質可讓應用程式的數據層透過設定以任何 SQL 資料庫 為目標。

案例詳細資料

當您識別企業軟體解決方案的一部分時,您可以將品牌和市場化為其他企業,為公司新增全新的收入來源。 不過,設定解決方案以考慮大量租使用者帶來的負載,通常是一個具有挑戰性的障礙。

Azure 提供一系列服務來管理軟體解決方案::

  • 彈性地維護所有客戶端的資料庫。

  • 調整解決方案的商業和邏輯層,以防止計算層的瓶頸。

  • 整合可用性和區域故障轉移。

  • 提供解決方案所有層級的端對端安全性。

潛在使用案例

這些使用案例具有可受益於 Azure 上裝載的多租使用者 SaaS 解決方案的設計模式:

  • 開發客戶關係管理 (CRM) 解決方案,讓客戶可以營銷及銷售給客戶。

  • 實作內容管理系統 (CMS) 系統,並使用這個架構將它傳遞給多個使用者。

考量

這些考量能實作 Azure Well-Architected Framework 的要素,其為一組指導原則,可以用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework (部分機器翻譯)。

多租使用者

多租用戶解決方案是此解決方案中的重要考慮。 解決方案會同時處理許多用戶端。 它也會配置足夠的資源,以有效處理所有用戶端要求。 處理要求時,解決方案會保護來自全域端點的流量,並隔離客戶端數據,以防止缺口和交叉污染。 根據用戶端的主要位置,將用戶端部署到一對區域資源群組。 這麼做可將區域可用性優化。

您可以將許多用戶端部署到單一計算群組,因為系統會根據驗證和用戶端密鑰隔離要求,這會根據這些唯一標識符區分要求。 系統可以透過其金鑰個別加密所有用戶端要求,讓任何用戶端都無法解密任何其他客戶端的數據。 在單一計算堆疊上管理多個用戶端可讓您將資源配置優化,以提供用戶端成本所需的回應性。

您可以使用類似計算堆疊以外的方式管理用戶端資料庫,因為用戶端要求可能會從其中一個區域堆疊抵達。 許多客戶端資料庫可以存在於相同的彈性集區上,隔離並受到透明數據加密 (TDE) 保護。 您可以設定每個資料庫,以使用用戶端管理的金鑰加密數據,並及時解密數據(JIT)。 解密 JIT 可保護來自開發人員和其他用戶端的客戶端數據。 系統會利用彈性集區,視需要提供資源給指派給它的客戶端,同時為您維持低成本。 您可以將複製策略指派給每個彈性集區,以提供客戶端數據的備份和故障轉移。 當您將更多客戶端上線到系統中時,讓更多彈性集區上線。

如需多租使用者解決方案的詳細資訊,請參閱 在 Azure 上建構多租用戶解決方案。

可靠性

可靠性可確保您的應用程式符合您對客戶的承諾。 如需詳細資訊,請參閱 可靠性支柱概觀。」

延展性和可用性

此解決方案的設計目的是要使用 SaaS 來考慮大量租使用者。 它會利用大量可調整的元件和服務,根據負載成長。 此架構不是針對服務少數租使用者或少量要求和數據負載的解決方案所設計。 它可能會強調以單一用戶端或較小負載為目標的解決方案預算。 因為不需要具備多重區域的額外負荷,因為其會增加不必要的複雜度和成本,因此不需要具備高可用性。

安全性

安全性可提供保證,以避免刻意攻擊和濫用您寶貴的資料和系統。 如需詳細資訊,請參閱安全性要素的概觀

系統可解決應用程式每個層級的端對端安全性:

  • Azure Front Door 為其網域提供內建 HTTPS 支援。 這表示系統可以將所有流量加密至 SaaS 應用程式。 Azure Front Door 也會實作 Azure Web 應用程式防火牆,在系統將要求路由傳送至應用程式之前,保護 SaaS 堆疊免於邊緣的攻擊。

  • 每個區域中的每個應用程式堆疊都位於 Azure 虛擬網絡 內。 系統會限制從 Azure Front Door 接受要求的虛擬網路流量,保護所有應用程式服務免於外部流量。 在安全防火牆內之後,應用程式閘道 可以終止 SSL,並在應用程式內提供高效能的負載平衡和路由。

  • 您可以使用 Azure 金鑰保存庫,安全地管理所有認證、秘密和 連接字串。 藉由將此敏感數據當作秘密來管理,開發人員可以在部署時將認證插入應用程式。 這麼做可確保程序代碼不會受到敏感性資訊的污染。 使用秘密可藉由確保程式碼或中間人攻擊中的缺口無法存取租用戶資料庫,來保護客戶端數據。

  • 在此案例中,如果不是相同的資料庫,多個租用戶的數據可能會並存在同一部資料庫伺服器上。 使用 TDE 和 JIT 解密可保護資料庫上的數據。 系統會加密待用資料庫上的所有數據,而且只會在租使用者要求時將其解密。 用戶端可以提供自己的金鑰,而且您可以將所有用戶端密鑰儲存在 Azure 金鑰保存庫 中,以管理多個租用戶的加密。 它會保護客戶端數據端對端、防止開發人員存取客戶端數據、隔離租使用者之間的數據,以及協助符合安全性和數據的合規性需求。

成本最佳化

成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化要素的概觀

Azure App 服務 會根據所需的預期計算資源,提供許多定價層。 對於多租使用者 SaaS,高可用性和向外延展功能是選擇服務方案的重要元件。 如果您預期要裝載許多租使用者,可能需要選擇進階或隔離層,才能提供計算資源來考慮高流量。 標準、進階和隔離層都是專用的 VM 實例。 您可以依據您所指定層的 VM 數目,計算每單位時間的成本。 如需詳細資訊,請流覽 App Service 定價方案的概觀。

AKS 提供符合成本效益的容器服務。 AKS 節點的費用只會在使用量上發生,因此您只需支付:

  • VM

  • 已取用的記憶體和網路資源

  • 直接與使用量相關的調整成本

如果您想要降低成本,請使用 AKS 做為資料層服務。 如需定價一層 AKS 實例的估計值,請造訪 Kubernetes 服務計算機

根據設計,Azure SQL 彈性集區定價在多租使用者案例中具有高度成本效益。 彈性集區中的租用戶資料庫將會共用可用的資源。 隨著租用戶之間的需求隨著時間變化,資源也會改變。 Azure SQL 彈性集區可為要求的資料庫提供最大可用資源,而不需要所有資料庫的資源額外負荷。 服務對於 SaaS 和租用戶的開發人員而言,成本很低。 使用 Azure SQL 資料庫 定價計算機來定價,並判斷為租使用者及其數據提供服務所需的資源層級和數量。

  • 使用虛擬核心(虛擬核心)定價模型可提供更大的彈性來調整以符合所需的資源。 此外,您也可以利用 Azure Hybrid Benefit。 現有的 SQL Server 授權可為雲端中的虛擬核心 SQL 資源提供折扣。 因此,在內部部署伺服器已是開發人員基礎結構的一部分時,您可以使用這些折扣來管理成本。 您可以使用 Azure Hybrid Benefit 節省計算機來預估潛在的節省成本。

  • 您也可以購買 Azure SQL 資料庫 保留容量,以節省 SQL Server 資源的成本。 購買保留容量標誌著長期 SQL 資料庫 使用量的承諾。 該詞彙通常介於一到三年之間。 在回報中,您會取得保留中資源計算成本的折扣。 例如,您可以保留 32 個一般用途虛擬核心一年,這樣可降低該年 32 個虛擬核心的成本。 擁有多個租使用者購買 SaaS 授權是使用保留容量符合解決方案的強項指標,而且此工作負載中理想的成本節省器。

您可以在 Azure Cache for Redis 定價頁面上找到 Azure Cache for Redis 的定價 結構。 根據需求,隨時調整基本、標準和進階層之間的快取層。 您會在較大的快取限制和復寫和災害復原等其他功能上看到較高的定價。 Azure Cache for Redis 也提供長期使用量承諾的保留容量定價。

Azure Front Door 的定價取決於進出服務的數據量。 針對輸出數據,定價會根據區域而有所不同。 不同的區域會產生不同的成本。 如果您遇到價格差異,請個別估計成本。 價格包含一些路由和網域容量,但系統會產生超過初始限制的成本。 Azure Web 應用程式防火牆 會根據套用的原則或規則產生少量額外費用。 您可以在 Azure Front Door 定價頁面上找到 Azure Front Door 的定價 詳細數據。

Azure 認知搜尋 的定價是一個完全分層的系統。 免費層可用於開發和測試。 之後,每一層都會針對配置的每個認知搜尋實例產生每小時成本。 隨著層級的增加,總記憶體、索引數目和向外延展限制也會增加。 Azure 認知搜尋 會將映射擷取作為服務,以相同的費率提供給所有付費層。

下一步