AI如何改變DevOps?
DevOps旨在加速軟件開發(fā)流程,在不影響代碼質(zhì)量的前提下,更快為客戶提供價值。過去十年以來,傳統(tǒng)DevOps已經(jīng)度過了很長一段發(fā)展周期。如今,企業(yè)組織開始遵循DevOps原理建立CI/CD管道。但在大多數(shù)情況下,團(tuán)隊仍在依靠手動流程與人為驅(qū)動建立自動化流程組合。很明顯,這樣的優(yōu)化程度并沒有達(dá)到理想或者理論意義上的極限。
最近,DevOps的理論高地迎來了AI與ML兩股技術(shù)力量。相關(guān)工具開始融合,并在傳統(tǒng)DevOps工具棧中碰撞出更多火花。從決策流程改進(jìn)到操作與代碼質(zhì)量增強(qiáng)自動化,DevOps在AI(人工智能)與ML(機(jī)器學(xué)習(xí))的雙料加持之下迎來了更光明的發(fā)展前景。下面,我們具體探討其中的幾大亮點:
第一,自動代碼審查。在軟件開發(fā)的早期階段,從編碼本身開始,AI與ML工具已經(jīng)能夠基于表達(dá)管理引導(dǎo)性數(shù)據(jù)集,即根據(jù)需要的機(jī)器行為與響應(yīng),為機(jī)器學(xué)習(xí)算法提供輸入數(shù)據(jù)等,執(zhí)行自動代碼審查與代碼分析。這一切,將極大減輕人類在代碼質(zhì)量管理中的工作量。
此外,借助代碼管理與協(xié)作工具,用戶可以自動在團(tuán)隊成員之間分發(fā)審核工作量。這一流程能夠由此類算法更早發(fā)現(xiàn)代碼缺陷、安全性問題以及代碼質(zhì)量問題。這些工具還可減少代碼審查中的噪聲。除了檢測缺陷之外,自動代碼審查還負(fù)責(zé)強(qiáng)制執(zhí)行編碼與安全標(biāo)準(zhǔn)。
第二,自動代碼分析工具。由AI與ML支持的智能工具,例如代碼分析與改進(jìn)工具,能夠從包含數(shù)百萬行代碼的報告中學(xué)習(xí),據(jù)此掌握代碼表達(dá)的意圖并記錄開發(fā)人員所做出的更改。以此為基礎(chǔ),這些智能工具即可通過分析為每一行代碼提出建議。
其他方案則可通過不同的角度分析代碼。在分析來自開源項目的數(shù)百萬條代碼之后,機(jī)器學(xué)習(xí)工具能夠提供有效的性能調(diào)優(yōu)結(jié)論,包括找出運行成本最高的代碼行,并避免這些代碼損害應(yīng)用程序的響應(yīng)時間。這些工具能夠發(fā)現(xiàn)代碼中的問題,例如資源泄漏、潛在的并發(fā)爭用以及被白白浪費掉的CPU周期。更重要的是,這些工具可以在代碼審查階段及應(yīng)用程序性能監(jiān)控階段與CI/CD管道順暢集成。
在對新功能進(jìn)行編碼之后,開發(fā)人員便可以研究如何開發(fā)由AI及ML驅(qū)動的自動化單元測試。在開發(fā)沖刺階段,這種智能單元測試工具能夠幫助開發(fā)者節(jié)約20%左右的時間。
第三,自我修復(fù)測試。在完成構(gòu)建及集成工作之后,下一階段就是實施功能與非功能測試。在此階段,使用AI與ML創(chuàng)建代碼并執(zhí)行自我修復(fù)測試/維護(hù),已經(jīng)在DevOps領(lǐng)域成為現(xiàn)實。
當(dāng)然,測試自動化本身也可能成為巨大的瓶頸,也成為不少項目頻頻延期的原因。不夠可靠的、不穩(wěn)定的自動化流程拖慢了測試過程,而這種不穩(wěn)定性往往源自受測應(yīng)用程序乃至測試流程中各類元素的快速變化。智能技術(shù)的出現(xiàn)有助于識別這些變化并立即調(diào)整測試方法,借此實現(xiàn)測試流程的穩(wěn)定性與可靠性。
第四,低代碼/無代碼工具。對于移動及Web應(yīng)用而言,以往我們需要投入巨量資源培養(yǎng)相關(guān)人才,來獲取穩(wěn)定可靠的代碼測試技能。在這方面,AI與ML測試工具能夠全面學(xué)習(xí)應(yīng)用程序流程、屏幕內(nèi)容與元素,最終以低代碼甚至無代碼方式自動生成測試。這些工具還可以在每輪測試中自我完善以增強(qiáng)測試質(zhì)量。
低代碼或無代碼工具允許團(tuán)隊成員參與到自動化測試的開發(fā)中來。在完成之后,開發(fā)者將節(jié)約下大量時間,可以將精力投入到其他更為緊迫的工作當(dāng)中——例如開發(fā)其他創(chuàng)新型功能。
第五,機(jī)器人流程自動化。RPA(機(jī)器人流程自動化)將使用AI與ML實現(xiàn)自動化測試推向了新的層面。此類技術(shù)能夠在大型組織當(dāng)中將大量以往需要手動執(zhí)行、耗時、易出錯且難以自動化的流程轉(zhuǎn)為自動操作。
第六,測試影響分析工具。測試執(zhí)行完成之后,即可由AI與ML測試影響分析(TIA)工具接手,指導(dǎo)決策者判斷需要在后續(xù)版本中繼續(xù)進(jìn)行哪些測試,而哪些測試在后續(xù)流程中可以剔除。另外,在同一測試類別之下,AI與ML算法可以根據(jù)引導(dǎo)性測試數(shù)據(jù)確定引發(fā)故障的根本原因,借此顯著縮短平均解決時間(MTTR)。
第七,AIOps。在DevOps流程的后期,即將代碼部署到生產(chǎn)環(huán)境之前與之后,AI與ML成為引領(lǐng)AIOps發(fā)展的新興技術(shù)。完整的AIOps解決方案不僅涵蓋智能APM(應(yīng)用程序性能監(jiān)控),同時也引入ITIM(IT基礎(chǔ)設(shè)施監(jiān)控)與ITSM(IT服務(wù)監(jiān)控)機(jī)制。二者共同構(gòu)成了生產(chǎn)與運營洞見分析的綜合層級,能夠在大數(shù)據(jù)之上運行并針對先進(jìn)的現(xiàn)代軟件架構(gòu)(微服務(wù)、云架構(gòu)等)起效。
借助基于AI的運營功能,團(tuán)隊可以專注于確定應(yīng)用程序的服務(wù)運行狀況,同時全面跟進(jìn)生產(chǎn)數(shù)據(jù)的控制與可見性。以此為基礎(chǔ),DevOps能夠使用實時自動事件管理進(jìn)一步縮短MTTR。其中AI與ML將負(fù)責(zé)為生產(chǎn)級應(yīng)用程序提供日志可觀察性、趨勢匯總以及相應(yīng)預(yù)測結(jié)果。
在AIOps組合中使用這些工具,團(tuán)隊可以減少并預(yù)防服務(wù)宕機(jī),加快故障解決處理速度,快速分析大型日志文件,并從中找出引發(fā)問題的根本原因與所屬類別,如安全性、網(wǎng)絡(luò)、服務(wù)器等等。
總結(jié)
在探索DevOps之旅中,我們可以運用當(dāng)前成果優(yōu)化并加速以往難以自動化或維護(hù)、且易于出錯的環(huán)節(jié)。AI與ML正是應(yīng)對這些挑戰(zhàn)的絕佳解決方案,決策者也可以通過分析各項問題從此類工具中獲取巨大價值。當(dāng)然,只有將這些解決方案與原有流程及工具無縫集成,才能真正獲得這種預(yù)期價值。如果AI與ML無法被輕松整合至標(biāo)準(zhǔn)DevOps工具棧內(nèi),則項目將淪為空談,并最終衰退回傳統(tǒng)的軟件開發(fā)實踐。