當您測量和配置成本,以及優化成本時,多租用戶解決方案通常需要特別考慮。 在此頁面上,我們會說明解決方案架構設計人員考慮多租使用者應用程式的測量、配置和優化成本的一些重要指引。
重要考慮和需求
請考慮您在測量解決方案耗用量時所需的需求。 這會更詳細 地討論測量每個租使用者的耗用量。
測量目的
請務必決定您的目標為何。 以下是目標範例:
- 計算每個租使用者所售出商品的近似成本。 例如,如果您部署大量共享資源,您可能只對每個租用戶所產生的成本粗略近似值感興趣。
- 計算每個租用戶所產生的確切成本。 例如,如果您向租使用者收取其所產生確切使用量的費用,您需要有每個租用戶資源成本的精確資訊。
- 識別比其他租使用者高得多的極端租使用者。 例如,如果您提供 一般費率的定價模式,您可能需要判斷任何租使用者是否耗用不成比例的布建容量,以便套用公平使用原則。 在許多情況下,此使用案例不需要精確測量成本。
- 降低解決方案的整體 Azure 成本。 例如,您可能想要查看每個元件的成本,然後判斷您是否已針對工作負載過度布建。
藉由了解測量租使用者耗用量的目標,您可以判斷成本配置是否需要近似或高度精確,這會影響您可以使用的特定工具,以及您可以遵循的做法。
共用元件
您可以將租使用者移至共用基礎結構,以降低多租用戶解決方案的成本。 不過,您必須仔細考慮共用資源的影響,例如您的租使用者是否會開始遇到 Noisy Neighbor 問題。
您也需要考慮如何測量及配置共用元件的成本。 例如,您可以在使用共用元件的每個租用戶之間平均分配成本。 或者,您可以計量每個租使用者的使用量,以更精確地測量其共用元件的耗用量。
要考慮的方法和模式
使用資源標籤來配置成本
Azure 可讓您將 標籤套用至您的資源。 標籤是索引鍵/值組。 您可以使用標記來新增自訂元數據。 卷標適用於許多管理作業,而且對於分析 Azure 耗用量的成本也很有用。 套用標籤之後, 您可以判斷與每個標記相關聯的成本。
在多租用戶解決方案中使用標籤的方式可能會有所不同,視您的架構而定。
在某些解決方案中,您可能會為每個租使用者部署專用資源,例如,如果您為每個租使用者部署專用 的部署戳記 。 在這些情況下,很明顯,這些資源的任何 Azure 耗用量都應該配置給該租使用者,因此您可以使用租使用者標識符標記您的 Azure 資源。
在其他情況下,您可能會有一組共享資源。 例如,當您套用 分區化模式時,可能會部署多個資料庫,並將租使用者分散到其中。 請考慮使用租使用者群組的標識碼標記資源。 您可能無法輕鬆地將成本配置給單一租使用者,但當您使用此方法時,至少可以將成本縮小到一組租使用者。 如果您注意到特定分區的成本高於其他分區,您也可以使用取用資訊來協助您重新平衡整個分區的租使用者。
注意
可以套用至資源的標籤數量有限制。 當您使用共用資源時,最好不要為每個共用資源的租使用者新增標籤。 相反地,請考慮新增具有分區標識符的標記,或以另一種方式來識別租使用者群組。
請考慮使用 部署戳記模式 和 垂直分割租用模型所建置的多租用戶解決方案範例。 每個部署戳記都包含共用 Web 伺服器和分區化資料庫。 標記可以套用至每個 Azure 元件,如下圖所示。
此處採用的標記策略如下所示:
- 每個資源都有標記
stamp-id
。 - 每個分區化資料庫都有一個
shard-id
標記。 - 專用於特定租使用者的每個資源都有標記
tenant-id
。
使用此標記策略,可以輕鬆地將成本資訊篩選為單一戳記。 也很容易找到租使用者特定資源的成本,例如租使用者 C 的資料庫總成本。共用元件沒有 tenant-id
標記,但戳記的共用元件成本可以分割為指派給使用該戳記或分區的租使用者。
檢測應用程式
在 Azure 資源與租用戶之間沒有直接關聯性的情況下,請考慮檢測您的應用程式以收集遙測。
您的應用程式層可能已經收集記錄和計量,有助於回答計量相關問題,例如:
- 大約每個租使用者有多少 API 要求?
- 一天中的哪些時間是特定租用戶最繁忙的?
- 租使用者 A 的使用模式如何與租使用者 B 的使用模式進行比較?
在 Azure 中,Application Insights 通常會擷取這些計量。 藉由使用 遙測初始化表達式,您可以擴充 Application Insights 擷取的遙測,以包含租用戶標識碼或其他自定義數據。
不過,Application Insights 和其他記錄和監視解決方案不適用於精確的成本測量或計量用途。 Application Insights 的設計目的是要 取樣數據,特別是當您的應用程式有大量要求時。 取樣的設計目的是要降低監視解決方案的成本,因為擷取每個遙測通常可能會變得昂貴。
如果您需要追蹤使用量或使用量的精確詳細數據以供計費之用,您應該改為建置自定義管線來記錄必要的數據。 然後,您應該根據需求來匯總數據。 對於此目的有説明的 Azure 服務包括 事件中樞、擷取大量遙測和 串流分析,以實時處理。
使用 Azure 保留和 Azure 節省方案來降低成本
Azure 保留:Azure 保留可讓您藉由預先認可至特定層級的支出來降低 Azure 成本。 保留適用於許多 Azure 資源類型。
保留可以在多租用戶解決方案中有效地使用。 請注意下列考量:
- 當您部署包含共用資源的多租用戶解決方案時,請考慮工作負載所需的基準耗用量層級。 您可以考慮該基準耗用量的保留,然後在無法預測的尖峰期間支付較高耗用量的標準費率。
- 當您為每個租使用者部署資源時,請考慮您是否可以預先認可特定租用戶的資源耗用量,或跨租用戶組合。
Azure 保留可讓您 設定保留 範圍,以套用至資源群組、訂用帳戶或一組訂用帳戶。 這表示您可以利用保留,即使您將工作負載分區化到多個訂用帳戶也一樣。
當您有具有無法預測工作負載的租使用者時,保留範圍也很有用。 例如,假設租使用者 A 只需要特定資源的一個實例,但租使用者 B 和 C 各需要兩個實例。 然後租使用者 B 變得較不忙碌,因此您會減少實例計數,而租使用者 A 會變得更忙碌,因此您可以增加實例計數。 您的保留會套用至需要保留的租使用者。
適用於計算的 Azure 節省方案: 適用於計算的 Azure 節省方案是彈性的成本節省計畫,可大幅節省隨用隨付價格。 您同意一年期或三年期合約,並取得合格計算服務的折扣。 這些服務包括虛擬機、專用主機、容器實例、Azure 進階函式和 Azure 應用程式服務。 不論區域、實例大小或操作系統為何,省錢都適用於這些計算服務。 如需詳細資訊,請參閱 Azure 節省方案概觀 和 Azure 節省方案檔。
結合保留和節省方案: 若要進一步優化成本和彈性,您可以將 Azure 節省方案與 Azure 保留結合。
要避免的反模式
- 完全不追蹤成本。 請務必至少大致瞭解您產生的成本,以及每個租使用者如何影響傳遞解決方案的成本。 否則,如果您的成本隨著時間變更,則沒有要比較的基準。 您也可能無法預測租用戶成長如何影響您的成本和獲利率。
- 進行假設或猜測。 請確定您的成本測量是以實際資訊為基礎。 您不一定需要高度精確度,但即使是估計值也應該透過實際測量來通知。
- 不必要的精確度。 您可能不需要詳細計算每個租使用者所產生的每個成本。 建置不必要的精確成本測量和優化程式可能會適得其反,因為它會增加工程複雜度,並建立脆弱的程式。
- 實時測量。 大部分的解決方案不需要最新的成本測量。 由於計量和耗用量數據可能十分複雜,因此您應該記錄必要的數據,然後稍後以異步方式匯總和處理數據。
- 使用監視工具來計費。 如檢測應用程式中所述,請確定您使用專為成本監視和計量而設計的工具。 應用程式監視解決方案通常不適合這類數據,特別是當您需要高精確度時。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主體作者:
- John Downs |首席軟體工程師
其他投稿人:
- 雪麗·巴比隆 |適用於 Azure 的 FastTrack 資深客戶工程師
- 阿森·弗拉基米爾斯基 | 適用於 Azure 的主要客戶工程師 FastTrack
若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。