摘要:在华为开发者大会(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,真正实现生于云、长于云、立而不破!
本文分享自华为云社区《下一代云原生开发工具技术揭秘》,原文作者:灰灰哒。