登录
注册
首页文章页

ChatGPT 爆火之后,企业级云端开发环境如何书写未来?

avatar汪晟杰
2023-03-21

本文作者:汪晟杰,腾讯云 Cloud Studio 产品总监

2022 年,Gitpod 推出云端开发环境白皮书(Cloud Development Environment),面向 GitHub 的云端开发环境 Codespaces 正式商业化,同时,面向前端开发的 CodeSandbox 产品也进行了升级,面向 Web Container 技术的 StackBlitz 实现了云端容器化 Open API 的调用等等,越来越多的国外厂商看中了云端开发这个赛道。近年来,许多企业都积极推进生态建设,并通过 DevOps 软件研发规范提效。然而企业用户也慢慢发现存在的问题,即如何保证研发流程在 ISV、外包进场后其企业代码资产不落地,安全水印,代码带不走诉求等等,同时又能延续企业研发规范流程。因此,企业级安全的云端开发环境便成为了解决方案的工具。

本文将从企业级云端开发环境下的产品形态入手,剖析 ISV 开发团队如何严格推行安全的云端开发技术方案,探讨虚拟桌面开发与本地桌面开发之间的差异化商业价值和发展契机,展望中国特色的企业云端开发环境和云端 IDE 的未来,并指引下一代 IDE 在技术、产品和生态构建方面的投入方向

企业级云端开发环境的价值

Gartner 在 2022 某一报告中指出,整年全球云收入超 5000 亿美元,同比增长 21%,大量企业上云、用云速度加快,并普遍期待 2023 年收益有明显增长。

这几年企业上云、应用上云正为企业的数字化发展注入新动力,降低创新成本的同时提升开发交付效率。在国内金融等领域,通过部署私有云可使组织更加方便地自定义资源,加上芯片等行业受制于国外技术,行业对于国产化信创环境有着更强的诉求。

云上开发是最近比较流行的一个概念。随着企业基础建设云上化之后,很多企业由最初的本地开发、部署在自有数据中心的模式,逐步转变为开始尝试利用云上快捷弹性的资源能力,进行云上开发到测试的开发模式。这里的云,不仅仅是私有云,更多的还是公有云上的一种新模式

不同于桌面本地拉取开发,企业级云端开发环境的使用,价值优势有如下几点:

容器化开发环节,开发成本大幅降低

2022 年,在配合「降本增效」的大背景下,我们退了一大部分闲置独占的物理机,转换成容器化开发。通过仓库、CODING DevOps 的研发流程规范、云端开发环境代码化的定义,使得开发人员无需关心资源,就能快速启动开发阶段所需要的开发环境。

我们研发流程是这样的:开发人员在 CODING 需求管理模块里,找到开发任务,变更状态为开发中。通过触发器自动创建分支,并自动配置预热的云端开发环境,秒级克隆;当一键拉起环境之后,分配给开发者稳定可靠的 Remote SSH,并允许开发者启动本地 IDE/VSCode 连接到该环境中,同时也可以基于浏览器进行开发、评审、协同排查问题;开发代码过程中,可以随时联调整个开发集群的服务,发布到专属开发团队的共享集群进行验证调试,当完成开发后进行代码评审,通过后合并到主干分支,然后交给 CODING DevOps 的后续阶段。这么一套下来,2022 年我们节省了 30%-50% 的物理机成本预算,还节省了本地机的采购资源、减少克隆上传及本地准备环境的时间

容器化开发的隔离性特性,可以保证开发者打开多个独立的云端开发环境,并不会互相干扰。譬如,开发人员可以一边开发基于新语言版本的新业务,一边修复线上古董级语言版本下业务安全漏洞的工单。

云端容器化开发环境,也正在不断为企业、云厂商赋能计算算力,并提供 PaaS 接入。我们在 CODING DevOps、腾讯云 Serverless 云函数、面呗、云社区实验室等产品里植入了随处可编码运行的环境,降低研发投入,为这类产品打造了企业级云端开发服务。

云端开发环境,团队开发更一致

云端开发环境的另一大优势——开发环境可标准化、代码化、版本化

标准化的开发环境,可以有效保证不同团队开发者之间的基础资源、环境开发、中间件、甚至是一些 mock 数据,具有一致性,有效控制团队开发的讨论和评审都在一个环境中,避免环境不一致导致的无效沟通。

代码化的开发环境,相当于代码化声明云端环境,需要底层哪些镜像资源、启动哪些中间件、使用哪些云上资源等等。Cloud Studio 产品推出了 devfile 开发环境的定义结构,允许企业用户代码化 workspace.yaml,并在每次启动云端环境时自动加载定义信息,譬如,开发所需的插件、前后执行命令、销毁阶段的命令、配置下发、依赖下发等。

企业级开发规范严控,云上代码不落地

曾经国内外的企业开发规范和严控标准是有很大差异的,但这几年,更多国内企业有了「严控」的企业开发规范的诉求和意识。他们期望通过云端开发获取开发的弹性资源之外,还能针对云上代码不落地的场景,进一步设置企业内的严控研发规范。譬如,企业根据自身研发规范及人员开发时间段,为每个研发工程师申请资源的开发「席位」并分配最合适的开发资源。

还有些企业有 ISV 场景的开发诉求。他们会招募生态伙伴或者是外包伙伴进入企业内的 DevOps,但他们比较担心开发资产外泄产生的风险,且成员难以管控引发安全事故。我们为此类场景设计了「ISV 云端开发环境」与企业内的研发流程的结合方案,示意图如下:

预览

客户选择了 CODING DevOps 作为研发规范和管理平台,并部署在内网,外部成员无法访问。Cloud Studio 作为云端开发环境,部署在中间层,并通过反向代理实现外网可以访问的跳板。通过 Cloud Studio 团队管理能力,由内部管理员分配外部客户的账号、CODING 仓库的 token 权限等,并存储在 Cloud Studio 的成员映射表中。当供应商用户访问外部 Cloud Studio 进入开发,即可由 Cloud Studio 内置插件代理获取代码,推送代码,触发流水线。

同时开启 Cloud Studio 推出代码不落地的方案,激活数字水印、防下载、防拷贝的功能模块后,企业就可以放心地监管回收云上资源,合作伙伴也可以按企业内部研发流程进行管理

与虚拟桌面下开发相比,云端开发环境更具优势

我们收到过此类需求,如采购虚拟桌面,让开发者进入虚拟桌面进行开发,并在当日销毁访问权限以保证强管控,以降低采购开发机的一些设备。但虚拟桌面,在开发应用的视角上,其实是引入了更多问题:

  • 虚拟桌面依然是独占资源,资源消耗大,采购成本高。
  • 虚拟桌面网络成本大,网络不稳定环境下容易卡帧。
  • 不够最小范围内可控原则。虚拟桌面权限过大,企业内网权限复杂,身份管控难。

针对这些问题,并不是说虚拟桌面不能解决,而是云端开发环境可以作为更轻量级的解决问题的思路,给到企业做选择

云端开发环境有如下优势:

  • 更细粒度可控,让研发只专注在写代码上,而并非要用到整个桌面能力。
  • 开发过程发现问题,可以快速邀请团队成员协同排查。
  • 云上开发容器成本大大小于虚拟桌面独占。容器随时开发随时回收休眠。通过挂在 NFS 等网络磁盘,还可以实现全数据持久化。

总结一下,就是下面这张图的对比:

预览

云上协同开发、协同排查的新工作模式

开发经常抱怨,“我这个问题没有办法解决,需要找其他同事进行联合排查”;“在我本机没有办法复现你的问题”;“我想要和你进行前后端联调,但环境网络不在一块”等等。云的优势极大地解决了这类痛点,价值显而易见:

  • 在云时代里,代码在云端,开发空间在云端,构建在云端,那就比传统开发模式更容易地在云上产生工作协同、与不同角色的人进行协同。正如 Figma 用协作来颠覆设计领域,Cloud Studio Metawork 也正在积极推进开发协作的新理念,重塑新的应用开发方式
  • 允许团队成员进入彼此的开发空间,这样就无需自己准备相同环境,避免排查问题但环境不同无法复现。
  • 为团队测试人员配置隔离的测试环境,不同版本都可以构建在此且隔离。一旦测试人员发现缺陷,开发人员即可进入该环境,进行问题排查,无需再次搭建环境来复现操作,大大提高了效率。
  • 需要与更多角色的人发生协同,譬如我们经常需要做前后端联调。我们可以实现在一个环境内,通过流量染色等技术方案,满足不同团队成员角色对于不同版本的微服务的调试。

云端开发环境的标准

企业级云端开发环境,至少具备三大标准关键词:

1. DevOps 化

它应开始于 DevOps 流程中的需求(任务)的认领,然后创建一个分支,开发完成,测试没问题,提交代码,最终结束于该任务的开发状态。

但不难发现,很多企业开发者依然会通过代码仓库克隆到本地,开发完了再从本地提交。由于越来越多的项目复杂且庞大,下个阶段的 DevOps 标准可以是结合云端开发环境,旨在让整个研发流程更敏捷,更快交付,让云端开发环境成为新 DevOps 流程中在「开发阶段」的加速剂。

预览

2. 容器短暂性环境

不受污染的开发环境,配置主流语言镜像或者是企业自建镜像,拉起使用用完即可回收资源。

3. 资源弹性

云端开发环境并非指 Web IDE,我们更推崇你用本地 IDE 去连接云端开发环境,这样可以享受到云的弹性资源的优势。

面向云原生开发的云端环境

越来越多企业应用架构从传统单体应用转变为微服务架构,开发复杂度也随之增加。譬如,应用架构下有巨多的微服务,怎么一键把服务跑起来;又怎么进行调试能把服务都运行起来;当测试同学发现问题,怎么进行环境复现 BUG 等等问题和痛点。

于是我们有了云原生开发的“云端开发+调试环境”的概念雏形

在传统流程里,由于没有一个开发环境,开发同学在开发之后不得不先提交,通过流水线发布到测试环境,通过测试环境的地址进行测试联调。企业有资源的话,往往会分配几个测试环境,资源不够的话,只能一个人发布到测试 1 的环境后,另一个人必须等待直到前一个回收不用。有些企业还通过分时间段来控制开发什么时候提交发布到测试环境。显而易见,这里非常低效。

而面向云原生开发的云端环境,它拥有如下特点:

  • 专属的云上开发联调环境。它降低了代码克隆、端云联调的成本。
  • 通过云端开发,云端编译云端调试,让复杂的云原生架构视作本地开发,让云端开发环境与云原生开发有了更多的可能。

以团队内部开发云原生应用自举为例,在新流程中,开发人员在「待开发」需求池中选择了一个开发任务后,我们创建并拉取专属的云端开发环境实例,同时分配给 Kubernetes 开发集群中对相应资源实施应用部署的权限。

预览

简单地讲,如图上所示,不同的开发同学可以各自开发自己的服务,互不干扰;由于同个命名空间中 Kubernetes 集群的各 Pod 网络已打通,他们之间可以实施断点联调。

该流程在微服务调试场景能促使开发者左移联调时机。每个微服务可以快速启动对应的云端开发环境,通过流量切换方案,快速预览开发效果,从而实现资源服务化。开发集群还提供自动休眠等措施,进一步降低成本提高效率。

云上开发,更多解决方案,价值无限

至于怎么合作成解决方案,我们跟很多企业深度聊过。总结归类后,整理出几个具有企业级云端开发环境高价值的解决方案:

移动开发场景

这类开发场景,往往伴随高性能开发机,大仓的移动端安卓开发。而本地电脑开发取决于开发机性能、磁盘空间、网络传输等限制。企业开发更加需要云上开发和编译环境,即把云上开发代码通过预热和增量同步,快速进入开发环境,并且直接在云端开发环境或者是统一分配的编译环境进行运行和联调,确认无误便可提交代码,从而完成了开发阶段的工作。

至于苹果机开发,由于目前受限于苹果镜像,还不支持容器化,但可以有想象空间,虚拟机或者是未来有一天容器化之后,就可以再也不用买 mac 机作为开发机了。用户只需要打开 mac 环境的云端开发环境即可开发部署。

预览

再来谈谈小程序生态。小程序是使用基于 Node.js 的框架进行开发。在云端开发环境,特别是浏览器里的云端开发环境,国外已有成熟的 web container 技术,在云端开发中可以做到一定程度的隔离运行。uni-app、taro 等也是基于 vue 框架来做的定制,所以这类应用更容易跑在云端开发环境,同时预先加载完 npm 依赖包等,甚至是浏览器中都可以快速运行预览效果,发布。

教育教学场景

这类场景是云端开发的衍生用户群,但其特点是,与云上开发的理念吻合,即代码云端开发、云端容器化运行、沙箱环境。

这类场景还是可以结合腾讯会议进一步发生协作,更容易连接老师和学生的协同代码授课、阅卷。老师可以制作教学中所需的云端开发环境和代码,留给学生去完成。学生可以发布毕业作品、课后练习,通过仓库提交版本化管理,老师可以进行代码预览,效果预览,甚至可以代码评判。这么一来一去,形成教与练的最佳教学互动场景

预览

企业面试场景

高端人才不仅面试算法题,更需要面试一些工程能力。Cloud Studio 和腾讯面呗深度合作,推出开发能力的在线面试代码模块,特别适合并解决一些企业的招人难的问题。譬如用 Cloud Studio 云端开发环境制作好面试题库,然后通过腾讯会议预约并启动面试链接。于是求职者、面试官共同进入到同一个云端开发环境中,基于 Metawork 的多光标显示、滚轮跟随、代码跟随、终端跟随的能力,加强了面试中的沟通,真实考察面试者的实战技能。在会后基于工作空间持久化到云端存储,还可以进行人才复盘。

预览

随着更多中国企业用户认知到云端开发环境的优势和场景,结合云资源更广的渗透,后面还会有更多有价值的解决方案和场景诞生。

AI 赋能云端开发环境,未来可期

2022 年 Github copilot 重磅上线,加上 Github 海量的训练模型,在开发的圈子里,其热度一直不减。与此同时, OpenAI 不断升级 GPT 模型,从 GPT2.5 到 GPT4,让 ChatGPT 成为科技圈的宠儿。

在官方演示中,GPT4 可以识别手绘网页草图,并仅用十秒钟左右,就可根据草图写出网站代码。这一切赋予了我们极大的想象空间,是不是有一天,AI 可以根据行业术语、企业研发规范、需求描述,自动生成一个云端开发环境,并且自动生成好项目代码,生成自动测试脚本,接入 DevOps 研发流程,根据你开发习惯开启配置,并且自动运行起来。而你做的只是进入 AI 的云端开发环境,微调后直接提交代码。

在不久的将来,也许 AI 会颠覆 IDE,但无论经历怎样的变革,其开发方式一定是极简的。腾讯云 Cloud Studio 团队坚持与时俱进,推进 AI 和云端开发环境的融合,在产品化、企业服务化上,推动国内企业降低开发成本,让开发者「云上开发 化繁为简」而不断努力。

订阅

CODING 官方公众号

随时获取 CODING 最新动态

code

现在开始,

在 CODING 体验高效的研发管理方式

免费使用