最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

让开发人员 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:393815

评论 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 · 上海
回复
没有更多了
发现更多内容

「云渲染」渲染农场的架构原理、特点

Finovy Cloud

架构 原理 云渲染 云渲染农场

LF AI & Data AICon 2022—AI工程化回顾

星策开源社区

机器学习 微软 AI工程化 人工智能’ AICon

Java的一维数组和二维数组

陌上

数据结构 Java、 10月月更

汽车云服务应用场景系列报告——自动驾驶仿真测试云服务行业图谱

易观分析

云服务 汽车

华为云桌面,助力企业扬帆起航

科技怪授

华为云 桌面云 华为云桌面

办公无界,看华为云桌面如何助企业上“云”

科技怪授

华为云 桌面云 云桌面

助力企业高效率办公,华为云桌面必不可少

科技怪授

华为云 桌面云 云桌面

华为云网站安全解决方案,站在企业安全的最前沿

科技之光

独家!【隐秘而伟大】这群神秘的程序员,干了票大的

博文视点Broadview

华为云ECS,如何赋能企业开展云上业务?

路过的憨憨

华为

纵享丝滑,华为云CDN加速服务的极致体验

路过的憨憨

华为

跨库分页

zarmnosaj

10月月更

一文带你更了解Java中的方法

陌上

Java、 编程、 10月月更

个人和初创企业想要搭建网站,如何挑选一台便宜合适的云主机?

京东科技开发者

云主机 网站搭建 测评 性能评测

校园大赛 | 数云融合 叩响未来——神州数码集团2022年校园大赛火热开启!

科技热闻

现代化SDLC与架构评审

I

安全架构设计 SSDLC

企业如何从0到1搭建BI系统

葡萄城技术团队

BI 仪表盘识别 可视化数据

Go | 基本数据类型的相互转换

甜点cc

golang 学习笔记 10月月更

CDC ChangeLog Stream实时流入CLICKHOUSE最佳姿势

水滴

实时数仓 Clickhouse CDC Flink CDC Debezium

Java | static和不可变关键字final

陌上

编程 Java、 10月月更

招聘软件哪个最好用?

优秀

招聘系统

华为云加固企业网站安全堤坝,助您业务稳定流畅

科技之光

启科量子可视化量子编程——QuComposer

启科量子开发者官方号

量子计算 可视化开发 启科量子

代码规范以及commit扫描代码

甜点cc

前端 代码规范 React Native 10月月更

换行符不一致问题终极处理方案——gitattributes

甜点cc

JavaScript 前端 代码规范 10月月更

鸿蒙开发实例|对象关系映射数据库

TiAmo

华为 华为云 10月月更

覆水也可收, 破镜可重圆! EasyRecovery帮你轻松找回丢失数据

淋雨

数据恢复 EasyRecovery

从 Traefik 到 APISIX,汽车智能计算平台公司「地平线」在 Ingress Controller 的探索和实践

API7.ai 技术团队

开源 AI 网关 APISIX Ingress Controller

启科量子 QuBranch 正式开源

启科量子开发者官方号

量子计算 编程工具 启科量子

闻道Go语言,6月龄必知必会

有态度的马甲

华为云桌面,随时随地助力企业轻松办公

科技怪授

华为云 桌面云 云桌面

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