如何提高效率和性能的關(guān)鍵DevOps指標(biāo)
學(xué)習(xí)如何使用DevOps指標(biāo)來提高開發(fā)團(tuán)隊的速度、一致性和效率。
人們看到越來越多的組織重新關(guān)注于采用和改進(jìn)他們的DevOps實踐,以幫助優(yōu)化他們的軟件開發(fā)生命周期,提高他們的交付速度,以更快地到達(dá)市場和客戶。以下是關(guān)于DevOps的四個關(guān)鍵指標(biāo)以及團(tuán)隊如何使用這些指標(biāo)來提高開發(fā)效率和性能,為客戶構(gòu)建更好、更快的產(chǎn)品所需要知道的全部內(nèi)容。
什么是DevOps指標(biāo)?
DevOps指標(biāo)是用來衡量團(tuán)隊DevOps軟件開發(fā)過程的性能和效率的數(shù)據(jù)點。因為DevOps集成了開發(fā)和運營的功能,所以指標(biāo)應(yīng)該能夠度量和優(yōu)化流程和相關(guān)人員的性能?! ?/p>
通過DevOps度量和收集見解,可以幫助管理人員對團(tuán)隊的流程和瓶頸收集可操作的見解,并在遇到阻礙時迅速采取補(bǔ)救措施。因此,DevOps指標(biāo)使團(tuán)隊能夠成功地完成目標(biāo)?! ?/p>
DevOps的四個關(guān)鍵指標(biāo)
谷歌的DevOps研究和評估(DORA)團(tuán)隊已經(jīng)確定了四個可以指示和優(yōu)化DevOps性能健康狀況的關(guān)鍵指標(biāo)。DORA四鍵項目旨在生成有價值的數(shù)據(jù)和收集見解,以提高圍繞DevOps實踐的工程生產(chǎn)率。以下是四個核心DevOps指標(biāo),通常被稱為DORA指標(biāo):
?部署頻率:度量團(tuán)隊成功向生產(chǎn)發(fā)布變更的頻率,表明團(tuán)隊交付軟件的速度。
變更前置時間:從變更請求的工作開始到交付生產(chǎn)并最終交付給客戶的這段時間稱為變更前置時間。團(tuán)隊使用前置時間來確定開發(fā)過程的效率?! ?/p>
更改失敗率:度量產(chǎn)品更改在發(fā)布后導(dǎo)致失敗的比率。它是一個團(tuán)隊所產(chǎn)生的代碼質(zhì)量的指標(biāo)?! ?/p>
?平均恢復(fù)時間:衡量通過生產(chǎn)變更解決事故或故障所需的時間?! ?/p>
部署頻率和變更前置時間的度量計算團(tuán)隊的速度,而變更失敗率和恢復(fù)度量的平均時間則關(guān)注軟件的穩(wěn)定性?! ?/p>
根據(jù)2019年DevOps加速狀態(tài)報告,這種形式的DevOps指標(biāo)分析并將團(tuán)隊分為低、中、高和精英表現(xiàn)者,后者達(dá)到或超過其組織績效目標(biāo)的可能性是后者的兩倍。通過使用這些指標(biāo),組織可以跟蹤并改進(jìn)團(tuán)隊的績效和過程的有效性。
部署頻率
團(tuán)隊的部署頻率直接轉(zhuǎn)化為將代碼或版本部署到生產(chǎn)中的速度。這個DevOps指標(biāo)可能因團(tuán)隊、特性和組織而異。它還取決于產(chǎn)品和內(nèi)部部署標(biāo)準(zhǔn)。例如,一些應(yīng)用程序可能每年只發(fā)布幾個大型版本,而另一些應(yīng)用程序可以在一個季度內(nèi)進(jìn)行大量小型部署?! ?/p>
部署頻率如何影響業(yè)務(wù)
更高的部署頻率比可能表明團(tuán)隊正在更快地跟蹤、改進(jìn)或向市場推出新功能。更高的部署頻率還為客戶和團(tuán)隊之間的持續(xù)反饋循環(huán)鋪平了道路,從而轉(zhuǎn)化為向最終用戶發(fā)布更好版本的產(chǎn)品。谷歌在DORA上的研究還表明,主動團(tuán)隊有更高的部署頻率,這意味著他們可以按需部署?! ?/p>
如何衡量
在一段較長的時間內(nèi)跟蹤部署頻率可以幫助跟蹤速度的變化、跟蹤瓶頸并更快地采取糾正措施。測量部署頻率的一種有效方法是從GitHub、Jira和其他地方收集數(shù)據(jù),以確定計劃中的代碼是否已交付。這樣做不僅允許管理人員跟蹤部署頻率,而且還可以清除阻礙因素,因為對部署頻率的常規(guī)關(guān)注可以揭示遺漏的部署,并了解其背后的模式和原因?! ?/p>
實現(xiàn)更高部署頻率的技巧
?自動化部署過程中的重復(fù)任務(wù),建立和配置連續(xù)交付管道
?對發(fā)布進(jìn)行持續(xù)改進(jìn),以優(yōu)化最終結(jié)果
?只在必要時獲得持續(xù)的改進(jìn)反饋
?明確需求和期望,不要給不必要的范圍變動留下空間
?優(yōu)化周期時間,使其更有效,以確保部署在定期進(jìn)行
改變交貨時間
團(tuán)隊使用變更前置時間(不要與周期時間/前置時間混淆)來確定開發(fā)過程的效率。較長的前置時間可能是由低效的過程或開發(fā)或部署管道中的瓶頸造成的。團(tuán)隊的目標(biāo)通常是縮短交貨時間,但較高的交貨時間并不總是麻煩的跡象。有些版本可能很復(fù)雜,可能需要更多的時間來交付?! ?/p>
交貨時間的改變?nèi)绾斡绊憳I(yè)務(wù)
LTC指標(biāo)有助于跟蹤流程中的低效率。前置時間優(yōu)化的主要目標(biāo)之一是通過自動化(主要是測試過程)來增加部署,從而縮短部署的總體時間。與部署頻率一樣,前置時間也可能因團(tuán)隊和產(chǎn)品而異。因此,組織應(yīng)該跟蹤、設(shè)置基準(zhǔn),并隨著時間的推移比較單個團(tuán)隊的表現(xiàn),而不是將它們與其他團(tuán)隊進(jìn)行比較?! ?/p>
如何衡量
前置時間是通過測量初始提交和發(fā)布版本投入生產(chǎn)之間的時間來計算的。由于交貨期由開發(fā)周期中的多個階段組成,團(tuán)隊?wèi)?yīng)該計算開發(fā)過程的每個階段的時間,以確定瓶頸。跟蹤周期時間可以幫助理解開發(fā)過程中的不同步驟,確定有問題的區(qū)域,并執(zhí)行相同的RCA。堅持這樣做有助于發(fā)現(xiàn)瓶頸,并在未來的開發(fā)周期中更好地制定戰(zhàn)略?! ?/p>
優(yōu)化交貨時間的建議
縮短交貨時間的一個關(guān)鍵因素是改進(jìn)測試和開發(fā)團(tuán)隊之間的協(xié)作,以改進(jìn)質(zhì)量保證。這有助于經(jīng)理更好地理解DevOps的周期時間?! ?/p>
?自動化測試可以消除重復(fù)的工作和消耗開發(fā)人員時間的瑣碎更改?! ?/p>
?工作在小增量保持在當(dāng)前模塊的頂部,以確保沒有錯誤,可能需要在未來返工?! ?/p>
?對重復(fù)版本進(jìn)行更改,以確保主代碼不受影響?! ?/p>
更改失敗率
更改失敗率度量生產(chǎn)中部署失敗的百分比,需要進(jìn)行錯誤修復(fù)或回滾。這個DevOps指標(biāo)檢查部署次數(shù)與失敗次數(shù),以解碼DevOps流程的效率?! ?/p>
變更失敗率如何影響開發(fā)過程
更改失敗率指標(biāo)跟蹤花費在糾正問題而不是開發(fā)新項目上的時間。這有助于管理人員了解他們的團(tuán)隊在哪些方面投入了精力,并有助于使團(tuán)隊和流程在編寫新代碼上花費更多的時間,而不是處理錯誤和返工。
如何衡量
用部署失敗的次數(shù)除以部署的總次數(shù)就得到了CFR。團(tuán)隊?wèi)?yīng)該確保變更失敗率降到最低。但這也并不意味著要花費太多時間構(gòu)建和測試每個模塊,因為這可能會影響交付時間?! ?/p>
優(yōu)化變更失敗的提示
更改失敗并不總是表明代碼執(zhí)行得很糟糕。有時,外部因素,如不明確的需求或小錯誤,可能導(dǎo)致程序失敗?! ?/p>
?確保代碼按照sprint計劃編寫、評審和測試
?控制sprint速度和代碼變動指標(biāo),可以幫助了解所做的更改及其背后的原因
平均恢復(fù)時間(MTTR)
MTTR是衡量部署后為解決問題而采取的對策所花費的時間。團(tuán)隊快速從失敗中恢復(fù)的能力依賴于他們在失敗發(fā)生時立即識別失敗(MTTD)并發(fā)布補(bǔ)救措施或回滾導(dǎo)致失敗的任何更改的能力。這通常是通過持續(xù)監(jiān)視系統(tǒng)運行狀況并在發(fā)生故障時通知操作人員來實現(xiàn)的?! ?/p>
MTTR如何影響開發(fā)過程
MTTR測試團(tuán)隊解決bug或事件的速度。高績效團(tuán)隊從事故中快速恢復(fù),而低績效團(tuán)隊可能需要長達(dá)一周或更長時間才能恢復(fù)。測量MTTR是確保彈性和穩(wěn)定性的關(guān)鍵實踐?! ?/p>
如何衡量
MTTR可以通過計算事件發(fā)生和解決之間的時間來測量。為了解決事故,運營團(tuán)隊?wèi)?yīng)該配備正確的工具、協(xié)議和權(quán)限?! ?/p>
優(yōu)化MTTR的技巧
要實現(xiàn)快速的MTTR度量,可以以小增量部署軟件以降低風(fēng)險,并部署自動監(jiān)視解決方案以搶占故障?! ?/p>
?構(gòu)建更健壯的系統(tǒng),在發(fā)布之前進(jìn)行測試
?更好的日志記錄提供了數(shù)據(jù),以便在故障發(fā)生時更快地診斷和發(fā)現(xiàn)問題
?這可以通過不斷檢查錯誤和阻礙來實現(xiàn)
改進(jìn)DORA指標(biāo)的策略
關(guān)注框架
簡單地使用DORA指標(biāo)并不能改進(jìn)開發(fā)過程。管理者還應(yīng)該制定如何利用和提高DORA指標(biāo)的策略。做到這一點的最佳方法是對團(tuán)隊的當(dāng)前狀況進(jìn)行基準(zhǔn)測試,并為項目的目標(biāo)和計劃繪制路線圖。在定義目標(biāo)和截止日期時,需要關(guān)注的兩個主要因素是項目分配和項目計劃準(zhǔn)確性?! ?/p>
管理人員應(yīng)該根據(jù)業(yè)務(wù)優(yōu)先級確定團(tuán)隊并分配項目。優(yōu)化的項目分配過程還有助于確保工程團(tuán)隊在任何給定的時間都在正確的項目上工作,并在需要時進(jìn)行修改?! ?/p>
項目計劃使管理人員能夠保持在時間表的頂端,并確保一個sprint又一個sprint地實現(xiàn)目標(biāo)。持續(xù)地衡量這一點有助于識別和解決阻礙進(jìn)展的障礙。在這里,諸如周期時間、代碼周轉(zhuǎn)和sprint速度等指標(biāo)提供了實現(xiàn)每個sprint目標(biāo)和滿足截止日期所需的支持?! ?/p>
促進(jìn)合作
定義目標(biāo)并使團(tuán)隊朝著實現(xiàn)目標(biāo)的方向調(diào)整可以幫助實現(xiàn)更好的結(jié)果。做到這一點的一個有效方法是每天召開站立會議,把團(tuán)隊聚集在一起,明確目標(biāo)。站立會議還能讓每個人都知道誰在做什么,但更重要的是,它能幫助團(tuán)隊識別阻礙因素并制定解決問題的路線圖。為了使站立會議更加高效和有效,管理者可以采用異步站立會議,這樣不僅可以達(dá)到目的,還可以保留工程師的注意力時間和文檔信息以供將來參考。
建立更好的工作流程
管理者應(yīng)該專注于創(chuàng)建基于數(shù)據(jù)的工作流。他們應(yīng)該有辦法收集各種軟件工程度量,如拉請求度量、開發(fā)人員專注時間、團(tuán)隊周期時間、代碼變動和其他度量,以設(shè)計一個數(shù)據(jù)豐富的過程,該過程具有高質(zhì)量和低失敗幾率。
號召持續(xù)集成和持續(xù)交付
持續(xù)集成和持續(xù)交付結(jié)合了在共享存儲庫中持續(xù)集成所有編寫的代碼的實踐,觸發(fā)自動測試,并最終提供持續(xù)交付的方法。CI/CD自動化了將新代碼從提交到生產(chǎn)中所需的大部分或所有手動干預(yù)。這包括構(gòu)建、測試和部署階段。有了CI/CD管道,開發(fā)人員就可以對代碼進(jìn)行返工和更改,這些代碼將被自動測試并推動部署。這促進(jìn)了更高的開發(fā)頻率和變更的前置時間,同時也限制了變更失敗的空間。