你的開發好幫手:下一代雲原生開發工具技術

funnyok發表於2021-09-11
摘要:在華為開發者大會(Cloud)上,華為雲釋出了基於華為雲CloudIDE的智慧化編碼工具和雲原生應用調測工具

在華為開發者大會(Cloud)上,華為雲釋出了基於華為雲CloudIDE的智慧化編碼工具和雲原生應用調測工具。華為雲開發工具和效率首席專家、華為開發工具技術專委會主任王亞偉在主題演講中介紹瞭如何基於智慧化程式碼補全技術(SmartAssist)和微服務叢集調測技術(CloudDebugger)重塑編碼和微服務調測生產力。

你的開發好幫手:下一代雲原生開發工具技術

智慧AI程式碼補全—SmartAssist

絕大多數的開發者還是用IDE寫程式碼,那麼就一定用到程式碼補全功能,它是IDE最核心的技術之一。程式碼補全技術經歷了很長時間的發展,從最開始的IDE的基礎補全,其是基於IDE對程式語言語法和語義理解來實現的。隨著AI的發展,很多人在探索如何藉助AI技術來提升程式碼補全的效果這類方案大多是基於公開的程式碼語料庫訓練一個模型,當開發者進行編碼的時候,這個模型主要做的事是對補全位置的程式碼上下文的特徵進行相似度匹配,然後給出一個補全結果列表。這類方案的主要共性問題有:多符號補全的準確性不高;很多時候補全結果需要人工干預和二次加工;有時對於補全結果並不自信,體現在給開發者過多的推薦結果讓其選擇。

然後,王亞偉介紹了SmartAssist,它結合了深度程式碼分析和深度學習模型,即對開發者的原生程式碼進行深度分析,構成一個本地的程式碼模型。與此同時結合線下訓練的多場景的深度學習模型,兩者搭配,最後幫助開發者進行程式碼補全。SmartAssist理解對於當前補全位置的上下文中所有符合語法規則的結果,同時對這些結果進到我們的多場景模型進行決策和排序。因此,SmartAssist對於補全結果的可解釋性和可調節性是非常好的。

SmartAssist三大核心技術

SmartAssist有三大核心技術:

  • 第一:基於記憶體壓縮的高效能程式碼的索引。
  • 第二:語法樹搜尋演算法。
  • 第三:多場景的深度學習模型。

當開發者在使用SmartAssist進行編碼輔助的時候,首先補全位置的程式碼上下文會進行一個詞相量化,然後語法樹搜尋演算法會基於原生程式碼索引窮舉所有可能的補全結果,然後對這些結果進行排序,過濾和填參處理,最後的候選項會結合上下文詞向量進入到深度學習模型進行決策。

ColudDebugger是如何重塑微服務的調測生產力?

聊完重塑編碼生產力之後,接下來王亞偉介紹了CloudDebugger如何重塑微服務叢集的調測生產力。

單體架構的軟體調測非常方便源自於其簡單的程式模型,開發者只需要透過IDE將偵錯程式連線到對應程式,即可進行除錯。在企業應用現代化改造這樣一個大背景下,單體架構的軟體非常不受待見,因為應用現代化改造的第一步就是單體架構的微服務改造。試想一下,原來一個只有3個介面的單體架構軟體,當解耦成10個微服務之後,就有30個介面。所以微服務調測第一大挑戰,就是這些海量的介面測試用例的開發工作量巨大。第二個挑戰,這些微服務之間必然有非常複雜的呼叫關係,而這些呼叫關係,需要依賴Mock,這樣會帶來調測的不完備。第三,多微服務之間程式併發調測,傳統除錯手段不可行。

接下來王亞偉用一個典型的多人多版本微服務調測的場景跟大家分享了CloudDebugger到底能給開發者帶來什麼價值?

你的開發好幫手:下一代雲原生開發工具技術

在這樣一個場景下,三個使用者,使用者1、使用者2和使用者3。使用者1透過CloudDebugger發起了除錯會話,他的呼叫鏈條是微服務A的1.0、B的1.0和D的1.0版本,使用者2的除錯會話的呼叫鏈是微服務A的2.0、B的2.0和D的2.0版本。使用者3是在進行微服務3.0的開發,他不關心其他微服務,所以呼叫鏈是微服務A、C和微服務D的3.0版本。在這樣一個複雜的場景之下,CloudDebugger能給開發者帶來什麼?第一,這三個使用者之間的除錯會話互相獨立,互不干擾;言下之意,使用者1的請求不會觸發其他人的斷點。第二所有設定斷點、單步跟蹤、變數檢視、呼叫堆疊等單體軟體除錯的便利性CloudDebugger都支援。

除此之外,使用者在調測過程中需要不斷修改程式碼。CloudDebugger支援程式碼熱替換功能,每次修改的增量程式碼,CloudDebugger可以動態的、無當機的一鍵式更新到遠端微服務例項。

你的開發好幫手:下一代雲原生開發工具技術

CloudDebugger三大核心技術

CloudDebugger有三大核心技術,

第一:獨立的除錯適配服務,用CloudDebugger除錯一個遠端微服務的同時,本地的Debugger可以除錯一個其它的程式,比如客戶端GUI程式。

第二:智慧除錯訊息路由可以確保多使用者的多IDE例項和多個微服務例項之間除錯訊息的可靠和一致性傳輸。

第三:獨創的基於命名管道的批次訊息傳輸的機制,可以確保在租戶端的Agent可以跟微服務例項之間高效能、高吞吐的訊息傳輸。

正因為這三點,CloudDebugger可以重塑微服務的調測生產力。

華為持續投入基礎軟體技術研究,華為雲CloudIDE服務旨在“做最好用的雲端IDE服務”,為雲原生開發者重塑開發生產力,幫助企業數字化轉型和落地華為云云原生2.0,真正實現生於雲、長於雲、立而不破!

戳我

 本文分享自華為雲社群《》,原文作者:灰灰噠。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3137/viewspace-2796092/,如需轉載,請註明出處,否則將追究法律責任。

相關文章