写点什么

你的开发好帮手:下一代云原生开发工具技术

发布于: 2021 年 04 月 28 日

​​摘要:在华为开发者大会(Cloud)上,华为云发布了基于华为云 CloudIDE 的智能化编码工具和云原生应用调测工具。


本文分享自华为云社区《下一代云原生开发工具技术揭秘》,原文作者:灰灰哒。

 

在华为开发者大会(Cloud)上,华为云发布了基于华为云 CloudIDE 的智能化编码工具和云原生应用调测工具。华为云开发工具和效率首席专家、华为开发工具技术专委会主任王亚伟在主题演讲中介绍了如何基于智能化代码补全技术(SmartAssist)和微服务集群调测技术(CloudDebugger)重塑编码和微服务调测生产力。



智能 AI 代码补全—SmartAssist


绝大多数的开发者还是用 IDE 写代码,那么就一定用到代码补全功能,它是 IDE 最核心的技术之一。代码补全技术经历了很长时间的发展,从最开始的 IDE 的基础补全,其是基于 IDE 对编程语言语法和语义理解来实现的。随着 AI 的发展,很多人在探索如何借助 AI 技术来提升代码补全的效果这类方案大多是基于公开的代码语料库训练一个模型,当开发者进行编码的时候,这个模型主要做的事是对补全位置的代码上下文的特征进行相似度匹配,然后给出一个补全结果列表。这类方案的主要共性问题有:多符号补全的准确性不高;很多时候补全结果需要人工干预和二次加工;有时对于补全结果并不自信,体现在给开发者过多的推荐结果让其选择。


然后,王亚伟介绍了 SmartAssist,它结合了深度代码分析和深度学习模型,即对开发者的本地代码进行深度分析,构成一个本地的代码模型。与此同时结合线下训练的多场景的深度学习模型,两者搭配,最后帮助开发者进行代码补全。SmartAssist 理解对于当前补全位置的上下文中所有符合语法规则的结果,同时对这些结果进到我们的多场景模型进行决策和排序。因此,SmartAssist 对于补全结果的可解释性和可调节性是非常好的。

SmartAssist 三大核心技术


SmartAssist 有三大核心技术:


l 第一:基于内存压缩的高性能代码的索引。

l 第二:语法树搜索算法。

l 第三:多场景的深度学习模型。


当开发者在使用 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,真正实现生于云、长于云、立而不破!


戳我体验CloudIDE


点击关注,第一时间了解华为云新鲜技术~

发布于: 2021 年 04 月 28 日阅读数: 36
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
你的开发好帮手:下一代云原生开发工具技术