对于企业来说,效率就是一切。开发效率的工程化建设已经开始被各大企业提到技术管理日程中。而且现阶段,无论是框架也好、模板也好,目的都是在为提升代码开发效率而努力。随着云计算的深入,端 + 云的开发模式以及完全云端化的开发模式都先后上线,这些无疑都是在对传统 IDE 开发模式的挑战。云端 IDE,会是未来的趋势吗?
万物上云,可以说已经是不可逆的大趋势。对于企业来说,只要可以提升业务交易额、降低成本、提升收益,业务是放在本地还是云端都无所谓。但是在当前快节奏的背景下,效率就是企业的一切,企业更加关注如何更加快速、高效、敏捷地提升企业交付效率与降低运维成本,这也是为什么现如今企业研发效率的工程化建设已经被越来越多的企业提上了日程。
业务上云后,可以显著提升企业的交付效率并降低运维成本,这是已经被实践所证明过的。因此当企业从原来的技术架构中切换或建设不同的云计算服务时,都会对工程效率产生影响,而受这部分影响的最直接人群就是相关业务线下的一线开发者。理念的变化与架构的调整,都使得这群开发者感觉越来越“不舒服”。
近年来,DevOps、敏捷交付等旨在提升业务研发效率的体系不断被更多人所接纳。但是理念很好,落地在实践中却往往是另一回事。对此,InfoQ 采访了华为公司主任工程师、持续交付项目总架构师赵彦,从华为的一系列实践举措中,为大家总结如何实现研发体系的高效化。
赵彦认为,先进的理念往往需要配套同等理念的工具来并行,这样才能更好地支撑 DevOps 或敏捷开发的理念落地。同时,因为现在是一个知识爆炸的时代,对于企业和个人来说都要求站在巨人的肩膀上不断进行快速创新。那么能否进行快速创新,实际上已经成为了决定企业生存的关键因素,因此敏捷交付也被越来越多的企业提上了内部体系改造的行动表上。并且在内部体系优化改造的过程中,随着业务竞争加剧和技术进步,越来越多的企业将研发能力定位为其核心竞争力之一,开发者作为研发能力的核心代表,其自然也成为了受“影响”的对象。
赵彦认为,企业业务上云已经成为必然的趋势。在这种趋势下,对于普通开发者来说,他们的研发方式包括工作习惯都在不经意间产生了很大的变化,总结起来有以下 4 点:
让我们先回顾一下 IDE 工具的历史,最早大家写代码的时候其实是很简单的文本编译器,先把文本写成代码文件再拿去构建或编译,然后再通过输出日志来查看结果是否正确。
但是这种方式太过低效,所以就把调试、运行、引入第三方功能等各种各样的能力集成到编译器中去,就形成了各种各样的代码编译器。就像最常见的 Visual Studio Code 这种经过多年发展的大型 IDE 环境,其功能已经非常完整,并已经形成了非常成熟的自有开发生态。
但生态的成熟往往会带来一个问题,就是对于开发者来说这个环境太重了,且非常依赖于本地的资源系统。众所周知本地 IDE 在运行时会占用大量的系统资源,对于机器的配置要求较高,且对于移动化办公非常不友好。
在当前这种要求效率的开发环境下,尤其是在强调“团队效益”至上的企业文化中,往往需要将个别优秀程序员在业务中的成功实践当做案例来分享给团队。但是在这种相对独立的开发环境,个人的成功很难复制到整个团队中,很难做到研发分享流程的标准化。并且由于每个人都在独立的环境下进行代码编写,每个人的环境配置都不尽相同,很有可能导致两边运行的效果出现较大差异。这也是为什么很多程序员都会说:“不可能啊,我测试的时候好使啊!”
在全业务上云的当下,本地 IDE 环境在对接云端时往往出现连接缝隙,这是因为本地到云端会面临大量的如鉴权、网络稳定性等问题,所以在和云端应用或业务配合开发的时候,无法将本地 IDE 环境的效能与云端的优势发挥的最大化。
尽管“云正在吞噬世界”已经喊了很多年了,但开发者仍然是习惯于本地的 IDE 环境,这个多年来的习惯是很难改变的,作为华为云在云端开发环境的全新探索, CloudIDE 将如何改变用户的开发习惯呢?
赵彦认为,想改变这种习惯就要先接纳这种习惯。之所以 CloudIDE “长成”现在这个样子,是经过大量的市场调研后发现 Visual Studio Code 这款工具是最受开发者欢迎的开发工具,所以华为云 CloudIDE 在使用体验、操作体验方面都选择向 Visual Studio Code 靠拢。
这种好处就是用户从现有的本地 IDE 环境迁移到云端 CloudIDE 后,不会因为环境的改变而造成学习成本的上升;此外 CloudIDE 内置了标准化的技术栈,比如说开发 Java,半分钟之内就能得到一个 Java 的开发环境,且里面已经内置了 Java 所需的 SDK;最后用户在创建环境的时候,基于 CodeHub 的代码模板所提供给开发者样例工程,可以让开发者的开发不会从 0 开始,而是通过现有的知识积累,从 80% 开始自己的创新。
针对本地 IDE 来说,提供移动、跨设备式接入,也就是说不管用的是 PC、笔记本还是 pad,只要有输入输出设备,只要能够连接网络,都可以接入进来进行开发。
这就是云端 CloudIDE 目前所做的一些努力。
但是这都是可以通过技术发展去弥补的。
相较于本地 IDE 非常丰富的研发生态和极其优质的开发体验,云端 IDE 还是存在一些不足的,主要体现在开发体验层面,主要有以下几点因素:
所以说,目前用户不想迁移到 CloudIDE 上,主要是因为体验方面的原因。但是从长期来看,这种体验上的差距会通过不断的技术创新以及未来的全新的网络接入方式所慢慢的弥补。
移动创新场景,CloudIDE 只是华为云 DevCloud 实现云端全流程开发中的一部分,CloudIDE 通过与 CodeHub 代码托管服务相结合,在通过 CloudIDE 服务创建共创空间时,可以直接引入 CodeHub 中的代码模板来直接创建实例,从而让开发者能够在极短的时间内形成样例代码,加快了开发者尝试新功能的效率;此外开发者应该都会感同身受,做开发也是需要灵感的,有时候这种灵感稍纵即逝,因此就需要实时的移动化办公来支持这种需求。通过 CloudIDE 即可通过一台轻量化的办公笔记本,甚至一部可以联网的智能手机就可以实现在云端的代码作业(当然,移动端的输入方式等目前暂不做讨论。),真正实现了移动化办公,不再局限在办公区域。
轻量化开发场景,这一块场景主要针对于微服务和云原生领域,因为微服务本身的代码量较小所以不会出现重载的情况,同时 CloudIDE 提供了多种内置技术栈,正好适应了微服务开发这种强调服务独立交付、独立运营的特点,所以用户在 CloudIDE 上开发微服务之后,可以快速的将应用推送到云端代码仓库,继续进行自己的微服务交付,保证 DevOps 的交付体验;此外通过 CloudIDE 服务配合 DevCloud 的其它服务工具链,可以让用户在开发完服务代码之后直接推送到云端仓库并拉起业务流水线,实现 CI、CD 的持续集成与敏捷交付能力。
教育培训场景,因为 CloudIDE 是活跃在云端的一款 IDE 工具,可以有效支持大规模并发和环境标准化能力,在大规模学生上课、考试的场景下可以通过 CloudIDE 来快速创建课堂或考场。并且在使用完毕后可以实现资源的快速释放,有效降低教育培训的成本,提高教育的效率和质量。
速度、成本和可用性一直都是开发者最关注的三个因素,围绕这三个因素,也是未来云端 IDE 的重点发力方向。
古人说过一句话,工欲善其事必先利其器,想要落地先进的理念必须要有相配套的工具。从研发效率提升的角度来看,IDE 环境的变更只是其中的一个环节,从工程效率的提升来说,则是开发者从内心到接受工具变化的整个过程。
具体来说,赵彦老师总结了以下 3 点:
云计算正在吞噬万物,这并不是一句空话。在 2019 年,传统企业纷纷上云,互联网企业纷纷在云原生领域开始落地,万物上云不再是一个愿望,而是一个正在加速实现的现实。从业务上云到流程上云到管理上云,再到如今将最根本的代码编写流程搬到云端,业务全流程上云已经是不可逆的趋势,也将是未来发展主流。华为云 CloudIDE 将在这条路上积极探索,开拓云计算时代下的高效研发新方向。