@所有開發者,重塑雲開發生產力的黑科技來了!

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"近日,在華爲開發者大會(Cloud)上,華爲雲發佈了基於華爲雲 CloudIDE 的智能化編碼工具和雲原生應用調測工具。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"video","data":{"id":"369348","name":"華爲雲CloudIDE視頻.mp4","poster":""}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"華爲雲開發工具和效率首席專家、華爲開發工具技術專委會主任王亞偉在“下一代雲原生開發工具”主題演講中,介紹瞭如何基於智能化代碼補全技術(SmartAssist)和微服務集羣調測技術(CloudDebugger)重塑編碼和微服務調測生產力。王亞偉表示:“在企業數字化轉型的大背景下,智能化開發技術將進一步催熟雲原生技術和產業,成爲企業應用現代化改造的助推器。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/8b\/8b15ef6535ae16c06099319961590c7a.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"華爲雲開發工具和效率首席專家、華爲開發工具技術專委會主任王亞偉介紹 CloudIDE"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"智能 AI 代碼補全—SmartAssist"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"代碼補全是軟件開發工具最核心的能力之一,它能夠在開發者輸入幾個字符的情況下,提示補全整個符號如方法調用、類型名、變量名、類字段、關鍵字等,在一些常見上下文下,代碼補全甚至可以補全整行代碼。然而,IDE 自帶的代碼補全主要基於名字匹配,類型匹配和語法分析,補全能力比較有限。隨着近幾年 AI 技術的廣泛應用,基於 AI 的智能代碼補全技術也得到了長足的發展,出現一批技術領先應用規模巨大的公司。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/7e\/7e1035a17e62f7f3be7eae05378f085b.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"王亞偉團隊從兩年多前開始研究 AI 智能代碼補全技術,他們認爲未來 DevOps 工具的產業機會之一就是開發工具和全流程的智能化,同時,在企業數字化轉型的大背景下,智能化開發技術將進一步催熟雲原生技術和產業,成爲企業應用現代化改造的助推器。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"王亞偉介紹道,起初考慮到代碼補全與自然語言處理有一定的相似性,而 RNN 在 NLP 領域應用廣泛,因此他們也構建了基於 RNN 的代碼模型和解決方案。該服務上線之後雖然在華爲一些產品線規模應用起來,但用戶的反饋一般,主要是補全的準確性和有效性不好,推薦結果經常有語法錯誤或語法正確但不能通過編譯,讓用戶體驗大打折扣。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"代碼補全跟 NLP 問題相似但卻完全不同,自然語言是序列化的語言,所以語言模型可以有效的基於前面的單詞預測下一個詞(概率);高級編程語言,雖然跟自然語言接近,但其需要遵循固定的語法結構,並且在看似相似的代碼片段之中蘊含着複雜的控制和數據流,所以用純粹 NLP 方法來解決代碼補全的問題,效果必然不好。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"針對之前用戶的反饋,王亞偉決定探索一種新的架構和方案。該方案將智能代碼補全問題當做文本分類問題而非文本序列預測問題 – 文本分類問題即根據開發者“意圖”對文本進行分類,這裏的“意圖”是通過代碼上下文環境體現出來的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"經過兩年的研發,王亞偉團隊開發了基於深度代碼分析和多種特定場景深度學習模型的智能補全技術 - SmartAssist。SmartAssist 基本滿足項目初期的四大目標:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1)較高的多符號補全準確率;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2)複雜上下文環境的非明顯結果推薦如生僻的第三方 API;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3)對過期、棄用甚至危險的 API 和代碼模式進行過濾的能力;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"4)推薦結果語法正確並且確定能通過編譯檢查。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當前 SmartAssist 主要面向 Java 語言提供智能補全,王亞偉團隊正在開發面向 JavaScript 語言的版本,後續會支持所有主流的編程語言和框架,讓開發者們在華爲雲 CloudIDE 上開發代碼變得更高效,開發出的代碼更穩定更健壯。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"CloudDebugger 如何重塑微服務的調測生產力?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"單體架構的軟件調測很方便源自於其簡單的進程模型,開發者只需要通過 IDE 將調試器連接到對應進程,即可進行調試。微服務開發中的調測就沒有這麼方便,需要開發者通過單元測試對接口進行驗證,等所有開發者完成本地編碼工作之後再統一部署到測試環境中進行聯調。在這種模式下,開發者需要花費大量的時間精力編寫單元測試用例,而這些測試需要依賴打樁(Mock),測試結果不完備造成統一上線聯調時問題大規模集中爆發,不斷返工造成巨大資源浪費。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"王亞偉團隊深度參與華爲雲服務的開發和運維工作,深知微服務調測之痛。如何解決微服務調測的痛點,從而重塑微服務集羣調測生產力就是 CloudDebugger 產品 idea 的源頭。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在 HDC.Cloud 主題演講中,王亞偉通過一個典型的多人多版本微服務調測的場景,跟大家分享了 CloudDebugger 到底能給開發者帶來什麼價值?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/51\/51776ca6c31a522a5a563fd36d8e4b42.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在這樣多人多版本微服務集羣調測的場景下有三個用戶:用戶 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 的請求只會觸發他在自己 IDE 中設置斷點而不會觸發其他人設置的斷點,哪怕他們設在同一個源文件的同一行。第二所用戶可以像調試單體應用一樣調試微服務集羣(通過 CloudDebugger 可以定義他們想調試的微服務組及特定版本),包括設置斷點、單步跟蹤、變量查看、調用堆棧等。CloudDebugger 還支持服務調用拓撲圖,它可以動態展示、實時更新微服務之間的調用關係,讓開發者清楚查看當前調測環境的上下文。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/a9\/a9093bd83e2319e1d335d2d60f1b12fa.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"除此之外,用戶在微服務調測過程中需要不斷修改代碼,而傳統模式下,修改代碼意味着需要部署新的微服務版本,常見的流程是:提交 ->流水線拉取源碼 ->編譯 ->鏡像構建 -> 部署 -> 測試。頻繁的修改需要部署任務反覆執行,雖然該過程可以自動完成,但是每次調試修改均需要經歷該步驟,耗時比較長,效率很低。面對這個痛點,CloudDebugger 支持代碼熱替換功能(Code HotSwap),CloudDebugger 可以做到把每次用戶修改的增量代碼動態的、無宕機的、一鍵式更新到遠端微服務實例,整個過程用戶無感知。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/96\/9657f9be2a9da288986b74582d7501f2.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"王亞偉還介紹了 "},{"type":"text","marks":[{"type":"strong"}],"text":"CloudDebugger 的三大核心技術"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第一:獨立的調試適配服務,用 CloudDebugger 調試一個遠端微服務的同時,本地的 Debugger 可以調試一個其它的程序,比如客戶端 GUI 程序。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第二:智能調試消息路由可以確保多用戶的多 IDE 實例和多個微服務實例之間調試消息的可靠和一致性傳輸。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第三:獨創的基於命名管道的批量消息傳輸的機制,可以確保在租戶端的 Agent 可以跟微服務實例之間高性能、高吞吐的消息傳輸。正因爲這三點,CloudDebugger 可以"},{"type":"text","marks":[{"type":"strong"}],"text":"重塑微服務的調測生產力"},{"type":"text","text":"。華爲持續投入基礎軟件技術研究,華爲雲 CloudIDE 服務旨在“做最好用的雲端 IDE 服務”,爲雲原生開發者重塑開發生產力,幫助企業數字化轉型和落地華爲云云原生 2.0,真正實現生於雲、長於雲、立而不破。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"體驗華爲雲 CloudIDE 服務:https:\/\/www.huaweicloud.com\/product\/ide.html"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章