DevOps可以幫助減少技術(shù)債務(wù)的十種方式
譯文?譯者 | 李睿
審校 | 孫淑娟
對(duì)于大多數(shù)企業(yè)來說,技術(shù)債務(wù)是不可避免的,但DevOps實(shí)踐可以幫助將其最小化。
如果不解決技術(shù)債務(wù),可能會(huì)妨礙企業(yè)的開發(fā)過程和產(chǎn)品質(zhì)量。雖然修復(fù)累積的技術(shù)債務(wù)需要更多的時(shí)間和資金,但預(yù)防勝于治療。根據(jù)調(diào)研機(jī)構(gòu)Gartner公司發(fā)布的一份研究報(bào)告,能夠積極管理和減少技術(shù)債務(wù)的基礎(chǔ)設(shè)施和運(yùn)營(yíng)領(lǐng)導(dǎo)者可以將交付時(shí)間縮短50%。
DevOps已經(jīng)成為IT行業(yè)眾多挑戰(zhàn)的解決方案。它還可以解決技術(shù)債務(wù)挑戰(zhàn)。以下是DevOps可以幫助企業(yè)管理和減少技術(shù)債務(wù)的10種方式。
1.在軟件開發(fā)的早期階段進(jìn)行測(cè)試
DevOps的一個(gè)關(guān)鍵實(shí)踐是左移測(cè)試或軟件開發(fā)生命周期早期測(cè)試(SDLC),有助于在交付過程的早期發(fā)現(xiàn)并防止錯(cuò)誤。它包括單元測(cè)試、靜態(tài)代碼分析、代碼覆蓋率分析和其他代碼級(jí)實(shí)踐,以便在修復(fù)錯(cuò)誤的成本最低的情況下,盡早捕獲錯(cuò)誤。
此外,在開發(fā)過程中進(jìn)行測(cè)試可以改進(jìn)代碼設(shè)計(jì),并使開發(fā)團(tuán)隊(duì)在未來更容易理解。因此,早期測(cè)試可以減少技術(shù)債務(wù),并降低長(zhǎng)期成本。
2.首先發(fā)現(xiàn)并解決重大問題
由于企業(yè)的團(tuán)隊(duì)之間加強(qiáng)了協(xié)作,DevOps生命周期具有更短的反饋周期和更快的迭代。因此,錯(cuò)誤、可用性問題和安全漏洞不必等到下一個(gè)功能發(fā)布才能得到修復(fù),并且會(huì)立即修復(fù)可能影響用戶或操作的主要問題。
企業(yè)可以通過從高優(yōu)先級(jí)到低優(yōu)先級(jí)對(duì)問題進(jìn)行分類或排序來進(jìn)一步優(yōu)化流程,以確定首先要解決哪些問題。然后齊心協(xié)力,首先解決主要問題,但不要把任何問題留到以后解決。
3.在開發(fā)和運(yùn)營(yíng)團(tuán)隊(duì)之間建立更好的協(xié)作
在大多數(shù)情況下,出現(xiàn)技術(shù)債務(wù)是因?yàn)殚_發(fā)團(tuán)隊(duì)為了在最后期限到來之前交付軟件而采取捷徑,并努力應(yīng)對(duì)不斷的變化。但是,開發(fā)人員和運(yùn)營(yíng)人員之間更好的協(xié)作可以縮短軟件開發(fā)生命周期早期測(cè)試(SDLC),加快部署并提高頻率。此外,持續(xù)集成(CI)/持續(xù)交付(CD)和持續(xù)測(cè)試使團(tuán)隊(duì)更容易處理更改。總地來說,協(xié)作文化鼓勵(lì)代碼審查、良好的編碼實(shí)踐和相互幫助的健壯測(cè)試。
4.更加強(qiáng)調(diào)自動(dòng)化
當(dāng)企業(yè)將日常耗時(shí)的任務(wù)和更容易出錯(cuò)的任務(wù)自動(dòng)化時(shí),其團(tuán)隊(duì)就有更多時(shí)間償還技術(shù)債務(wù)。
此外,通過自動(dòng)化測(cè)試、自動(dòng)化構(gòu)建和基礎(chǔ)架構(gòu)即代碼(IaC)嵌入到持續(xù)集成(CI)/持續(xù)交付(CD)中的自動(dòng)化有助于更早地識(shí)別債務(wù),并實(shí)現(xiàn)持續(xù)的債務(wù)償還。它還強(qiáng)制執(zhí)行代碼的質(zhì)量標(biāo)準(zhǔn)。因此,自動(dòng)化可以減輕當(dāng)前的技術(shù)債務(wù),同時(shí)也可以避免未來的債務(wù)。
5.不要留到以后解決
技術(shù)債務(wù)在持續(xù)管理時(shí)得到最好的控制,這在DevOps中變得更加容易。由于它促進(jìn)了持續(xù)的溝通,團(tuán)隊(duì)可以跟蹤債務(wù),并盡快解決。團(tuán)隊(duì)領(lǐng)導(dǎo)還可以將技術(shù)債務(wù)審查納入待辦事項(xiàng),并安排維護(hù)sprint以及時(shí)處理。此外,DevOps減少了待辦事項(xiàng)中不完整或延遲任務(wù)的可能性,有助于防止出現(xiàn)技術(shù)債務(wù)。
6.建立DevOps文化
真正的DevOps文化可能是長(zhǎng)期管理技術(shù)債務(wù)的關(guān)鍵。DevOps文化鼓勵(lì)跨職能團(tuán)隊(duì)之間的強(qiáng)大協(xié)作,提供自主權(quán)和所有權(quán),并實(shí)踐持續(xù)的反饋和改進(jìn)。它提供了一個(gè)有效的平臺(tái)來跟蹤、計(jì)算技術(shù)債務(wù) ,并將其傳達(dá)給其他團(tuán)隊(duì)。此外,DevOps文化可以用于教育和告知開發(fā)人員在未來會(huì)引入錯(cuò)誤,并提高代碼質(zhì)量的代碼類型。
7.制定精確的DevOps標(biāo)準(zhǔn)
明確定義的DevOps標(biāo)準(zhǔn)使企業(yè)能夠在每次代碼簽入時(shí)創(chuàng)建質(zhì)量門,然后運(yùn)行測(cè)試和部署。它使企業(yè)的團(tuán)隊(duì)免于重復(fù)、容易出錯(cuò)的人工任務(wù),并優(yōu)化他們的開發(fā)工作。
執(zhí)行DevOps標(biāo)準(zhǔn)還可以防止企業(yè)的團(tuán)隊(duì)走捷徑(例如在編寫代碼時(shí)偷工減料),這是技術(shù)債務(wù)的最大貢獻(xiàn)者之一。因此,精確的DevOps標(biāo)準(zhǔn)可以保持高水平的生產(chǎn)力和質(zhì)量,同時(shí)保持團(tuán)隊(duì)士氣高漲,間接為企業(yè)節(jié)省資金。
8.使部署過程更順暢
更平滑的部署過程可以使DevOps團(tuán)隊(duì)更容易識(shí)別和減少技術(shù)債務(wù)。企業(yè)可以考慮使用容器來簡(jiǎn)化部署。容器是輕量級(jí)和可移植的,這簡(jiǎn)化了應(yīng)用程序的開發(fā)和部署。Kubernetes等容器編排工具在生產(chǎn)中自動(dòng)執(zhí)行容器生命周期,使企業(yè)的團(tuán)隊(duì)能夠?qū)W⒂谥貥?gòu)應(yīng)用程序或削減技術(shù)債務(wù)等高價(jià)值任務(wù)。
9.實(shí)現(xiàn)API優(yōu)先模型
應(yīng)用程序組件的通信方式對(duì)于解決技術(shù)債務(wù)也很重要,因?yàn)榧夹g(shù)債務(wù)通常是由不同的系統(tǒng)以其他團(tuán)隊(duì)未預(yù)料到的方式訪問服務(wù)和數(shù)據(jù)造成的。
實(shí)現(xiàn)API使接口更加可見,并增加了通信的持久性。由于應(yīng)用程序之間的松散耦合,基于API的模型使團(tuán)隊(duì)能夠在不影響現(xiàn)有結(jié)構(gòu)的情況下快速進(jìn)行更改。此外,任何后來與相關(guān)服務(wù)交互的團(tuán)隊(duì)都有一組明確定義的期望。因此,可以更輕松地推出功能/更改,同時(shí)減少技術(shù)負(fù)擔(dān)。
10.為常見任務(wù)部署自助服務(wù)管道
另一種減少技術(shù)債務(wù)的戰(zhàn)略方法是實(shí)現(xiàn)自動(dòng)化或簡(jiǎn)化任務(wù),這些任務(wù)會(huì)增加開發(fā)過程的時(shí)間和成本,但不會(huì)增加產(chǎn)品的價(jià)值。此類任務(wù)可以包括滿足合規(guī)性要求、活動(dòng)報(bào)告以及工作人員之間的工作交接。
此外,企業(yè)可以為編譯代碼、運(yùn)行測(cè)試、構(gòu)建容器等常見任務(wù)部署自助服務(wù)管道。這為開發(fā)團(tuán)隊(duì)節(jié)省了更多時(shí)間,使他們能夠?yàn)楣芾砗蜏p少技術(shù)債務(wù)做出貢獻(xiàn)。
DevOps無法解決圍繞技術(shù)債務(wù)的所有挑戰(zhàn)。但它可以及早發(fā)現(xiàn)債務(wù)、減少錯(cuò)誤并控制代碼質(zhì)量,從而減緩技術(shù)債務(wù)的積累,并有助于將其保持在可維護(hù)的閾值以下。雖然企業(yè)可能無法立即解決所有的技術(shù)債務(wù),但這些技巧肯定會(huì)幫助企業(yè)有效地應(yīng)對(duì)技術(shù)債務(wù)挑戰(zhàn)。
原文標(biāo)題:??10 ways DevOps can help reduce technical debt???,作者:Hardik Shah?