DevOps 將運維和開發相結合以提供持續的軟件改進,可以降低復雜性并提高應用程序輸出。
什么是 DevOps?
DevOps 是組織用來創建和交付應用程序和服務的靈活實踐和流程的集合,通過使軟件開發與 IT 運營保持一致和協調。
正如DevOps先驅Patrick Debois在2009年首次描述的那樣,DevOps不是一種特定的技術,而是一種戰術方法。通過協同工作,開發和運營團隊可以消除障礙,并專注于改進他們創建、部署和持續監控軟件的方式。
向 DevOps 的轉變對于組織支持客戶和內部利益相關者所需的不斷加快的開發速度至關重要。借助云原生技術、開源解決方案和敏捷 API,團隊現在可以比以往任何時候都更高效地交付和維護代碼。將開發與運營以及支持運營的流程相結合,使組織能夠跟上開發速度的步伐。

DevOps的起源
DevOps 始于 2008 年,由開發人員 Andrew Clay 和 Patrick Debois 創立。為了克服敏捷開發中的常見問題,例如隨著項目時間線的擴展,協作減少,以及增量交付對長期結果的負面影響,兩人提出了一種替代方案:在組合的 DevOps 管道中進行持續開發和交付。該術語在 2009 年的 DevOpsDays 之后獲得了關注,并迅速成為一個新的行業流行語。
而現在 DevOps 框架不僅僅是炒作,在實踐中,它最大的好處不是簡單的效率提升,而是一種文化轉變,從根本上改變了公司處理軟件開發過程每個階段的方式。最近,由于 Gene Kim 等行業專家的工作,DevOps 經歷了更深入的演變。Gene Kim 是 Perform 2021 的主題演講者,也是 DevOps 手冊和 Phoenix Project 的作者。
DevOps 是如何工作的?
許多組織將開發和運維整合到一個團隊中,以實現這一組合流程,按功能而不是按工作職能組織軟件交付。這種方法鼓勵個人發展跨職能技能,將測試和應用程序安全實踐整合到無縫的交付生命周期中。
實施 DevOps 通常與持續集成 (CI) 齊頭并進,在持續集成 (CI) 中,多個開發人員通常一天多次將軟件更新提交到共享存儲庫。CI 使開發人員能夠在流程的早期發現集成問題和錯誤,并簡化代碼分支和構建。
從這種整體角度來看,工程師可以在通用流程上進行協作,例如定義服務級別目標 (SLO)、測試和每個人都可以實施的質量門。一組通用的標準和目標可以簡化敏捷工作流,并使團隊能夠采用協調的 DevOps 工具集,以便他們可以在軟件交付生命周期 (SDLC) 中自動執行更多流程。

DevOps 生命周期
規劃
這個階段涉及定義項目的目標并制定如何實現這些目標的計劃。它還包括識別可能遇到的風險和挑戰。規劃階段對于確保 DevOps 過程成功至關重要。讓所有利益相關者參與規劃過程,包括開發人員、運營工程師和業務主管。計劃應該清晰、簡潔且可實現。
發展
此階段是編寫和測試代碼的地方。盡可能多地自動化測試過程,以確保代碼的高質量,并使用版本控制系統來跟蹤代碼的更改。應對代碼進行單元測試,以確保其正常工作。
部署
此階段是將代碼部署到生產環境的位置。擁有一個能夠自動執行部署過程并最大限度地降低錯誤風險的部署管道至關重要。
監測
此階段涉及收集有關應用程序性能的數據并識別問題。有必要建立一個監控系統,可以盡快提醒團隊注意任何問題。
持續改進
此階段正在進行中,涉及不斷評估DevOps流程并進行改進。對反饋持開放態度并愿意根據需要更改流程很重要。
DevOps的優勢
在實踐中,DevOps 不僅為創建、交付和維護軟件提供了好處,而且為從早期概念驗證到數字業務分析和客戶體驗的每個流程和利益相關者提供了好處。
對于開發團隊來說,目標是將創建代碼的過程識別為一個持續的循環,而不是一條直線。與運營團隊合作或集成開發有助于將敏捷開發原則(基于優先級的快速、小規模的改進)應用于整個軟件生命周期。這包括初始設計、概念驗證、測試、部署和最終修訂。
隨著客戶需求和最高管理層期望的提高,這種方法尤為重要。負責盡快生產和部署軟件的開發團隊現在能夠做到這一點。與此同時,可以理解的是,運營團隊擔心快速代碼實現的影響,以及將代碼可靠、大規模地投入使用所需的更改。
對于運營而言,協作式部署方法可以將敏捷流程從軟件擴展到平臺和基礎架構中,以分析 IT 環境中所有層的詳細信息和上下文。通過將設計思維應用于交付系統,運營團隊可以將重點從管理基礎設施轉移到提供出色的用戶體驗上。
實際上,這種開發和運營工作旨在通過將軟件開發原則應用于 IT 的各個方面來利用而不是限制開發對運營的影響,同時保持對標準化和安全性的運營關注。
DevOps的挑戰
以下是組織在采用 DevOps 時可能面臨的一些挑戰:
- 安全問題:DevOps 實踐可能會引入新的安全風險,例如通過自動化部署將漏洞引入生產系統的風險。組織必須擁有強大的安全文化,并實施適當的安全控制措施來降低這些風險。
- 組織孤島:在具有強大結構孤島的組織中實施 DevOps 可能具有挑戰性。這些孤島可能會帶來溝通和協作挑戰,從而阻礙 DevOps 實踐的采用。組織必須打破這些孤島,并創造一種更具協作性的文化,才能成功采用 DevOps。
- 合規性挑戰:DevOps 實踐可能會帶來新的合規性挑戰,例如需要遵守要求手動批準生產系統更改的法規。組織必須評估其合規性要求并實施適當的控制措施以保持合規性。
如何采用 DevOps
通過打破軟件開發和 IT 運營團隊之間的孤島,DevOps 可以幫助組織更快、更可靠地交付軟件,例如:
從小型試點項目開始。
- 不要嘗試一次實現所有DevOps實踐。從一個對組織很重要并得到高級管理層支持的小項目開始。
獲得所有利益相關者的支持。
- DevOps是一種文化變革,除非每個人都參與進來,否則不會成功。確保您獲得所有利益相關者的支持,包括開發人員、運營工程師、安全專業人員和業務領導者。
使用正確的工具。
- 有幾種工具可以幫助組織采用DevOps實踐。這些工具可以幫助實現 CI/CD、監視和安全性。
衡量和改進。
- 衡量DevOps工作的結果至關重要,以了解哪些是有效的,哪些是無效的。然后,這些信息可以改進您的流程并使其更有效率。
要有耐心。
- 實施 DevOps 實踐并看到結果需要時間。如果您沒有看到立竿見影的效果,請保持積極的態度。
DevOps 中的實踐
持續集成
- 持續集成 (CI) 是定期將所有代碼更改合并到中央存儲庫中的做法。這有助于在開發過程的早期識別和修復錯誤。
持續交付
- 持續交付 (CD) 是在測試和批準代碼更改后自動將代碼更改部署到生產環境。這有助于確保用戶盡快獲得新功能和錯誤修復。
微服務
- 微服務是一種架構風格,它將應用程序劃分為小型的獨立服務。這樣可以更輕松地開發、測試和部署應用程序。
基礎架構即代碼
- 基礎結構即代碼 (IaC) 是使用代碼管理基礎結構的做法。這樣可以更輕松地自動部署和配置基礎架構。
監測
- 監視是收集和分析有關應用程序性能的數據的做法。這有助于在問題影響用戶之前識別和解決問題。
自動化
- 自動化是自動執行任務(如測試、部署和監視)的做法。這為開發人員和運營工程師騰出了時間,讓他們可以專注于更具戰略性的任務。
協作
- 協作是有效合作的實踐。這對于DevOps至關重要,因為它需要開發人員和運營工程師之間的密切合作。這意味著打破這兩個團隊之間的孤島,并創造一種文化,讓每個人都朝著同一個目標努力。
什么是DevOps最佳實踐?
在整個組織中集成學科、工具和流程需要規劃和協調。以下是組織可以遵循的一些最佳實踐,以使 DevOps 在企業范圍內取得成功。
利用 AI 增強 DevOps 管道
DevOps 管道的每個階段都需要進行一定數量的分析,以推動決策、響應和自動化。
例如,基于 AI 的精確分析可以推動是否發布軟件的決策,一旦軟件投入生產,就指示發布是否按預期運行。或者,在失敗的測試運行期間,AI 可以提供確切的根本原因,直至底層代碼的詳細信息,以便開發人員可以快速解決和修復錯誤。
準確可靠地分析數據并提供明確答案的能力使團隊能夠在整個軟件交付生命周期中實現流程自動化。可靠的 AI 驅動型答案對于快速事件響應和自動修復至關重要,因此團隊可以了解故障或錯誤背后的背景。
這種用于 IT 運營的人工智能 (AIOps) 正在成為一種普遍的做法,尤其是在組織采用云原生基礎設施的情況下。
左移服務級別目標 (SLO)
為確保開發團隊和 SRE 在相同的成功標準上保持一致,他們應根據預生產環境評估生產 SLO。通過使用生產級標準將質量保證擴展到包括預防、檢測和可恢復性,團隊可以交付滿足用戶要求、降低錯誤率并提高整體可靠性和彈性的軟件。更重要的是,在預生產中修復錯誤的成本遠低于生產中。
持續的質量思維使團隊能夠構建整個 SDLC 以進行測試。這意味著測試生命周期的所有層。它還意味著開發和維護可靠的測試數據和測試環境,開發人員、SRE 和 IT 運營團隊可以在開發和交付的每個階段使用這些數據和測試環境。
自動評估預生產 SLO 的一種方法是建立質量門。質量門可幫助團隊確定服務是否符合所有預定義的質量標準。質量門采用關鍵服務級別指標 (SLI) 或監控指標,并根據設置的質量標準對其進行評估。僅當服務達到或超過質量標準時,代碼才會進入生命周期的下一階段。
自動執行所有 DevOps 流程
自動化 DevOps 管道允許更快、更頻繁地部署迭代的增量軟件更新。它在開發和運營團隊之間提供了更緊密的反饋循環,因此他們可以將更多時間花在創新上,而不是執行手動流程。
自動化可以幫助團隊將 DevOps 從燈塔項目擴展到整個 IT 資產的基本實踐。DevOps 自動化通常會敲響持續集成、持續交付 (CI/CD) 的鐘聲,但自動化這些基礎流程可以遠遠超出開發代碼的范圍。更高級的組織尋求自動化 DevOps 生命周期的所有階段,包括基礎架構預配、部署、監控、測試、修復等。
采用云原生架構
為了發揮DevOps的潛力,速度和敏捷性是關鍵。采用云原生技術和架構是更快、更靈活、更大規模地交付更多、更豐富功能的最佳方式。這些技術包括基于容器的計算解決方案(如 Kube.NETes)和無服務器平臺即服務 (PaaS)(如 AWS Lambda、google Cloud Platform 和 Azure Functions)。在這些環境中,軟件在不可變的容器中運行,根據需要使用資源,這種設置非常適合可以輕松編排和自動化的基礎結構模式。
云原生技術使團隊能夠更輕松地將敏捷軟件開發實踐應用于基礎架構管理。這包括自動執行關鍵任務,例如版本控制、單元測試、持續交付、運營功能和問題修復。
集成 DevSecOps 的安全實踐
云原生技術的多樣性和靈活性也使得保護應用程序免受漏洞侵害更具挑戰性。如前所述,將應用程序安全和漏洞評估集成到 DevOps 工作流中是一種最佳實踐,它將 AI 驅動的分析和自動化的優勢擴展到保護應用程序。
通過自動化應用程序安全測試以在運行時持續分析應用程序、庫和代碼,團隊可以消除安全盲點和誤報警報。將與安全相關的 SLO、測試和質量門添加到交付生命周期的所有階段,使團隊能夠培養一種安全思維,從而消除另一個孤島并產生更安全的軟件。
采用平臺驅動的自助服務流程方法
要實現廣泛的DevOps成功,需要一種平臺方法,使組織更容易實現結構性變革,從而優化團隊的工作方式。一個關鍵目標是建立自助服務流程,用于管理不同類型的測試、監控、警報、CI/CD 工作流、內部基礎架構和開發環境以及公有云基礎架構。當團隊能夠訪問可靠的數據和分析,并且個人擁有更多的自主權來依賴自己的知識和經驗時,組織可以將 DevOps 的價值擴展到整個企業。
通過利用 AI 和自動化的單一平臺中自助訪問 API、工具、服務和支持,團隊擁有單一可靠的知識和協調來源。這使團隊能夠集成和簡化其 DevOps 工具鏈和流程,從而減少維護基礎架構的時間,將更多時間用于創新。
DevOps 如何實現企業轉型
成功的 DevOps 計劃具有實驗、風險和信任的文化,在這種文化中,所有成員之間的持續反饋都受到歡迎和利用。但是,僅靠文化還不足以改變企業的努力;團隊還需要正確的技術和 DevOps 軟件來完成工作。
隨著工具和技術的激增,一項關鍵功能是可觀察性:能夠檢測和監視來自整個云原生環境的遙測數據。這包括指標、日志、分布式跟蹤,以及來自用戶體驗和最新開源標準的數據,用于衡量應用程序及其支持基礎設施在每個開發階段的運行狀況。
根據 Gartner 最近的一份報告,領導者應該在預生產期間考慮解決方案,以最大限度地了解應用程序性能、服務可用性和整體環境健康狀況。
在DevOps工作中加入更多規則的推動力也正在形成:“DevSecOps”團隊尋求將安全測試集成到交付和部署管道中,而“BizDevOps”則努力從用戶體驗的角度了解應用程序性能。
什么是DevOps中的可觀測性?
DevOps 將開發和運營結合到一個統一的框架中,打破了孤島并促進了整個生命周期的協作。在此環境中,SRE 可以實施確保軟件系統的可用性、延遲、性能和彈性的操作,而 CI/CD 實踐可以提供一致性良好的自動化開發、測試、交付和部署。
可觀測性如何縮小 DevOps 差距
什么是 DevOps?這是一種文化和戰術上的轉變,通過將團隊合作與技術相結合來簡化軟件交付、標準化測試和質量關口以及自動化流程和事件響應,從而縮小開發工作與運營義務之間的差距。借助最佳實踐和 AI 驅動的軟件智能平臺來管理整個 DevOps 工具鏈,團隊可以最大限度地提高效率、降低錯誤率并實現持續交付預期。