共用方式為


Azure 上 SaaS 工作負載的 DevOps 做法

DevOps 做法是管理 Azure 上工作負載不可或缺的一部分,特別是針對軟體即服務 (SaaS) 應用程式。 管理工作負載的關鍵層面包括入職、結束服務和修改客戶實例。 這些做法簡化了操作並增強了可擴展性和可靠性,從而最大限度地減少了中斷的可能性。

本文說明有效率的客戶生命週期管理和安全部署做法的設計考慮。

管理客戶生命週期

管理客戶生命週期事件對於任何 SaaS 應用程式都至關重要。 這些事件通常包括:

  • 入職: 當客戶註冊時。
  • 改變: 當客戶的執行個體被修改時,例如其定價級別的變更。
  • 退訂處理: 當客戶取消其帳戶時。

您可能會遇到其他生命週期事件。 例如,您可以允許客戶暫停訂閱,同時將資料保留一段時間,稍後再繼續訂閱。 每個事件對於您的應用程式都有唯一的影響。

在某些解決方案中,客戶生命週期管理可能只需要在資料庫表格中建立或管理資料。 對於其他解決方案,它可能包括協調 Azure 基礎結構、應用程式程式碼和更複雜設定的部署。

生命週期管理是 SaaS 解決方案控制平面的重要責任。 一開始,您的團隊可能會手動處理這些活動。 但隨著時間的推移,嘗試將更多功能轉換為正式的控制平面解決方案或應用程式。

設計考量

  • 一致性。 當您規劃生命週期管理策略時,請考慮每個客戶生命週期事件所需的動作的複雜性。 這些動作包括解決方案的大小、客戶群和組織額外負荷。 清楚地了解每個事件的必要步驟,並投資控制以保持一致性。 定期檢閱和更新您的流程,以協助確保它們隨著解決方案的發展而保持有效。

  • 租用模型。 處理客戶生命週期事件的方法取決於您的租用模型。

    • 具有基礎設施資源的完全多租戶解決方案。 客戶上線或離職通常包括更新應用程式資料存放區中的客戶清單和相關資料。

    • 每位客戶的專用資源。 這些工作通常包括起始 Azure 的部署、監視進度,以及處理部署失敗,可能需要人工介入。

    • 客戶部署的資源。 您可能需要直接與客戶的工程小組互動,才能上線或下線。

  • 階層。 請考慮您的定價模式和每個層級的不同基礎結構需求,特別是當您允許客戶隨時自由變更其SKU時。 例如,如果您的 SaaS 解決方案包含核心應用程式和多個付費附加元件模組,請確定核心應用程式的資源已在上線期間部署。 此外,允許動態添加和刪除附加模塊。 拿掉模組時,決定是否要刪除相關聯的數據,或將其儲存為可能重新啟用。

設計建議

建議 優點
記錄每種類型的客戶生命週期事件。

請確定您擷取每個事件的處理程式逐步詳細數據。
您可以規劃如何回應解決方案設計中的每個事件。

清楚的指示可協助人類操作員維持一致性,並做為未來自動化的基礎。
針對每個生命週期事件,傳達您與客戶之間的共同責任。 儘早清晰地溝通您希望客戶採取哪些行動來完成生命週期階段。 您可以減少因錯誤溝通所造成的潛在錯誤和客戶挫折感。
針對每個生命週期事件進行容量規劃。 例如,當您上線新客戶時,如果現有執行個體缺乏足夠的容量來處理額外的負載,則計劃部署應用程式的新執行個體。

如需詳細資訊,請參閱 Azure 上 SaaS 工作負載的計費和成本管理。
您可以更輕鬆地擴展並防止部署失敗。
在可行的情況下自動化您的生命週期事件。

對於低容量或早期階段的解決方案,手動部署和設定可能就足夠了。 但仍應使用指令碼,即使工程師每次發生生命週期事件時都會執行指令碼。

隨著解決方案的成熟,將這些責任整合到完整的控制平面中,以減少人為錯誤並支援更高的規模。
您可以降低人為錯誤的重大風險,並支援更高的規模。

規劃基礎結構管理策略

儘早開發部署、維護和管理 Azure 基礎結構的策略。 當您調整 SaaS 時,資源數目就會增加。 從一開始就遵循管理策略比稍後在基礎結構變得太複雜而無法手動處理時,更容易協調基礎結構。

設計考量

  • 客戶資源管理。 您的租用模型會影響 SaaS 解決方案中的資源部署。 您可以為每個客戶部署專用的 Azure 資源,或在一組客戶之間共用資源。 或者,您可以使用一組共用資源,並在加入新客戶時重新設定它們。 請考量下列管理資源生命週期的一般方法:

    • 將您的客戶清單視為要部署的資源組態。 使用集中式部署管線來部署和設定這些資源。

    • 將您的客戶清單視為數據。 使用控制平面應用程式來布建和設定基礎結構。

  • 基礎結構自動化。 許多組織都會透過 Azure 入口網站手動部署雲端基礎結構。 這種策略一開始很容易,但隨著時間的推移,擴展性不佳。 規劃使用基礎結構即程式碼 (IaC) 工具 (例如 Bicep 或 Terraform) 來自動化基礎結構設定。 如需更複雜的需求,請建立直接使用 Azure Resource Manager API 的控制平面。

  • 基礎結構屬性。 追蹤哪些客戶部署在哪一個基礎結構上。 追蹤對於精確的容量規劃和成本屬性很重要。 您可以在客戶資料庫中集中追蹤客戶基礎結構。 或者,針對專用基礎結構,請將 Azure 資源中繼資料與客戶特定的資源群組和資源標籤搭配使用。 如需詳細資訊,請參閱 SaaS 工作負載的資源組織。

設計建議

建議 優點
使用部署管線、指令碼或範本搭配您小組已經熟悉的工具,建置基礎結構自動化。 熟悉的工具可降低出錯的風險,因為如果不了解這些工具,基礎設施自動化可能會造成破壞。
盡可能使用 IaC 來部署基礎結構。 IaC 有助於減少手動維護,隨著基礎設施數量的增長,手動維護變得更加危險和負擔。
將核心基礎結構與客戶層級基礎結構分開。 不同類型的基礎結構具有不同的生命週期和管理活動。 藉由將它們分開,您可以獨立地根據自己的排程管理每個集合。
使用 Azure 受控應用程式來部署和管理客戶部署的資源。 Azure 受控應用程式提供一系列功能,可用來部署和管理客戶 Azure 訂用帳戶內的資源。

規劃應用程式部署

若要增強功能,請定期更新應用程式程式碼和設定。 客戶預期在更新和安全推出期間保持一致的運行時間,以將中斷的風險降到最低。

設計考量

  • 標準化工具和程式。 經過業界驗證的 DevOps 工具有助於確保跨功能的一致性,以及管理應用程式部署流程的成熟度。 在大多數情況下,開發自己的工具被認為是一種反模式。 如需詳細資訊,請參閱 OE:03 軟體開發實務

    衡:複雜性和成本。熟悉的 DevOps 工具在金錢和技能方面具有成本效益。 然而,它們增加了單獨管理每個工具的操作負擔。 請務必繼續開放新的技術創新,以利於您的工作負載。

  • 逐步部署更新。 分階段向客戶推出更新。 將使用者分成邏輯群組,並一次將變更部署至一個群組。 對組態變更套用相同的嚴格性,因為它們可能會改變程式碼行為並導致中斷。 請遵循這些變更的部署程式。

  • 採用版本控制策略。 當客戶可以選擇他們的應用程式版本時,它增加了靈活性,但使您的操作變得複雜。 設定淘汰舊版的明確期望,並概述不再支援時會發生什麼事。

  • 實施自動化。 手動部署容易因人為錯誤和缺乏一致性而產生風險。 即使您的部署是手動觸發的,您也應該盡可能自動化部署程序,並且需要最少的人工監督。 請考慮部署程式的步驟,以及如何將其自動化。

  • 整合測試。 執行下列命令,將測試整合到您的部署程式中:

    • 程式碼建置期間的單元測試。
    • 部署後的整合測試。
    • 定期性能測試。
    • 定期安全和滲透測試。

    如果任何測試在任何階段失敗,請決定行動計劃。

  • 部署失敗。 考慮必要的動作和準備復原策略,以規劃部署失敗。

  • 存取客戶環境。 如果您將資源部署到客戶環境,請瞭解如何在這些環境中套用更新。 請考慮 Azure 受控應用程式提供的功能,例如 將更新部署至應用程式

設計建議

建議 優點
使用已建立、經過業界驗證的 DevOps 工具和程序來管理您的應用程式部署。 在大多數情況下,開發自己的工具被認為是一種反模式。

如需詳細資訊,請參閱 OE:03 軟體開發實務
此策略可協助確保您的工程團隊無需學習自訂建置工具即可有效地部署應用程式。
主動通知客戶任何即將或已完成的部署。 此策略有助於確保與客戶對應用程式即將進行的變更設定適當的期望。
採用安全的部署做法,透過漸進式暴露和健康情況模型等策略將更新部署至客戶群組。 先從不太敏感或早期採用的客戶開始,然後再轉向更廣泛的客戶群。
如需詳細資訊,請參閱 安全部署實務的建議。
此策略可協助您在問題影響所有客戶之前識別問題。
將設定視為程式碼。 您可以降低停機時間的可能性,並針對生產變更採用一致的程式。 這種方法集中了操作責任,例如測試更改並逐步推出配置和代碼的更新。
定義變更管理程式並傳達版本更新原則,以確保客戶知道誰觸發更新、其頻率和條件。

如果客戶可以選擇其應用程式版本,請設定明確的指導方針,以瞭解如何取代舊版本。 將生產中執行的應用程式版本數目降到最低。
維護舊版會導致作業效率低下。 透過設定明確的期望和政策,為您的客戶提供必要的控制,並避免讓您的團隊負擔過重。
避免為單一客戶自定義應用程式。

若要支援不同的客戶需求,您可以建立解決方案的各種層級,或使用功能旗標來針對特定使用者啟用特定功能。
避免將哪些功能部署到哪個版本時模棱兩可,並降低維護負擔。
有失敗部署的復原計劃,包括觸發和必要核准的準則。 復原計劃有助於確保您即使在不可預見的情況下也能從部署錯誤中恢復。
在軟體開發程式中定期和多個階段測試您的應用程式。 採用 左移 心態,並在生命週期的早期發現錯誤和偏差。 協助防止重大錯誤影響您的客戶。

其他資源

多租用戶是設計 SaaS 工作負載的核心商務方法。 下列文章提供如何採用 DevOps 做法的詳細資訊:

後續步驟

瞭解事件管理考慮,以實作支援 Azure 上 SaaS 解決方案的程式和工具。