实现高效研发运营一体化:深度落地DevOps解决方案的探索与实践
前言与概述
伴随着企业业务的快速发展,为了支撑业务发展,提高 IT 对业务的支撑能力建设。在研发工程协同方面,希望加强代码管理,实现持续构建、自动化测试、自动化部署、自动化运维,同时加强产品的安全和质量管理;在研发管理协同方面,希望实现从需求提出、需求规划、需求设计需求设计、需求开发、需求测试、需求上线的端到端的管理,并支持瀑布模型和敏捷模型的项目开发。
基于以上背景,企业更希望借助研发运营一体化体系的建设和 DevOps 工具平台的建设赋能研发,提高质效。
什么是 DevOps
DevOps(英文 Development 和 Operations 的组合)是一组过程、方法与系统的统称。用于促进开发(应用程序 / 软件工程)、测试(QA)、技术运营之间的沟通、协作与整合通过高度自动化工具与流程,使得软件构建、测试、发布更加快捷、频繁和可靠,从而快速交付想法、尽快让客户尝试从而获取反馈、快速响应客户反馈、提升业务速度,或尽量降低运营成本和减少浪费。
研发运营一体化(devops) 能力成熟度模型
-
DevOps 国内翻译为开发运维一体化,但目前人们更多关注的是在开发与测试域,运维域仅有自动化发布归属 DevOps。DevOps 作为最佳实践,旨在提高软件交付速度和质量,打通部门间壁垒,促进协同,做到了从需求到运维,端到端的流程打通和可视化。
-
DevOps 平台基础版包括代码配置管理、自动化编译打包、自动化部署 / 发布;高级版除基础版模块外,还包括需求管理、项目管理、开发管理、测试管理等协同功能。
-
经过多年的发展和演进,DevOps 已经形成了较为完备的知识体系,那就是以精益管理为基础,敏捷管理、持续交付、IT 服务管理为支柱的知识体系。
下图为研发运营一体化能力成熟度模型图,旨在帮助企业更好地理解和规范 DevOps 的落地实施与应用。
研发运营面临的 “四大” 挑战
-
业务压力:激烈的市场竞争对业务提出更高的要求,数字化转型成为产业升级的重要抓手,快速、高效、高质量的交付业务价值。
-
技术压力:云原生等新技术在带来便捷的同时,也增加了交付与维护的复杂度,对技术人员提出了更高的要求。
-
效能压力:随着组织规模越来越大,多团队、多项目、多产品协作成本越来越高,单人效率日渐下降。
-
成本压力:研发运营成本日益高企;复合型人才稀缺。
信息化程度走高后,暴露的研发运营问题
-
团队之间、不同角色之间协同效率低(信息离散难回溯,沟通成本高、效率低)
- 任务的分配、状态追踪需要人工 (当面 / 邮件 / 会议等) 反馈、跟踪;
- 线下沟通,参与人员多,邮件多,会议多,沟通成本高;
- 风险 (比如延迟开发、SIT、UAT) 的反馈慢。
-
研发过程割裂,缺乏研发运营一体化平台(IT 资源管理成本高、无法做过程优化)
- 多个团队都有自己的研发工具,重复造轮子;
- 交付件、发布内容缺乏统一管理,没有版本规范,流程管理规范;
- 工具互不关联,数据无法集成,任务协调进度无法集成。
-
IT 侧的响应跟不上市场竞争节奏(市场商机稍纵即逝、IT 成本越堆越高)
- 业务迭代频率越来越高,现在的交付模式已经成为瓶颈;
- 发布过程复杂及人工操作时间久,发布涉及不同系统或数据库之间的前后发布依赖、部分复杂的应用;
- 前无法实现自动化发布,手工发布的系统比例较大。
-
系统可用性无法保障(用户流失、业务流程阻塞)
- 发布完成后,仅能做简单验证服务启动成功,对业务功能验证,并无好的方法;
- 线上服务没有故障快速发现,缺少自动化运维能力 (健康检查、弹性伸缩、 故障自恢复等)。
研发运营一体化建设思路
价值流交付平台使企业组织能够简化 DevOps 交付流水线的构建和管理。它们最大限度地减少了编排、集成和治理中涉及的开销,从而通过为工作流程提供可见性、可追溯性和可观察性来最大化价值。 产品基于价值流管理的思想,引入 DevOps 价值流管理理念,通过建设科学、规范、高效的一体化软件研发效能体系与平台,提升组织级软件交付、运维效能,以实现对企业数字化转型及业务创新的有力支撑和持续驱动,达到一体化、统一化、场景化、自动化、可视化的目标。
-
体系化:引入 DevOps、ITIL 体系框架,建设科学的研发运营体系,实现企业的数字化转型和业务价值创新。
-
统一化:通过建设规范、高效的一体化研发运营平台,实现多角色、多维度、多视角线上化的高效协作。
-
场景化:通过模板化、规则化等手段,实现多种研发交付场景下的管理与生产动作的联动,从而实现从左到右端到端的价值流动,实现部门协同管理。
-
自动化:以软件交付工序为主线,集成专业化 IT 服务管理工具、配置管理等生产工具,提升持续交付、持续运营的自动化能力。
-
可视化:通过价值流可视化能力来分析价值和浪费,促进端到端的价值流快速流动。
解决方案
研发运营一体化建设蓝图规划
研发运营一体化平台,实现了企业从需求、规划、设计、开发、测试、发布、运维的端到端的管理。在需求全过程中涉及到需求管理、项目协作、配置管理、测试管理、发布管理、运维管理以及研发效能度量等活动,典型场景如下:
-
业务人员提交意向需求,BA 进行需求分析,编写业务需求和软件需求,并将需求关联到相关项目。
-
项目经理制定迭代计划,将需求分配到相关迭代计划,并将需求转化成任务,分配给开发人员。
-
开发人员按照任务完成代码开发,并提交代码,配置管理人员按照分支合并源代码,并手工触发流水线执行,流水线自动完成构建、自动化部署、自动化测试等工作,待测试人员完成测试用例的执行和报告后,执行发布流水线,最终完成生产部署工作。
研发运营一体化平台应用架构
研发运营一体化平台应用架构具体分为项目管理、产品管理、需求管理、测试管理、发布管理以及运维管理 6 大模块。未来平台将继续开放敏捷管理、代码库管理、流水线以及制品管理等模块功能。
研发运营一体化平台技术架构
云原生
-
服务化前后端分离、基于 Rest API 交互,后端基于 DDD 拆分微服务;
-
前端采用 Vue+H5、后端采用 Spring Cloud 开发框架。
-
容器化支持应用容器化部署和管理,支持资源动态伸缩。
-
DevOps 通过 IaC 构建 DevOps (GitOps)
服务化
-
开放 API 便于三方集成及生态化发展。
-
集成 HUB 抽象集成层、数据模型便于集成及映射。
场景案例
场景一:高效协作,全流程解决方案
- 实现需求管理流程、项目管理流程、测试管理流程、发布管理流程、变更管理流程、事件管理流程的全流程打通。
场景二:多维度、多层次研发协同
- 实现业务人员、需求人员、产品经理、项目经理、开发人员、测试人员、部署人员、运维人员高效协同个信息共享。
场景三:需求端到端的管理
-
面向业务,实现从需求收集、需求分析、需求规划、需求开发、构建和部署、需求测试、需求发布的端到端管理;
-
支持需求的逐层分解(创意、史诗、特性、用户故事)和细化;
-
支持需求的自动化跟踪和可视化管理。
场景四:项目全周期管理
-
实现项目从启动、计划、执行 & 控制、结项的全生命周期管理;
-
支持瀑布模型和敏捷模型的项目管理;
-
支持项目迭代计划和里程碑计划管理。
场景五:统一软件配置管理
-
全生命周期:从规划到产品交付投产的端到端的企业级配置管理全生命周期的统一化、线上化支持;
-
分层级分角色管理:区分组织级、项目级角色;组织级可以关注在统一管控、支持指导方面;项目级角色可以进行日常的配置管理和环境管理的工作;
-
多工具支持:企业内不同团队可根据需要自行选择版本管理工具支撑开发。
场景六:测试全周期管理
-
按照测试任务,编写或者关联测试用例,执行测试用例,记录测试结果,并生成测试报告;
-
建立统一测试用例库,测试任务从测试用例库提取测试用例。
场景七: 自动化 流水线
-
全链路工具链集成
-
流水线编排和调度
场景八:运维服务流程和 DevOps 的集成场景
-
实现运维发布管理和发布流水线的自动化对接;
-
实现制品元数据与 CMDB 信息的自动化同步。
场景九: 基于服务端到端 DevOps 与 CMDB 的融合
-
CMDB 为端到端的服务交付过程提供数据基础,提供部署环境信息。
-
发布完成后,DevOps 自动同步应用配置基线数据到 CMDB
场景十:研发运营一体化价值度量
项目建设收益
-
提高 IT 管理效率
- 通过统一平台、统一入口管理,管理者能够掌握软件研发全过程的信息,对软件研发全过程进行可视化掌控,及时了解需求、设计、开发、配置、构建、测试、部署等情况,实现可视化、透明化管理。
-
提升 IT 工程效率
- 一键式部署,实现代码提取、分支合并、自动构建、自动化测试、自动化部署的全过程管理。全过程无需人工干预,降低相关人员的技术和工具要求,同时产品支持自动化撤版和回滚,降低运维生产事故和风险。
-
增强系统稳定性,提高项目质量
- 实现项目全过程的规范化管理,通过自动化流水线,降低出错的机率,通过集成安全、质量、自动化测试工具,实现对交付质量的自动化检测,提高交付质量。
相关文章:

实现高效研发运营一体化:深度落地DevOps解决方案的探索与实践
前言与概述 伴随着企业业务的快速发展,为了支撑业务发展,提高 IT 对业务的支撑能力建设。在研发工程协同方面,希望加强代码管理,实现持续构建、自动化测试、自动化部署、自动化运维,同时加强产品的安全和质量管理&…...

Milvus向量数据库-磁盘索引简介
以下内容是自己在学习Milvus向量数据库时,在Milvus官方网站文档库中对索引的学习整理和翻译,通过自己和借助翻译软件进行了理解整合翻译,有可能有一些地方理解整理的不到位,还望大家理解。 一、磁盘索引 本文介绍了一种名为Disk…...

Web漏洞介绍和Sql注入漏洞
常规渗透测试流程 漏洞探测包括:web漏洞测试,系统漏洞测试 工具探测、手工验证 优先找的漏洞:中间(件)漏洞、框架漏洞...webserver 知道创宇 Seebug 漏洞平台 - 洞悉漏洞,让你掌握前沿漏洞情报ÿ…...

【Eureka】Eureka 介绍与实战
1. Eureka 简介 Eureka 是 Netflix 开发的一个服务注册和发现组件,主要用于微服务架构中。它的核心功能是帮助微服务之间进行通讯和管理,使得服务能够动态地发现彼此,实现灵活的服务调用和负载均衡。 1.1 核心概念 服务注册中心࿰…...

密码管理系统的自动化与集成:重塑安全与效率的双重飞跃
在数字化时代,密码作为保护个人信息、企业资产及敏感数据的第一道防线,其重要性不言而喻。然而,随着网络应用的激增和复杂性的提升,传统的密码管理方式——如使用简单密码、重复密码或依赖记忆——已难以满足现代安全需求…...

Outlook如何精确搜索邮件?
Outlook如何精确搜索邮件? 参考链接:https://jingyan.baidu.com/article/e75aca853148ba552edac6b6.html 我们在使用Outlook搜索功能时,直接输入关键词的话,会出来很多不相关的内容,那么有没有办法让搜索时更加精确呢…...

MambaCSR: 使用SSM的双交错扫描压缩图像超分辨率
MambaCSR: Dual-Interleaved Scanning for Compressed Image Super-Resolution With SSMs 2408.11758 (arxiv.org) GitHub - renyulin-f/MambaCSR: The code source of MambaCSR 摘要 本文提出了MambaCSR,这是一个基于Mamba的简单但有效的框架,用于解决…...

【C++】深入解析C/C++内存管理:new与delete的使用及原理
C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类 本章将分享C为何放弃malloc/free系列,选择新系列new/delete去管理内存。深度探索new/delete的使用及其原理,m…...

递归--数据结构--黑马
递归 总结一句话,上手直接多刷Leetcode,比看这个更有用。 定义 递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集。 例如,单链表递归遍历的例子: void f(Node node) {if (node null) {retu…...

【3.1】贪心算法-解分发饼干
一、题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是, 每个孩子最多只能给一块饼干 。 对每个孩子i,都有一个 胃口值 g[i] ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个…...

解决 Error running ‘Application‘: Command line is too long.
一、项目场景: 运行刚拉取下来的项目代码,出现下面问题描述的错误提示。 二、问题描述 Error running Application: Command line is too long. Shorten command line for Application or also for Spring Boot default configuration? 翻译翻译&…...

衡量与归因将是Netflix程序化广告业务的首要任务
作者:刀客doc 8月20日,Netflix宣布今年上半年,品牌的招商收入同比增长了150%,广告主来自旅游、汽车、零售商、快餐和大众快消等行业。这一消息提振了资本市场对Netflix广告业务的信心,8月20日收盘创下每股 698.54 美元…...

关于如何在已有qt项目中添加该项目的单元测试工程
关于如何在已有qt项目中添加该项目的单元测试工程 新建一个子目录工程,把已有项目作为子工程添加进去,然后新建单元测试工程也作为子工程添加进去。单元测试项目要独立于实际项目工程,确保去掉测试项目后,实际项目仍可以正常运行…...

深度剖析数字媒体产业链的无限潜力与创新生态
在当今信息爆炸的时代,数字媒体产业链正以势不可挡的姿态展现出其令人瞩目的无限潜力与创新生态。 数字媒体的发展潜力简直无可限量。从在线视频的爆发式增长,到虚拟现实和增强现实技术带来的沉浸式体验,再到社交媒体平台上丰富多彩的内容创…...

集团数字化转型方案(十二)
集团数字化转型方案致力于通过构建一个集成化的数字平台,全面应用大数据分析、人工智能、云计算和物联网等前沿技术,推动业务流程、管理模式和决策机制的全面升级。该方案将从业务流程的数字化改造开始,优化资源配置,提升运营效率…...

Andrid异步更新UI:Handler(二)深入了解:Message你真的会创建?它是如何子线程和主线程通知?
目录 为什么会有HandlerHandler的原理,以及对象讲解主线程的loop在哪里,为什么主线程loop没有阻塞呢?Looper如何保证唯一Handler为什么会引发内存泄漏呢?Message应该如何创建它? 一、为什么会有Handler 线程分为主线…...

2025计算机毕设50条小众好做的Java题目【计算机毕设选题推荐】
随着2025年的到来,计算机专业的学生们又迎来了毕业设计的关键时刻。对于大多数学生来说,选择一个合适的毕业设计题目往往是一项艰巨的任务。本文旨在为那些正在为毕业设计题目烦恼的同学们提供一些灵感和建议,特别是针对使用Java技术栈的同学…...

day06_算法训练
一. Stream流 1.1 Stream流概述 概念: jdk1.8以后提供的新的API, 主要用于批量操作数据(集合的另外一种操作方式),代码非常简洁 流式处理思想: 2.2 Stream对象获取 1.单列集合的Stream流对象获取 2.双列集合的Stream流对象获取 3.数组的Stream流对象获取 4.散装数据的St…...

@SpringBootTest单元测试中报错:无法自动装配,找不到 ‘XXX‘ 类型的 Bean
一开始照着网上教程讲Springboot原理中的代码来copy写的↓ import com.google.gson.Gson; import com.itheima.pojo.Result; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.cont…...

nodemon学习(一)简介、安装、配置、使用
nodemon用来监视node.js应用程序中的任何更改并自动重启服务,非常适合用在开发环境中。以前,我们开发一个node后端服务时,每次更改文件,均需重启一下,服务才能生效。这使我们的开发效率降低了很多。nodemon的出现,可以…...

【Qt从摄像头视频中获取数据】
有时候需要在视频上画图,所以需要能获取到每一帧视频数据。 以前从视频文件或视频流中得到帧,一般都是使用qt ffmpeg或qt vlc。 qt对显示处理视频大体有以下方法: QMediaPlayer QVideoWidget 这种方法只适合简单的显示视频功能ÿ…...

视频截取中的UI小组件
引言 视频截取在社交类 APP 中十分常见。有了上传视频的功能,就不可避免地需要提供截取和编辑的选项。如果我们过度依赖第三方库,项目的代码可能会变得异常臃肿,因为这些库往往包含许多我们用不到的功能,而且它们的 UI 样式和功能…...

java设计模式--结构型模式
结构性模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式 适配器模式 适配器模式(Adapter Pattern) 充当两个不兼容接口之间的桥梁,属于结构型设计模式。目的是将一个类的接口转换为另一个接口&am…...

消息中间件:Kafka消息丢失与堆积问题分析与解决方案
消息中间件:Kafka消息丢失与堆积问题分析与解决方案 Kafka作为分布式消息系统,广泛应用于实时数据流处理、大数据分析等领域。然而,在实际应用中,Kafka可能会面临消息丢失和消息堆积的问题,这些问题如果得不到有效处理…...

mac终端代理配置指南
终端代理配置指南 在 macOS 中,你可以通过几种不同的方法来配置终端代理。这里介绍两种常见的设置方式:使用 alias 和 shell 函数。 方法 1:使用 Alias 配置代理 打开终端配置文件 默认情况下,macOS 终端使用的是 zsh。如果你的系…...

mbedTLS生成客户端,服务端密钥及CA证书
1. mbedTLS源码:https://github.com/Mbed-TLS/mbedtls.git 2. 生成步骤: 2.1 编译上述源码 2.2 生成CA私钥和自签名证书: 进入编译的build目录,比如:/mbedtls-development/build# 2.2.1生成CA私钥 执行下面的命令&…...

如何有效应对突发技术故障:以网易云音乐为例
引言 在互联网行业,任何一个在线服务都可能遭遇突发的技术故障。这些故障不仅影响用户体验,还可能对公司的品牌形象造成损害。因此,如何快速响应并高效解决这些问题成为了每一个开发团队的重要课题。本文将以网易云音乐在2024年8月19日下午遭…...

上传文件到github仓库
REF: https://blog.csdn.net/litianxiang_kaola/article/details/74075151 已有repository,往仓库里更新内容 点击gitlab里的clone 在git bash中使用git clone,这个时候会将网上的仓库下载到本地,你可以把想要更新的内容直接拖到仓库里 …...

clip-path实现图片边角的裁剪
img {clip-path: polygon(0 7px,7px 0,calc(100% - 20px) 0,100% 20px,100% 100%,16px 100%,0 calc(100% - 16px));}每一个逗号隔开的就是路径坐标 左上角的两个点 0 7px ,7px 0 右上角 calc(100% - 20px) 0,100% 20px 相当于通过这些点练成的线的圈起来的部分就是剩…...

【C++ Primer Plus习题】2.7
问题: 解答: #include <iostream> using namespace std;void print(int hour, int minute) {cout << "Time:" << hour << ":" << minute << endl; }int main() {int hour0;int minute 0;cout << "请输入…...