DevOps 模式
從單一位置撰寫程式代碼,並部署到開發、測試和生產環境中可能位於本機數據中心、私人雲端或公用雲端中的多個目標。
內容和問題
應用程式部署持續性、安全性和可靠性對於組織而言很重要,對開發小組至關重要。
應用程式通常需要重構的程序代碼,才能在每個目標環境中執行。 這表示應用程式無法完全移植。 當它通過每個環境時,必須進行更新、測試及驗證。 例如,在開發環境中撰寫的程式代碼必須重新改寫,以便在測試環境中運行,並在最終部署到生產環境時再次重寫。 此外,此程式代碼會特別系結至主機。 這會增加維護應用程式的成本和複雜度。 每個版本的應用程式都會系結至每個環境。 複雜度和重複增加會增加安全性和程式代碼質量的風險。 此外,當您移除還原失敗的主機或部署其他主機來處理需求增加時,程式代碼無法輕易重新部署。
解決方案
DevOps 模式可讓您建置、測試及部署在多個雲端上執行的應用程式。 此模式會統一持續整合和持續傳遞的做法。 透過持續整合,每當小組成員提交變更到版本控制系統時,程式碼就會被建置並測試。 持續傳遞會將建置到生產環境的每個步驟自動化。 這些流程會共同建立一個發佈流程,以支援跨各種環境的部署。 透過此模式,您可以起草程式代碼,然後將相同的程式代碼部署到內部部署環境、不同的私人雲端和公用雲端。 環境中的差異需要變更組態檔,而不是變更程序代碼。
透過跨內部部署、私人雲端和公用雲端環境的一組一致開發工具,您可以實作持續整合和持續傳遞的實務。 使用 DevOps 模式部署的應用程式和服務是可互換的,可以在這些位置中執行,並利用內部部署和公用雲端特性和功能。
使用 DevOps 發行管線可協助您:
- 起始基於程式碼提交至單一存放庫的新建置。
- 自動將新建置的程式代碼部署至公用雲端,以進行使用者驗收測試。
- 在您的程式代碼通過測試之後,自動部署至私人雲端。
問題和考慮
不論目標環境為何,DevOps 模式都旨在確保部署之間的一致性。 不過,功能會因雲端和內部部署環境而異。 請考慮下列幾點:
- 你部署中的函式、端點、服務和其他資源是否在目標部署位置中可用?
- 組態成品是否儲存在可跨雲端存取的位置?
- 部署參數可在所有目標環境中運作嗎?
- 所有目標雲端中是否有可用的資源特定屬性?
如需詳細資訊,請參閱 開發適用於雲端一致性的 Azure Resource Manager 範本。
此外,在決定如何實作此模式時,請考慮下列幾點:
延展性
部署自動化系統是DevOps模式中的重要控制點。 實作可能會有所不同。 正確伺服器大小的選取取決於預期的工作負載大小。 虛擬機在擴展上的成本比容器還要高。 不過,若要使用容器進行調整,您的建置程式必須使用容器執行。
可用性
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。