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

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

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