《企业级云端开发环境为国内企业带来的契机与未来》
发布时间:
2023-05-29
访问量:
0
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,并允许开发者启动本地 IDEA/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 也正在积极推进开发协作的新理念,重塑新的应用开发方式。
- 允许团队成员进入彼此的开发空间,这样就无需自己准备相同环境,避免排查问题但环境不同无法复现。
- 为团队测试人员配置隔离的测试环境,不同版本都可以构建在此且隔离。一旦测试人员发现缺陷,开发人员即可进入该环境,进行问题排查,无需再次搭建环境来复现操作,大大提高了效率。
- 需要与更多角色的人发生协同,譬如我们经常需要做前后端联调。我们可以实现在一个环境内,通过流量染色等技术方案,满足不同团队成员角色对于不同版本的微服务的调试。
云端开发环境的标准
企业级云端开发环境,至少具备三大标准关键词:
|DevOps 化
它应开始于 DevOps 流程中的需求(任务)的认领,然后创建一个分支,开发完成,测试没问题,提交代码,最终结束于该任务的开发状态。
但不难发现,很多企业开发者依然会通过代码仓库克隆到本地,开发完了再从本地提交。由于越来越多的项目复杂且庞大,下个阶段的 DevOps 标准可以是结合云端开发环境,旨在让整个研发流程更敏捷,更快交付,让云端开发环境成为新 DevOps 流程中在「开发阶段」的加速剂。