DevOps 模式
從單一位置撰寫程式碼,並部署至開發、測試和生產環境中的多個目標 (這些環境可位於您的本機資料中心、私人雲端或公用雲端中)。
內容和問題
應用程式部署的持續性、安全性和可靠性是組織不可或缺的,且對開發小組而言至關重要。
應用程式通常需要重構的程式碼,才能在每個目標環境中執行。 這表示應用程式無法完全移植。 它在每個環境間移動時,必須進行更新、測試和驗證。 例如,在開發環境中撰寫的程式碼必須重寫,才能在測試環境中運作,並在最後進入生產環境時重寫。 此外,此程式碼會按特性繫結至主機。 這可能會提高維護應用程式的成本和複雜度。 應用程式的每個版本會分別繫結至各個環境。 提高的複雜度和重複性會使安全性和程式碼品質承受更高的風險。 此外,當您移除還原失敗的主機或部署其他主機來處理需求增加時,無法立即重新部署程式碼。
解決方法
DevOps 模式可讓您建置、測試和部署在多個雲端上執行的應用程式。 此模式結合了持續整合和持續傳遞的實務。 透過持續整合,在每次小組成員對版本控制認可變更時,都會建置並測試程式碼。 持續傳遞會讓組建中的每個步驟在生產環境中自動執行。 這些程序會共同建立一個發行流程,支援跨不同環境的部署。 透過此模式,您可以草擬程式碼,然後將相同的程式碼部署至內部部署環境、不同的私人雲端和公用雲端。 環境中的差異需要以組態檔的變更來調整,而不是變更程式碼。
透過在內部部署、私人雲端和公用雲端環境間皆一致的一組開發工具,您可以實作持續整合和持續傳遞的實務。 使用 DevOps 模式部署的應用程式和服務具有互通性,且可在其中任一位置執行,而充分運用內部部署和公用雲端的特性與功能。
使用 DevOps 發行管線可協助您:
- 根據對單一存放庫的程式碼認可起始新的組建。
- 將您新建置的程式碼自動部署至公用雲端以進行使用者驗收測試。
- 在您的程式碼通過測試後自動部署至私人雲端。
問題和考量
DevOps 模式的目的是要確保不論目標環境為何,都能有跨部署的一致性。 不過,雲端和內部部署環境中的功能會有所不同。 請考慮下列幾點:
- 在目標部署位置中是否可以使用您部署中的函式、端點、服務和其他資源?
- 組態成品是否儲存於可跨雲端存取的位置?
- 部署參數是否將適用於所有目標環境中?
- 是否在所有目標雲端中都可以使用資源特有的屬性?
如需詳細資訊,請參閱針對雲端一致性開發 Azure Resource Manager 範本。
此外,在決定此模式的實作方式時,請考量以下幾點:
延展性
部署自動化系統是 DevOps 模式中的主要控制點。 實作方式可能有所不同。 伺服器大小的正確選擇,取決於預期的工作負載大小。 VM 的調整成本高於容器。 若要將容器用於調整大小,您的組建流程必須與容器一起搭配執行。
可用性
DevPattern 內容中的可用性是指能夠復原與您的工作流程相關聯的任何狀態資訊,例如測試結果、程式碼相依性,或其他成品。 若要評估您的可用性需求,請考量以下兩個計量:
復原時間目標 (RTO) 會指定您在沒有系統的情況能運作多久的時間。
復原點目標 (RPO) 是指當進行中的中斷影響道系統時,您可以承受多少資料的遺失。
在實務上,RTO 和 RPO 代表備援性和備份。 在全域 Azure 雲端上,可用性不是硬體復原的問題,也就是 Azure 的一部分,而是確保您維持DevOps系統的狀態。 在 Azure Stack Hub 上,硬體復原可能是考量之一。
設計用於部署自動化的系統時,另一項主要考量是將服務部署至雲端環境所需的存取控制和適當的權限管理。 建立、刪除或修改部署時需要哪些權限? 例如,在 Azure 中建立資源群組時通常需要一組權限,而在資源群組中部署服務時則需要另一組權限。
管理能力
以 DevOps 模式為基礎設計任何系統時,都必須考量整個組合中各項服務的自動化、記錄及警示。 請使用共用服務和 (或) 應用程式小組,並追蹤安全性原則和治理情形。
請在 Azure 或 Azure Stack Hub 上的個別資源群組中部署生產環境和開發/測試環境。 然後,您可以監視每個環境的資源,並依資源群組匯總計費成本。 您也可以刪除整組資源,這對於測試部署很有用。
使用此模式的時機
使用此模式的時機:
- 您可以在一個符合開發人員需求的環境中開發程式碼,並部署到您的解決方案專用、但可能難以開發新程式碼的環境中。
- 只要開發人員能夠遵循DevOps模式中的持續整合和持續傳遞程式,您就可以使用開發人員想要的程式碼和工具。
不建議使用此模式:
- 如果您無法自動化基礎結構、布建資源、設定、身分識別和安全性工作。
- 如果小組無法存取混合式雲端資源,以實作持續整合/持續開發 (CI/CD) 方法。
後續步驟
深入了解此文章介紹的更多相關主題:
- 請參閱 Azure DevOps 文件以深入了解 Azure DevOps 與相關工具,包括 Azure Repos 與 Azure Pipelines。
- 若要深入了解產品與解決方案的完整組合,請參閱 Azure Stack 系列產品和解決方案。
當您準備好測試解決方案範例時,請繼續參閱 DevOps 混合式 CI/CD 解決方案部署指南。 部署指南提供部署及測試其元件的逐步指示。 您將瞭解如何使用混合式持續整合/持續傳遞 (CI/CD) 管線,將應用程式部署至 Azure 和 Azure Stack Hub。