阿里P10 关涛(观滔)邀你探讨新一代数据平台的架构迭代方向,戳此了解。 了解详情
写点什么

@所有开发者,重塑云开发生产力的黑科技来了!

2021 年 4 月 30 日

@所有开发者,重塑云开发生产力的黑科技来了!

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


00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.5x
    网页全屏
    全屏
    00:00


    华为云开发工具和效率首席专家、华为开发工具技术专委会主任王亚伟在“下一代云原生开发工具”主题演讲中,介绍了如何基于智能化代码补全技术(SmartAssist)和微服务集群调测技术(CloudDebugger)重塑编码和微服务调测生产力。王亚伟表示:“在企业数字化转型的大背景下,智能化开发技术将进一步催熟云原生技术和产业,成为企业应用现代化改造的助推器。”



    华为云开发工具和效率首席专家、华为开发工具技术专委会主任王亚伟介绍 CloudIDE

    智能 AI 代码补全—SmartAssist


    代码补全是软件开发工具最核心的能力之一,它能够在开发者输入几个字符的情况下,提示补全整个符号如方法调用、类型名、变量名、类字段、关键字等,在一些常见上下文下,代码补全甚至可以补全整行代码。然而,IDE 自带的代码补全主要基于名字匹配,类型匹配和语法分析,补全能力比较有限。随着近几年 AI 技术的广泛应用,基于 AI 的智能代码补全技术也得到了长足的发展,出现一批技术领先应用规模巨大的公司。



    王亚伟团队从两年多前开始研究 AI 智能代码补全技术,他们认为未来 DevOps 工具的产业机会之一就是开发工具和全流程的智能化,同时,在企业数字化转型的大背景下,智能化开发技术将进一步催熟云原生技术和产业,成为企业应用现代化改造的助推器。


    王亚伟介绍道,起初考虑到代码补全与自然语言处理有一定的相似性,而 RNN 在 NLP 领域应用广泛,因此他们也构建了基于 RNN 的代码模型和解决方案。该服务上线之后虽然在华为一些产品线规模应用起来,但用户的反馈一般,主要是补全的准确性和有效性不好,推荐结果经常有语法错误或语法正确但不能通过编译,让用户体验大打折扣。


    代码补全跟 NLP 问题相似但却完全不同,自然语言是序列化的语言,所以语言模型可以有效的基于前面的单词预测下一个词(概率);高级编程语言,虽然跟自然语言接近,但其需要遵循固定的语法结构,并且在看似相似的代码片段之中蕴含着复杂的控制和数据流,所以用纯粹 NLP 方法来解决代码补全的问题,效果必然不好。


    针对之前用户的反馈,王亚伟决定探索一种新的架构和方案。该方案将智能代码补全问题当做文本分类问题而非文本序列预测问题 – 文本分类问题即根据开发者“意图”对文本进行分类,这里的“意图”是通过代码上下文环境体现出来的。


    经过两年的研发,王亚伟团队开发了基于深度代码分析和多种特定场景深度学习模型的智能补全技术 - SmartAssist。SmartAssist 基本满足项目初期的四大目标:


    1)较高的多符号补全准确率;


    2)复杂上下文环境的非明显结果推荐如生僻的第三方 API;


    3)对过期、弃用甚至危险的 API 和代码模式进行过滤的能力;


    4)推荐结果语法正确并且确定能通过编译检查。


    当前 SmartAssist 主要面向 Java 语言提供智能补全,王亚伟团队正在开发面向 JavaScript 语言的版本,后续会支持所有主流的编程语言和框架,让开发者们在华为云 CloudIDE 上开发代码变得更高效,开发出的代码更稳定更健壮。

    CloudDebugger 如何重塑微服务的调测生产力?


    单体架构的软件调测很方便源自于其简单的进程模型,开发者只需要通过 IDE 将调试器连接到对应进程,即可进行调试。微服务开发中的调测就没有这么方便,需要开发者通过单元测试对接口进行验证,等所有开发者完成本地编码工作之后再统一部署到测试环境中进行联调。在这种模式下,开发者需要花费大量的时间精力编写单元测试用例,而这些测试需要依赖打桩(Mock),测试结果不完备造成统一上线联调时问题大规模集中爆发,不断返工造成巨大资源浪费。


    王亚伟团队深度参与华为云服务的开发和运维工作,深知微服务调测之痛。如何解决微服务调测的痛点,从而重塑微服务集群调测生产力就是 CloudDebugger 产品 idea 的源头。


    在 HDC.Cloud 主题演讲中,王亚伟通过一个典型的多人多版本微服务调测的场景,跟大家分享了 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 的请求只会触发他在自己 IDE 中设置断点而不会触发其他人设置的断点,哪怕他们设在同一个源文件的同一行。第二所用户可以像调试单体应用一样调试微服务集群(通过 CloudDebugger 可以定义他们想调试的微服务组及特定版本),包括设置断点、单步跟踪、变量查看、调用堆栈等。CloudDebugger 还支持服务调用拓扑图,它可以动态展示、实时更新微服务之间的调用关系,让开发者清楚查看当前调测环境的上下文。



    除此之外,用户在微服务调测过程中需要不断修改代码,而传统模式下,修改代码意味着需要部署新的微服务版本,常见的流程是:提交 ->流水线拉取源码 ->编译 ->镜像构建 -> 部署 -> 测试。频繁的修改需要部署任务反复执行,虽然该过程可以自动完成,但是每次调试修改均需要经历该步骤,耗时比较长,效率很低。面对这个痛点,CloudDebugger 支持代码热替换功能(Code HotSwap),CloudDebugger 可以做到把每次用户修改的增量代码动态的、无宕机的、一键式更新到远端微服务实例,整个过程用户无感知。



    王亚伟还介绍了 CloudDebugger 的三大核心技术


    第一:独立的调试适配服务,用 CloudDebugger 调试一个远端微服务的同时,本地的 Debugger 可以调试一个其它的程序,比如客户端 GUI 程序。


    第二:智能调试消息路由可以确保多用户的多 IDE 实例和多个微服务实例之间调试消息的可靠和一致性传输。


    第三:独创的基于命名管道的批量消息传输的机制,可以确保在租户端的 Agent 可以跟微服务实例之间高性能、高吞吐的消息传输。正因为这三点,CloudDebugger 可以重塑微服务的调测生产力。华为持续投入基础软件技术研究,华为云 CloudIDE 服务旨在“做最好用的云端 IDE 服务”,为云原生开发者重塑开发生产力,帮助企业数字化转型和落地华为云云原生 2.0,真正实现生于云、长于云、立而不破。


    体验华为云 CloudIDE 服务:https://www.huaweicloud.com/product/ide.html

    2021 年 4 月 30 日 12:21866

    评论

    发布
    暂无评论
    发现更多内容

    在npm发布自己的组件

    空城机

    JavaScript 前端 npm 4月日更 自定义组件

    MySql数据库列表数据分页查询、全文检索API零代码实现

    crudapi

    全文检索 API crud crudapi 列表查询

    短视频编辑:基于ExoPlayer可实时交互的播放器

    梅芳姑

    Hexo + Material + Github 搭建博客

    U+2647

    博客 4月日更

    情指勤融合实战平台开发解决方案,智慧公安警务平台建设

    WX13823153201

    【LeetCode】直方图的水量Java题解

    HQ数字卡

    算法 LeetCode 4月日更

    Rust从0到1-所有权-引用和借用

    rust 引用 所有权 借用

    Netty HashedWheelTimer 时间轮源码详解

    Yano

    Java 架构 Netty

    清明节特辑 |记忆存储、声音还原、性格模仿……AI可以让人类永生吗?

    华为云开发者社区

    AI 语音合成 清明节 对话机器人 VR/AR

    抖音快手,正在抢滩户外广告市场

    󠀛Ferry

    七日更 4月日更

    NAC公链主打应用而生的NA(Nirvana)公链有什么过人之处?

    区块链第一资讯

    自己搭建一个语音聊天室

    anyRTC开发者

    ios android 音视频 WebRTC RTC

    业务随行:用户的网络访问策略还能这么玩

    华为云开发者社区

    网络 通信 安全组 IP地址 业务随行

    ElasticSearch读写模型&数据复制模型

    yhh

    elasticsearch 数据复制模型

    搭建Gogs服务器

    尧二水丶

    git flow 4月日更

    2021年Android面经分享,赶紧收藏!

    欢喜学安卓

    android 程序员 面试 移动开发

    Kubernetes 稳定性保障手册 -- 可观测性专题

    阿里巴巴云原生

    Serverless 容器 云原生 k8s 存储

    uni-app对接金山文档在线预览服务

    薛定喵君

    Python OpenCV 之图像乘除与像素的逻辑运算,图像处理取经之旅第 17 天

    梦想橡皮擦

    Python OpenCV 4月日更

    实时数据仓库的发展、架构和趋势

    网易数帆

    数据仓库 实时计算 实时数仓 iceberg 批流一体

    定义边缘计算架构需考虑的三个方面

    浪潮云

    边缘计算

    IPFS矿机挖的币能交易吗?IPFS挖矿值得投资吗?

    投资矿机v:IPFS1234

    IPFS矿机挖的币能交易吗 IPFS挖矿值得投资吗

    飞桨与龙芯完成兼容性认证

    百度大脑

    飞桨

    百度智能云发布云智一体的AI开发全栈模式

    百度大脑

    百度智能云

    Python基础之:Python中的类

    程序那些事

    Python Python3 程序那些事

    2021年Android工作或更难找,原理+实战+视频+源码

    欢喜学安卓

    android 程序员 面试 移动开发

    如何实现微信8.0爆炸和烟花表情特效

    梅芳姑

    程序员面试指北:如何更高效的准备面试

    邴越

    Java 面试 求职 招聘

    OpenTelemetry 简析

    阿里巴巴云原生

    容器 开发者 云原生 k8s 监控

    CMS前世今生

    叫练

    CMS JVM 垃圾收集

    今天是个开心的日子

    return

    @所有开发者,重塑云开发生产力的黑科技来了!-InfoQ