“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

工行软开中心

  • 2022-12-14
    北京
  • 本文字数:2939 字

    阅读完需:约 10 分钟

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

前   言


什么是沉浸式研发?可能很多人都没听说过这个名词,我们不妨从一次数据调研的结果开始讲起。在不久之前的一次一线开发人员每日编码时长的数据调研中,我们惊讶地发现,每个编码人员一天中使用 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!

2022-12-14 15:393796

评论 4 条评论

发布
用户头像
硬要想一个合理性的话,就是 这里是考核ide活跃时间的
2023-02-07 19:27 · 上海
回复
用户头像
纯属画蛇添足,没事找事型发明!能想到这种主意的,应该是对研发一知半解,或者门外汉的脑洞大开的想法。只看到了表面现象,开发工作本来就是多工种配合,多工具配合的事情,在IDE里面开发代码的时间占比本身就很少(业务分析、建模,沟通,开发、测试...)。试问 All IN IDE后,工作效率提升了没有?核心问题解决了吗?
2022-12-22 14:40 · 陕西
回复
用户头像
伪痛点,或者不要走极端,没有前途的。专业的软件让他干专业的事就完了。当然devops也需要考虑哪些流程需要纳入需要科学考虑
2022-12-15 16:03 · 江苏
回复
同意,伪痛点,觉得痛解决痛的那种伪
2022-12-19 16:42 · 上海
回复
没有更多了
发现更多内容

GO学习之路-3.GO基础语法

子不语Any

Go 编程语言 11月月更

2022-11-30:小红拿到了一个仅由r、e、d组成的字符串 她定义一个字符e为“好e“ : 当且仅当这个e字符和r、d相邻 例如“reeder“只有一个“好e“,前两个e都不是“好e“,只有第三个

福大大架构师每日一题

算法 rust 福大大

GO学习之路-4.String和Slice,Map

子不语Any

Go 编程语言 11月月更

GO学习之路-5.方法与接口

子不语Any

Go 编程语言 11月月更

华为云 CDN ,做企业网络“快人一步”的幕后英雄!

IT科技苏辞

华为云企业应用上云解决方案,为企业排忧解难

清欢科技

Kafka 消费者之 findCoordinator源码解析

石臻臻的杂货铺

kafka 11月月更

华为云云服务器:赢麻了是种什么体验?

路过的憨憨

华为

华为云CDN,为你开启更快速的上网体验!

秃头也爱科技

@企业主们看过来,用华为云CDN给你的网页加个速

IT科技苏辞

GO学习之路-6.GO语言函数

子不语Any

Go 编程语言 11月月更

企业运维强驱动

秃头也爱科技

GO学习之路-2.GO开发环境搭建

子不语Any

Go 编程语言 11月月更

设计模式之美--MVC(1)的贫血模型、充血模型

GalaxyCreater

设计模式

企业上云原来如此简单,华为云带你体验云上风采

清欢科技

云上办公便捷、安全,就用华为云桌面!

IT科技苏辞

「Go易错集锦」释放有限的资源以避免泄露

Go学堂

golang 程序员 个人成长 defer 11月月更

弹性伸缩、安全高效!华为云服务器助力企业数字化转型!

路过的憨憨

华为

会议都在云上开,华为云会议具有超高性价比

清欢科技

CleanMyMac4.12.1最新版安装包下载及功能详情

茶色酒

CleanMyMac CleanMyMac X CleanMyMac X2023

php常用函数

J.Smile

php

Discourse 为什不建议使用 Gmail 的 SMTP

HoneyMoose

hashmap 的重新散列和装载因子

HoneyMoose

体验华为云桌面的新办公形式,让你轻松办公

秃头也爱科技

企业数字化办公利器——华为云桌面Workspace

清欢科技

架构实战营模块一作业

张贺

架构实战营

Zebec节点Zepoch销量接近800个,生态发展信心十足

BlockChain先知

华为云CDN,带你畅享更快速的上网体验!

IT科技苏辞

2022腾讯全球数字生态大会数据库SaaS专场召开 腾讯云数据库SaaS产品全面升级

腾讯云数据库

腾讯云 SaaS 腾讯云数据库

企业如何高质量上云?华为云服务器告诉你!

路过的憨憨

华为

一站式解决方案,华为云CDN这波双十一很强!

秃头也爱科技

让开发人员all in IDE!工商银行沉浸式研发体系建设实践_语言 & 开发_InfoQ精选文章