近日,在華為開發(fā)者大會(Cloud)上,華為云發(fā)布了基于華為云CloudIDE的智能化編碼工具和云原生應(yīng)用調(diào)測工具;華為云開發(fā)工具和效率首席專家、華為開發(fā)工具技術(shù)專委會主任王亞偉在主題演講中介紹了如何基于智能化代碼補(bǔ)全技術(shù)(SmartAssist)和微服務(wù)集群調(diào)測技術(shù)(CloudDebugger)重塑編碼和微服務(wù)調(diào)測生產(chǎn)力。
王亞偉介紹華為云CloudIDE
智能AI代碼補(bǔ)全—SmartAssist
絕大多數(shù)的開發(fā)者還是用IDE寫代碼,那么就一定用到代碼補(bǔ)全功能,它是IDE最核心的技術(shù)之一。代碼補(bǔ)全技術(shù)經(jīng)歷了很長時間的發(fā)展,從最開始的IDE的基礎(chǔ)補(bǔ)全,其是基于IDE對編程語言語法和語義理解來實(shí)現(xiàn)的。隨著AI的發(fā)展,很多人在探索如何借助AI技術(shù)來提升代碼補(bǔ)全的效果這類方案大多是基于公開的代碼語料庫訓(xùn)練一個模型,當(dāng)開發(fā)者進(jìn)行編碼的時候,這個模型主要做的事是對補(bǔ)全位置的代碼上下文的特征進(jìn)行相似度匹配,然后給出一個補(bǔ)全結(jié)果列表。這類方案的主要共性問題有:多符號補(bǔ)全的準(zhǔn)確性不高;很多時候補(bǔ)全結(jié)果需要人工干預(yù)和二次加工;有時對于補(bǔ)全結(jié)果并不自信,體現(xiàn)在給開發(fā)者過多的推薦結(jié)果讓其選擇。
然后,王亞偉介紹了SmartAssist,它結(jié)合了深度代碼分析和深度學(xué)習(xí)模型,即對開發(fā)者的本地代碼進(jìn)行深度分析,構(gòu)成一個本地的代碼模型。與此同時結(jié)合線下訓(xùn)練的多場景的深度學(xué)習(xí)模型,兩者搭配,最后幫助開發(fā)者進(jìn)行代碼補(bǔ)全。SmartAssist理解對于當(dāng)前補(bǔ)全位置的上下文中所有符合語法規(guī)則的結(jié)果,同時對這些結(jié)果進(jìn)到我們的多場景模型進(jìn)行決策和排序。因此,SmartAssist對于補(bǔ)全結(jié)果的可解釋性和可調(diào)節(jié)性是非常好的。
SmartAssist三大核心技術(shù)
SmartAssist有三大核心技術(shù):第一:基于內(nèi)存壓縮的高性能代碼的索引;第二:語法樹搜索算法;第三:多場景的深度學(xué)習(xí)模型。
當(dāng)開發(fā)者在使用SmartAssist進(jìn)行編碼輔助的時候,首先補(bǔ)全位置的代碼上下文會進(jìn)行一個詞相量化,然后語法樹搜索算法會基于本地代碼索引窮舉所有可能的補(bǔ)全結(jié)果,然后對這些結(jié)果進(jìn)行排序,過濾和填參處理,最后的候選項(xiàng)會結(jié)合上下文詞向量進(jìn)入到深度學(xué)習(xí)模型進(jìn)行決策。
ColudDebugger是如何重塑微服務(wù)的調(diào)測生產(chǎn)力?
聊完重塑編碼生產(chǎn)力之后,接下來王亞偉介紹了CloudDebugger如何重塑微服務(wù)集群的調(diào)測生產(chǎn)力。
單體架構(gòu)的軟件調(diào)測非常方便源自于其簡單的進(jìn)程模型,開發(fā)者只需要通過IDE將調(diào)試器連接到對應(yīng)進(jìn)程,即可進(jìn)行調(diào)試。在企業(yè)應(yīng)用現(xiàn)代化改造這樣一個大背景下,單體架構(gòu)的軟件非常不受待見,因?yàn)閼?yīng)用現(xiàn)代化改造的第一步就是單體架構(gòu)的微服務(wù)改造。試想一下,原來一個只有3個接口的單體架構(gòu)軟件,當(dāng)解耦成10個微服務(wù)之后,就有30個接口。所以微服務(wù)調(diào)測第一大挑戰(zhàn),就是這些海量的接口測試用例的開發(fā)工作量巨大。第二個挑戰(zhàn),這些微服務(wù)之間必然有非常復(fù)雜的調(diào)用關(guān)系,而這些調(diào)用關(guān)系,需要依賴Mock,這樣會帶來調(diào)測的不完備。第三,多微服務(wù)之間進(jìn)程并發(fā)調(diào)測,傳統(tǒng)調(diào)試手段不可行。
接下來王亞偉用一個典型的多人多版本微服務(wù)調(diào)測的場景跟大家分享了CloudDebugger到底能給開發(fā)者帶來什么價值?
在這樣一個場景下,三個用戶,用戶1、用戶2和用戶3。用戶1通過CloudDebugger發(fā)起了調(diào)試會話,他的調(diào)用鏈條是微服務(wù)A的1.0、B的1.0和D的1.0版本,用戶2的調(diào)試會話的調(diào)用鏈?zhǔn)俏⒎?wù)A的2.0、B的2.0和D的2.0版本。用戶3是在進(jìn)行微服務(wù)3.0的開發(fā),他不關(guān)心其他微服務(wù),所以調(diào)用鏈?zhǔn)俏⒎?wù)A、C和微服務(wù)D的3.0版本。在這樣一個復(fù)雜的場景之下,CloudDebugger能給開發(fā)者帶來什么?第一,這三個用戶之間的調(diào)試會話互相獨(dú)立,互不干擾;言下之意,用戶1的請求不會觸發(fā)其他人的斷點(diǎn)。第二所有設(shè)置斷點(diǎn)、單步跟蹤、變量查看、調(diào)用堆棧等單體軟件調(diào)試的便利性CloudDebugger都支持。
除此之外,用戶在調(diào)測過程中需要不斷修改代碼。CloudDebugger支持代碼熱替換功能,每次修改的增量代碼,CloudDebugger可以動態(tài)的、無宕機(jī)的一鍵式更新到遠(yuǎn)端微服務(wù)實(shí)例。
CloudDebugger三大核心技術(shù)
第一:獨(dú)立的調(diào)試適配服務(wù),用CloudDebugger調(diào)試一個遠(yuǎn)端微服務(wù)的同時,本地的Debugger可以調(diào)試一個其它的程序,比如客戶端GUI程序。
第二:智能調(diào)試消息路由可以確保多用戶的多IDE實(shí)例和多個微服務(wù)實(shí)例之間調(diào)試消息的可靠和一致性傳輸。
第三:獨(dú)創(chuàng)的基于命名管道的批量消息傳輸?shù)臋C(jī)制,可以確保在租戶端的Agent可以跟微服務(wù)實(shí)例之間高性能、高吞吐的消息傳輸。
正因?yàn)檫@三點(diǎn),CloudDebugger可以重塑微服務(wù)的調(diào)測生產(chǎn)力。
華為持續(xù)投入基礎(chǔ)軟件技術(shù)研究,華為云CloudIDE服務(wù)旨在“做最好用的云端IDE服務(wù)”,為云原生開發(fā)者重塑開發(fā)生產(chǎn)力,幫助企業(yè)數(shù)字化轉(zhuǎn)型和落地華為云云原生2.0,真正實(shí)現(xiàn)生于云、長于云、立而不破!
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )