DevOps 結合開發 (Dev) 和營運 (Ops),將應用程式規劃、開發、交付和營運中的人員、流程和技術結合起來。 DevOps 可實現以前孤立的角色(例如開發、IT 運營、質量工程和安全)之間的協調和協作。
團隊採用 DevOps 文化、實踐和工具來增強對他們構建的應用程序的信心,更好地響應客戶需求,並更快地實現業務目標。 DevOps 透過生產更好、更可靠的產品,幫助團隊持續為客戶提供價值。
DevOps 和應用程式生命週期
DevOps 會影響 應用程式生命週期 的整個 規劃、 開發、 交付和 營運 階段。 每個階段都依賴於其他階段,而且階段不是特定於角色的。 DevOps 文化在某種程度上涉及每個階段中的所有角色。
下圖說明 DevOps 應用程式生活方式的階段:
DevOps 目標和優勢
當團隊採用 DevOps 文化、實踐和工具時,他們可以實現令人驚奇的事情:
加快上市時間
透過提高效率、改善團隊協作、自動化工具和持續部署,團隊能夠快速縮短從產品啟動到上市的時間。
適應市場和競爭
DevOps 文化要求團隊以客戶為先。 透過將敏捷性、團隊協作和對客戶體驗的關注結合起來,團隊可以持續為客戶提供價值並提高市場競爭力。
保持系統穩定性和可靠性
透過採用持續改進實踐,團隊能夠提高他們部署的產品和服務的穩定性和可靠性。 這些做法有助於減少故障和風險。
縮短平均恢復時間
平均復原時間指標指出從失敗或違規中復原所需的時間。 為了管理軟體故障、安全漏洞和持續改進計劃,團隊應該衡量並努力改進此指標。
採用 DevOps 文化
若要完全實作 DevOps,您必須採用 DevOps 文化。 培養 DevOps 文化需要人們工作和協作方式發生深刻的改變。 當組織致力於 DevOps 文化時,他們會為高績效團隊創造一個發展環境。 雖然採用 DevOps 實踐通過技術自動化和優化流程,但如果不在組織及其員工內部轉向 DevOps 文化,您將無法獲得 DevOps 的全部好處。
下圖擷取 Microsoft 即時網站文化特性的重要層面。
下列做法是 DevOps 文化的重要組成部分:
- 協作、可見性和一致性:健康 DevOps 文化的標誌是團隊之間的協作。 協作始於可見性。 開發、IT 和其他團隊應彼此分享其 DevOps 流程、優先順序和關注事項。 通過共同規劃他們的工作,他們能夠更好地在與業務相關的目標和成功衡量標準上保持一致。
- 範圍和責任的轉變:當團隊保持一致時,他們會擁有所有權並參與其他生命週期階段,而不僅僅是對其角色至關重要的階段。 例如,開發人員不僅要對開發階段建立的創新和品質負責,還要對其變更在營運階段帶來的效能和穩定性負責。 同時,IT 運營商肯定會在計劃和開發階段包括治理、安全性和合規性。
- 更短的發布週期:DevOps 團隊透過在短週期內發布軟體來保持敏捷。 較短的發行週期會讓規劃和風險管理更容易,因為進度是漸進式的,這也減少了對系統穩定性的影響。 縮短發布週期還使組織能夠適應不斷變化的客戶需求和競爭壓力並做出反應。
- 持續學習:高績效的 DevOps 團隊建立成長心態。 他們失敗得很快,並將學習融入他們的流程中。 他們努力不斷改進、提高客戶滿意度並加速創新和市場適應性。
實作 DevOps 實務
您可以在整個應用程式生命週期中遵循 DevOps 實務 (在後續各節中所述) 來實作 DevOps。 其中一些實踐有助於加速、自動化和改進特定階段。 其他階段則跨越多個階段,幫助團隊創建有助於提高生產力的無縫流程。
持續整合與持續傳遞 (CI/CD)
持續整合 (CI) 是開發團隊用來自動化、合併和測試程式碼的做法。 CI 有助於在開發週期的早期發現錯誤,從而降低修復成本。 自動化測試作為 CI 流程的一部分執行,以確保品質。 CI 系統會產生成品,並將其提供給發行程序,以推動頻繁的部署。
持續交付 (CD) 是將程式碼建置、測試並部署到一或多個測試和生產環境的程序。 在多個環境中部署和測試可提高品質。 CD 系統會產生可部署的構件,包括基礎架構和應用程式。 自動化發行處理程序會耗用這些構件,以將新版本及修正程式發行至現有系統。 監控和發送警報的系統會持續運行,以提高對整個 CD 流程的可見性。
版本控制
版本控制是在版本中管理程式碼的做法,追蹤修訂和變更歷史記錄,使程式碼易於檢閱和復原。 這種做法通常使用Git等版本控制系統來實現,它允許多個開發人員協作編寫程式碼。 這些系統提供了一個清晰的過程來合併相同檔案中發生的程式碼變更、處理衝突以及將變更回滾到先前的狀態。
使用版本控制是一種基本的 DevOps 實踐,可幫助開發團隊協同工作,在團隊成員之間分配編碼任務,並存儲所有代碼以便在需要時輕鬆恢復。 版本控制也是持續整合和基礎設施即程式碼等其他實踐中的必要元素。
敏捷軟體開發
敏捷是一種軟體開發方法,強調團隊協作、客戶和使用者回饋,以及透過短發布週期對變化的高度適應性。 實踐敏捷的團隊為客戶提供持續的更改和改進,收集他們的反饋,然後根據客戶的需求進行學習和調整。 敏捷與其他更傳統的框架(例如以順序階段和長發布周期著稱的瀑布式框架)有很大不同。 看板和 Scrum 是與敏捷相關的兩個流行框架。
基礎結構即程式碼
基礎結構即程式碼以描述性方式定義系統資源和拓撲,讓小組能夠像編碼一樣管理這些資源。 這些定義也可以在版本控制系統中儲存和版本控制,在那裡可以像程式碼一樣進行審查和還原。
實踐基礎設施即程式碼有助於團隊以可靠、可重複和受控的方式部署系統資源。 基礎設施即程式碼還有助於自動化部署並降低人為錯誤的風險,特別是對於複雜的大型環境。 這種可重複、可靠的環境部署解決方案可讓團隊維護與生產環境相同的開發和測試環境。 將環境複製到不同的資料中心和雲端平台同樣變得更加簡單和有效率。
組態管理
配置管理是指管理系統中資源的狀態,包括伺服器、虛擬機器和資料庫。 使用配置管理工具,團隊可以以受控、系統化的方式推出更改,從而降低修改系統配置的風險。 團隊使用組態管理工具來追蹤系統狀態並協助避免組態漂移,這是系統資源的組態如何隨時間偏離為其定義的所需狀態。
除了基礎結構即程式碼之外,還可以輕鬆範本化和自動化系統定義和設定,這有助於團隊大規模操作複雜的環境。
持續監控
持續監控意味著對整個應用程式堆疊的效能和健康狀況進行全面、即時的可見性。 這種可見性範圍從運行應用程式的底層基礎設施到更高層級的軟體元件。 可見性是透過收集遙測和中繼資料,以及針對需要操作員注意的預先定義條件設定警示來實現的。 遙測包括從系統各個部分收集的事件資料和日誌,這些資料和日誌儲存在可以分析和查詢的地方。
高績效的 DevOps 團隊確保他們設定可操作、有意義的警報並收集豐富的遙測數據,以便他們能夠從大量資料中汲取見解。 這些見解可協助團隊即時緩解問題,並了解如何在未來的開發週期中改進應用程式。
Planning
在規劃階段,DevOps 團隊構思、定義和描述他們計劃建置的應用程式和系統的特性和功能。 團隊以低粒度和高粒度追蹤任務進度,從單一產品到多個產品組合。 團隊使用下列 DevOps 做法來以敏捷和可見性進行規劃:
如需 Microsoft 用來支援公司軟體小組 DevOps 規劃的數個經驗教訓和做法的概觀,請參閱 Microsoft 如何使用 DevOps 進行規劃。
發展
開發階段包括開發軟體程式碼的各個方面。 在此階段中,DevOps 團隊會執行下列工作:
為了在不犧牲品質、穩定性和生產力的情況下快速創新,DevOps 團隊:
如需 Microsoft 用來支援其移至 DevOps 的開發做法概觀,請參閱 Microsoft 如何使用 DevOps 進行開發。
提供
交付是將應用程式一致且可靠地部署到生產環境中的過程,最好是透過持續交付 (CD)。
在交付階段,DevOps 團隊:
- 定義具有明確手動核准階段的發行管理流程。
- 設定自動閘門,以在階段之間移動應用程式,直到最終發佈給客戶。
- 自動化交付流程,使其可擴展、可重複、受控且 經過充分測試。
傳遞也包括部署和設定傳遞環境的基礎基礎結構。 DevOps 團隊使用基礎設施即程式碼 (IaC)、容器和微服務等技術來提供完全治理的基礎設施環境。
安全部署做法 可以在問題影響客戶體驗之前識別問題。 這些做法可協助 DevOps 團隊輕鬆、自信且安心地頻繁交付。
在Microsoft 如何使用 DevOps 傳遞軟體中,描述了 Microsoft 為提供有效率的交付系統所演化出的核心 DevOps 原則和流程。
Operations
作業階段牽涉到在生產環境中維護、 監視和疑難排解應用程式,包括混合式或公用雲端,例如 Azure。 DevOps 團隊的目標是系統可靠性、高可用性、強大的安全性和零停機時間。
自動化交付和安全部署實踐可幫助團隊在問題發生時快速識別和緩解問題。 保持警惕需要豐富的遙測、可操作的警報以及對應用程式和底層系統的全面可見性。
Microsoft 用來操作複雜線上平臺的做法,請參閱 Microsoft 如何使用 DevOps 操作可靠的系統。