如何使用DORA工程指標(biāo)來(lái)改進(jìn)軟件開發(fā)團(tuán)隊(duì)
譯文【51CTO.com快譯】用于衡量軟件開發(fā)工作的客觀數(shù)據(jù)和指標(biāo)一直存在。但很長(zhǎng)一段時(shí)間以來(lái),人們認(rèn)為使用這些數(shù)據(jù)或指標(biāo)來(lái)衡量軟件開發(fā)的想法是不可能的。而Martin Fowler和Joel Spolsky等軟件開發(fā)專家也認(rèn)為這是不現(xiàn)實(shí)的。顯然,衡量軟件開發(fā)工作是一項(xiàng)具有挑戰(zhàn)性的任務(wù),這讓一些軟件開發(fā)人員感到沮喪。
而如今隨著Git、Jira和其他項(xiàng)目管理工具等工具的興起,其指標(biāo)開始變得清晰起來(lái),使人們能夠更密切地、以數(shù)據(jù)驅(qū)動(dòng)的方式查看軟件開發(fā)項(xiàng)目?jī)?nèi)部發(fā)生的事情。
當(dāng)然,很多組織已經(jīng)開始采取行動(dòng)。其中最重要和最著名的結(jié)果之一是由DevOps研究和評(píng)估組織(DORA)完成的。該組織在六年的時(shí)間里對(duì)數(shù)千名DevOps工程師和領(lǐng)導(dǎo)者進(jìn)行了調(diào)查,最終推出了被認(rèn)為對(duì)軟件開發(fā)項(xiàng)目成功至關(guān)重要的四個(gè)指標(biāo)。
四個(gè)DORA工程指標(biāo)是:
(1)部署頻率
(2)變更的平均交付周期
(3)平均恢復(fù)時(shí)間(MTTR)
(4)更改故障率
部署頻率和變更的平均交付周期這兩個(gè)指標(biāo)用來(lái)衡量開發(fā)團(tuán)隊(duì)的開發(fā)速度。平均恢復(fù)時(shí)間(MTTR)和更改故障率用來(lái)衡量項(xiàng)目質(zhì)量和穩(wěn)定性。所有四個(gè)指標(biāo)都可以通過挖掘開發(fā)團(tuán)隊(duì)當(dāng)前使用的工具得出。
這四個(gè)DORA工程指標(biāo)旨在允許開發(fā)團(tuán)隊(duì)根據(jù)業(yè)務(wù)目標(biāo)調(diào)整他們的工作,它們已成為組織中的首席技術(shù)官(CTO)和工程副總裁獲得有關(guān)其組織績(jī)效的標(biāo)準(zhǔn)方式。通過密切關(guān)注并改進(jìn)DORA指標(biāo)推進(jìn)開發(fā)團(tuán)隊(duì)的工作,開發(fā)團(tuán)隊(duì)可以確保他們做正確的事情來(lái)推動(dòng)他們的項(xiàng)目,更重要的是他們的業(yè)務(wù)如何向前發(fā)展。
當(dāng)然,了解指標(biāo)實(shí)際衡量的內(nèi)容及其含義對(duì)于使它們有用是必要的。此外,了解這些指標(biāo)的當(dāng)前狀態(tài)是在開發(fā)團(tuán)隊(duì)改進(jìn)它們的必要條件。
以下了解這四個(gè)關(guān)鍵指標(biāo)。
1.部署頻率
(1)它是什么?
部署頻率衡量代碼部署到生產(chǎn)中的次數(shù)。通常在“每日部署”中報(bào)告。
生產(chǎn)如今對(duì)不同的客戶意味著不同的東西。對(duì)于SaaS公司來(lái)說,通常意味著將代碼實(shí)際交付給客戶實(shí)際使用的生產(chǎn)平臺(tái)。對(duì)于其他公司,這可能意味著提供可供客戶使用的版本。
(2)為什么重要
增加部署頻率表明開發(fā)團(tuán)隊(duì)的效率和對(duì)其流程的信心。能夠更頻繁地部署的團(tuán)隊(duì)能夠更快地將工作轉(zhuǎn)移到他們的管道中,并且更高效地開發(fā)和處理他們的產(chǎn)品。
(3)它是如何計(jì)算的?
它記錄了組織在一天內(nèi)進(jìn)行的部署總數(shù)。如上所述,“部署”的定義可能因組織而異。如果軟件開發(fā)團(tuán)隊(duì)擁有持續(xù)集成(CI)/持續(xù)交付(CD)工具為其活動(dòng)提供API,則該指標(biāo)可以實(shí)現(xiàn)自動(dòng)化。
(4)如何改進(jìn)它?
如果組織希望提高部署頻率,應(yīng)該:
- 提高自動(dòng)化測(cè)試覆蓋率。
- 與持續(xù)集成(CI)/持續(xù)交付(CD)工具集成。
- 自動(dòng)化發(fā)布驗(yàn)證階段和發(fā)布流程。
- 減少生產(chǎn)中的錯(cuò)誤恢復(fù)時(shí)間。
2.變更的平均交付周期
(1)它是什么?
變更的平均交付周期是從提交代碼到將代碼發(fā)布到生產(chǎn)中所需的平均時(shí)間。
一些組織從項(xiàng)目代碼的第一次提交開始來(lái)計(jì)算時(shí)間,而另外一些組織從將代碼合并到主分支開始計(jì)算時(shí)間。
許多組織將變更的平均交付周期轉(zhuǎn)化為一個(gè)稱為周期時(shí)間(Cycle Time)的指標(biāo),以下將對(duì)此進(jìn)行討論。
(2)為什么重要
較低的平均交付周期意味著組織的開發(fā)團(tuán)隊(duì)可以高效地編碼和部署項(xiàng)目,并及時(shí)為其產(chǎn)品增加價(jià)值。試圖降低平均水平會(huì)激勵(lì)團(tuán)隊(duì)適當(dāng)?shù)貏澐止ぷ鳌氐讓彶榇a并進(jìn)行快速部署。
(3)它是如何計(jì)算的?
每個(gè)項(xiàng)目都從頭到尾進(jìn)行衡量,并計(jì)算這些時(shí)間的平均值。
(4)如何改進(jìn)它?
該指標(biāo)可以通過以下方式改進(jìn):
- 將自動(dòng)化添加到部署過程中。
- 確保持續(xù)集成(CI)/持續(xù)交付(CD)流程盡可能高效。
- 將項(xiàng)目分成更小、更易于管理的塊。
- 創(chuàng)建高效的代碼審查流程。
3.平均恢復(fù)時(shí)間(MTTR)
(1)它是什么?
該指標(biāo)衡量團(tuán)隊(duì)從系統(tǒng)故障中恢復(fù)所需的平均時(shí)間。而“故障”可能意味著任何事情,從生產(chǎn)中的錯(cuò)誤到生產(chǎn)系統(tǒng)宕機(jī)。
(2)為什么重要
顯然,停機(jī)時(shí)間越短越好,團(tuán)隊(duì)需要更快恢復(fù)。關(guān)注平均恢復(fù)時(shí)間將鼓勵(lì)構(gòu)建更強(qiáng)大的系統(tǒng),并加強(qiáng)對(duì)這些系統(tǒng)的監(jiān)控。
快速恢復(fù)時(shí)間反映了開發(fā)團(tuán)隊(duì)診斷問題和糾正問題的能力。測(cè)量平均恢復(fù)時(shí)間可以使團(tuán)隊(duì)在整個(gè)開發(fā)過程中更加謹(jǐn)慎,并關(guān)注質(zhì)量。
(3)它是如何計(jì)算的?
通常情況下,通過測(cè)量系統(tǒng)中創(chuàng)建生產(chǎn)錯(cuò)誤報(bào)告與解決該錯(cuò)誤報(bào)告之間的平均時(shí)間來(lái)跟蹤此指標(biāo)。或者,它可以通過測(cè)量創(chuàng)建報(bào)告和將修復(fù)部署到生產(chǎn)之間的時(shí)間來(lái)計(jì)算。
(4)如何改進(jìn)它?
平均恢復(fù)時(shí)間(MTTR)可以通過以下方式變得更好:
- 構(gòu)建快速報(bào)告故障的持續(xù)集成(CI)/持續(xù)交付(CD)系統(tǒng)。
- 確保有一個(gè)對(duì)故障立即采取行動(dòng)的流程。
- 將故障恢復(fù)優(yōu)先于所有其他任務(wù)。
- 縮短部署時(shí)間。
4.更改故障率
(1)它是什么?
更改故障率衡量代碼更改導(dǎo)致生產(chǎn)故障的頻率。導(dǎo)致回滾、生產(chǎn)失敗或生產(chǎn)中出現(xiàn)錯(cuò)誤的更改都會(huì)影響該指標(biāo)。
(2)為什么重要
這個(gè)指標(biāo)很重要,因?yàn)榛ㄔ谔幚砉收仙系乃袝r(shí)間都不是花在向客戶交付新功能和價(jià)值上的時(shí)間。顯然,減少軟件中的問題是可取的。
(3)它是如何計(jì)算的?
通常情況下,該指標(biāo)的計(jì)算方法是計(jì)算部署導(dǎo)致故障的次數(shù),然后除以總部署數(shù)以獲得平均值。平均值越低越好。
(4)如何改進(jìn)它?
當(dāng)組織執(zhí)行以下操作時(shí),更改故障率會(huì)得到改進(jìn):
- 確保自動(dòng)化單元測(cè)試涵蓋所有新代碼。
- 作為持續(xù)集成過程的一部分改進(jìn)自動(dòng)化測(cè)試。
- 進(jìn)行徹底和完整的代碼審查,以幫助防止將問題引入生產(chǎn)中。
跟蹤DORA指標(biāo)的好處
(1)決策
始終如一地跟蹤DORA指標(biāo),將使開發(fā)團(tuán)隊(duì)能夠在何處以及如何改進(jìn)開發(fā)過程做出更好的決策。這樣做將揭示面臨的瓶頸,并使開發(fā)團(tuán)隊(duì)能夠?qū)⒆⒁饬性诳赡軐?dǎo)致流程停滯的地方,還可以確定發(fā)展趨勢(shì),并且驗(yàn)證關(guān)于關(guān)注點(diǎn)的決策質(zhì)量。
跟蹤DORA指標(biāo)可以幫助開發(fā)團(tuán)隊(duì)和企業(yè)管理人員將注意力集中在能夠真正推動(dòng)價(jià)值的事情上。它們使開發(fā)團(tuán)隊(duì)能夠根據(jù)指標(biāo)做出決策,而不僅僅是憑直覺做出決定。
(2)交付價(jià)值
DORA指標(biāo)可以衡量開發(fā)團(tuán)隊(duì)交付的價(jià)值。如果DORA指標(biāo)是有利的,則組織的開發(fā)團(tuán)隊(duì)將為其客戶提供價(jià)值并保持必要的質(zhì)量,以免偏離重點(diǎn)。這是組織的主要目標(biāo)——為客戶提供價(jià)值。
(3)良性循環(huán)
當(dāng)任何東西被衡量時(shí),它很可能會(huì)被人為操縱或更改———也就是說,人們會(huì)改變行為來(lái)優(yōu)化被衡量的東西。很多時(shí)候這會(huì)對(duì)開發(fā)團(tuán)隊(duì)的工作產(chǎn)生負(fù)面的的影響。
組織希望開發(fā)團(tuán)隊(duì)努力優(yōu)化這些DORA指標(biāo),可以提高效率并減少浪費(fèi),這會(huì)帶來(lái)良好的結(jié)果。通常情況下,刻意追求指標(biāo)會(huì)對(duì)開發(fā)團(tuán)隊(duì)產(chǎn)生負(fù)面影響,因?yàn)檫@些指標(biāo)是經(jīng)過精心設(shè)計(jì)的,其目的卻恰恰相反。
LinearB幫助組織衡量和改進(jìn)DORA工程指標(biāo)
DORA指標(biāo)很重要,而LinearB可以輕松跟蹤它們,為組織提供開箱即用的DORA指標(biāo),可以輕松顯示和跟蹤。
通過向開發(fā)組織的高管提供其DORA指標(biāo)的更高級(jí)別視圖,這樣的儀表板可能會(huì)很有用。通過簡(jiǎn)單的視圖,高管可以一目了然地了解開發(fā)團(tuán)隊(duì)的工作情況以及可能需要進(jìn)行哪些中途更正的事項(xiàng)。
除了DORA指標(biāo)之外,LinearB還可以跟蹤有助于提高組織績(jī)效的其他指標(biāo)。例如拉取請(qǐng)求大小、拉取請(qǐng)求審查深度和拉取請(qǐng)求審查時(shí)間等指標(biāo)都可以監(jiān)控,改進(jìn)后將會(huì)減少更改的平均交付周期和部署頻率。
LinearB超越DORA指標(biāo)
LinearB超越了DORA的變更的平均交付周期指標(biāo),以提供周期時(shí)間(Cycle Time)指標(biāo)。
周期時(shí)間是一個(gè)強(qiáng)大的指標(biāo),用于衡量給定代碼單元從分支創(chuàng)建到生產(chǎn)部署所需的時(shí)間。它實(shí)際上是對(duì)給定任務(wù)或子任務(wù)交付給最終用戶速度的衡量。當(dāng)然,交付功能是每個(gè)開發(fā)組織的目標(biāo)之一。
周期時(shí)間分為四個(gè)部分:
(1)編碼時(shí)間——通常是指第一次提交到給定分支和為該分支創(chuàng)建拉取請(qǐng)求之間的時(shí)間。
(2)拉取請(qǐng)求時(shí)間——這是創(chuàng)建拉取請(qǐng)求和開始審查該拉取請(qǐng)求之間的時(shí)間。
(3)拉取請(qǐng)求審查時(shí)間——從拉取請(qǐng)求審查開始到合并代碼之間的時(shí)間。
(4)部署時(shí)間——部署時(shí)間是代碼合并和代碼實(shí)際部署到生產(chǎn)之間的時(shí)間跨度。
改善周期時(shí)間有很多好處:
- 密切跟蹤編碼時(shí)間可以鼓勵(lì)開發(fā)團(tuán)隊(duì)將開發(fā)工作分成更小、更易于管理的塊。如果給定的分支或項(xiàng)目很大并且需要很長(zhǎng)時(shí)間,那么周期時(shí)間就會(huì)增加。相反,它鼓勵(lì)更小的工作量。
- 推動(dòng)團(tuán)隊(duì)及時(shí)處理拉取請(qǐng)求。它有助于防止緩慢的拉取請(qǐng)求和過大而無(wú)法有效審查的拉取請(qǐng)求。
- 跟蹤部署時(shí)間的團(tuán)隊(duì)被激勵(lì)專注于改進(jìn)和簡(jiǎn)化構(gòu)建和部署流程。
周期時(shí)間的增加可以成為項(xiàng)目遇到困難的早期預(yù)警系統(tǒng)。如果必須為團(tuán)隊(duì)選擇一個(gè)指標(biāo)來(lái)衡量,那就是周期時(shí)間。
WorkerB改進(jìn)了DORA指標(biāo)
空閑時(shí)間是在軟件開發(fā)過程中等待事情發(fā)生的時(shí)間——拉取請(qǐng)求閑置且未經(jīng)審查就是一個(gè)很好的例子。它是影響DORA中的部署頻率和平均變更提前期這兩個(gè)重要指標(biāo)的主要因素。
WorkerB是由LinearB提供的一項(xiàng)功能,它可以減少對(duì)空閑時(shí)間產(chǎn)生的積極影響,從而提高組織的DORA指標(biāo)。通過通知團(tuán)隊(duì)成員有關(guān)存儲(chǔ)庫(kù)事件,可以確保團(tuán)隊(duì)立即了解周期時(shí)間的組成部分(例如拉取請(qǐng)求提取時(shí)間和拉取請(qǐng)求審查時(shí)間),并允許他們以更及時(shí)的方式做出反應(yīng)。
根據(jù)LinearB一些用戶的反饋,在使用WorkerB的前四個(gè)月內(nèi),周期時(shí)間減少了50%以上。
衡量成功
DORA指標(biāo)基于對(duì)軟件開發(fā)團(tuán)隊(duì)的多年研究。通過DORA指標(biāo)來(lái)衡量成功將通過組織的開發(fā)管道交付更多價(jià)值。
LinearB可以幫助組織的開發(fā)團(tuán)隊(duì)始終如一地跟蹤它們,從而對(duì)其軟件開發(fā)過程和業(yè)務(wù)產(chǎn)生深遠(yuǎn)而持久的影響。
原文標(biāo)題:How To Use DORA Engineering Metrics To Improve Your Dev Team,作者:Nick Hodges
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】