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