前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >让开发人员all in IDE!工商银行沉浸式研发体系建设实践

让开发人员all in IDE!工商银行沉浸式研发体系建设实践

作者头像
深度学习与Python
发布2023-03-29 14:00:05
3280
发布2023-03-29 14:00:05
举报

作者 | 工行软开中心

前   言

什么是沉浸式研发?可能很多人都没听说过这个名词,我们不妨从一次数据调研的结果开始讲起。在不久之前的一次一线开发人员每日编码时长的数据调研中,我们惊讶地发现,每个编码人员一天中使用 IDE 的平均时长只有不到两小时,与我们的预期有较大的差距。因此我们对这些开发人员的一天投入时间分布展开了深入调研,调研发现身为编码人员,除了在 IDE 中编码,其他需要投入时间的工作包括:找软需、查历史资产、查接口文档、查表结构、执行测试案例、模拟器调试接口...... 这些工作似乎都是研发的必要环节,但零散的产品导致编码人员“来回奔波”于各个系统之间,减少了编码人员真正用于编写代码的时间。而沉浸式研发的目标就是让研发人员无需关注基础设施,而能够更专注于代码本身。

业界现状

随着云原生和 Kubernetes 的普及,应用架构在横向及纵向不断扩大和调整,微服务的数量变得越来越多,为保证研发质量,业界致力于提供微服务应用在开发、测试和生产阶段的一致性环境。现有 DevOps 流水线通过编译、打包、推送、部署等操作,降低了系统的运维成本,但是由于无法快速启动完整的开发环境、无法去除上下游的依赖、无法快速调试微服务等问题,导致开发阶段需要快速验证、快速反馈的诉求很难得到满足。2020 年腾讯 CODING 团队发布了自主研发的 Nocalhost,实现本地 IDE 和云端开发环境相互连接,无需运行 docker build 构建镜像和重新部署工作负载,开发者仅需在本地修改要开发的微服务代码并保存后,即可在云端开发环境中验证,可以实现本地开发代码实时生效和调试,有效缩短开发循环反馈。

为了降低开发人员的开发门槛,让开发人员更快、更准确地完成需求,业界以 IDE 为中心,通过集成 DevOps 研发辅助工具,打通需求、设计、研发、部署全流程,为开发人员提供一站式研发辅助生态。

工行金融科技研发体系痛点

业界不断探索如何提升“研发效能”的同时,工商银行金融科技也在积极尝试形成一套属于自己的高效研发体系,目前行内比较共性的研发痛点如下:

资产布局分散: 为了给开发人员赋能,行内积累了一系列标准资产、标准代码和标准工具,但是也引发了资产布局分散的问题,软需、应用信息、接口服务文档、表结构等资产均需要在不同系统获取,而应用资产则会出现在社区、共享盘、云文档甚至个人本地电脑、邮箱,各种资产无法形成合力给开发人员赋能,也导致开发人员在使用过程中需频繁切换和被打断,严重影响研发效能。

资产孤岛现象严重:各应用间的标准资产自建与隔离,造成标准资产重复建设、过时资产再次建设等资源浪费,且开发人员无统一、便利渠道检索和参考其他应用资源。打通应用、部门甚至基地间的资产孤岛,是推进资产标准化、提高资产复用率、推进低代码建设的必要一环。

研发自测困难:个人开发环境无专人维护,功能环境欠稳定且受部署时间限制,开发人员无法随时完成对代码的快速迭代,导致不少时间浪费在等待上,一套可定制的标准自测环境成为了开发人员可望不可及的梦想,也成为了提高研发质量的主要瓶颈之一。

研发断点严重:综合上述系统多、资产检索难、自测环境差等问题,研发人员需要在系统间来回切换与等待,基础设施的依赖度极高,导致投入实际编码的时间不足工作时长的 1/3。如何针对性降低日常研发断点、提高编码人员沉浸式研发时长,是提高产能的关键一环。

沉浸式研发构想与落地

对比业界实践,结合我行研发流程,我们从编码辅助、自测环境供给以及打通 DevOps 研发流程出发尝试建设一站式 IDE,避免开发人员不断被各种工具打断,实现“沉浸式”研发。

一、资产辅助一键触达

以开发人员研发 IDE 为触点,通过可扩展插件方式提供研发辅助资产快速检索、不同 IDE 间和系统间资产共享、资产一键引入、代码规范扫描等一系列能力,为研发人员提供统一、便利的交互入口,形成合力对开发人员赋能。

在资产检索功能上,为契合程序员操作习惯,以极简的界面为开发人员提供基于关键字、主题标签检索标准资产的功能;同时为提高检索效率,搜索引擎采用 Elasticsearch,IDE 内毫秒级获取相关资产,最大程度节约无效检索的时间。在标准资产共享上,为了做好资产管理,用中心级、基地级、部门级、应用级四个等级区分资产的适用范围,规范资产定级;用资产类型、资产所属大类、小类等标签区分资产适用场景,规范资产分类;由各级别资产审核人严格审核,确保资产质量。

二、研发流程一站贯通

打通研发工具和流水线,自测完成自动提交构建流水线进行质量守护,从而为开发人员提供详细设计、编码、单元测试、自测、部署五个研发阶段的沉浸式开发体验,无需频繁切换不同支撑系统,打断研发流程,有效提升 DevOps 研发运维一体化能力水平。

详细设计:通过打通与各个研发管理系统的壁垒,IDE 内一键查询开发设计阶段所需的服务 /API 接口文档,无需系统间来回切换。编码:通过代码补全、标准化代码模板等工具辅助,无需再去各个系统检索资产,提高研发效率。

单元测试:通过嵌入单元测试覆盖率检测、MOCK 等工具,IDE 内快速完成单元测试,提高代码质量守护能力。

自测:通过接口模拟测试、本地提交构建流水线预检、云测试环境创建工具嵌入,IDE 内完成自测,降低自测门槛,提高自测质量。

部署:通过 git 插件提交代码入库,入库后在通过 VCDS 接口触发流水线。提供代码的全流程视图,方便跟踪代码。

三、云端实时自测验证

1、环境搭建

实现为开发人员快速提供云原生自测子环境能力,以稳态环境为基础,提供环境快速复制能力,开发者可以低成本建立不同的子环境,编码完成后通过本地插件快速同步到云端开发环境,快速部署,快速验证,在子环境中开发、变更目标服务,子环境与基准环境的服务交互实现联调,从传统编译、打包、推送、部署、调用、修改的六步骤转为编译、调用、修改的三步骤秒级程序循环验证反馈模式,有效提高开发自测环境的稳定性和验证效率。

基于 PaaS 的 K8s 集群和云管平台,搭建开发自测环境的 K8s 集群和云管平台,通过 IDE 直连 K8s 集群,形成开发环境预分配、随用随申请、用完即销毁的机制。制作开发基础镜像,实现容器内编译打包部署,减少部署等待时长,提升自测验证速度。

K8s 集群:由 PaaS 云平台提供自测环境的 K8s 集群。

云管平台:基于 PaaS 云管平台,实现自测环境 Pod 的的集中管理,包括开发容器的创建、监控和销毁等功能。

IDE 插件:适配目前主流的 IDE,通过配置集群信息连接 K8s 集群,完成开发容器的配置、申请和销毁功能。

开发基础镜像:制作适配行内主流开发环境的基础镜像。

2、自测流程

基于全链路路由机制,实现请求自由发送到特色自测环境:

特色标签:根据开发人员个人属性,自动生成唯一标签。

流量路由:根据标签路由,基于我行已有 CTP 与 DSF 等框架提供的全链路路由能力转发流量。

默认服务:基准容器提供默认的服务,若未指明标签或者未找到指定的标签,则访问基准容器的服务。

联调测试:开发联调测试过程,启动带有标签 V1 的开发容器,并通知联调方同样使用带有标签 V1 的服务来请求。完成基于开发容器 A(V1)、基准容器 B、开发容器 C(V1)的开发环境联调测试。

结  尾

话题的最后,我们再次表达下我们沉浸式研发体系规划愿景:减少研发断点,提高研发产能?不不不,直白一点,我们最终的愿景是:带你走进沉浸式研发,除非你想,否则你再也不需要离开你的 IDE,即 ALL IN IDE !

今日好文推荐

重磅!阿里开源自研高性能核心搜索引擎Havenask

程序员离职后为泄私愤远程锁公司服务器硬盘;前程无忧宣传语嘲讽“996”职场人;Twitter 开源工作停摆| Q资讯

再不重视软件开发工具就晚了

“睡车间”、削减一切,马斯克为SpaceX定制的文化,不能照搬到互联网公司

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档