落地 DevOps,探索高效研发运营一体化解决方案

news2024/11/24 11:36:43

   前言与概述

伴随着企业业务的快速发展,为了支撑业务发展,提高 IT 对业务的支撑能力建设。在研发工程协同方面,希望加强代码管理,实现持续构建、自动化测试、自动化部署、自动化运维,同时加强产品的安全和质量管理;在研发管理协同方面,希望实现从需求提出、需求规划、需求设计需求设计、需求开发、需求测试、需求上线的端到端的管理,并支持瀑布模型和敏捷模型的项目开发。

基于以上背景,企业更希望借助研发运营一体化体系的建设和 DevOps 工具平台的建设赋能研发,提高质效。

什么是 DevOps

DevOps(英文 Development 和 Operations 的组合)是一组过程、方法与系统的统称。用于促进开发(应用程序 / 软件工程)、测试(QA)、技术运营之间的沟通、协作与整合通过高度自动化工具与流程,使得软件构建、测试、发布更加快捷、频繁和可靠,从而快速交付想法、尽快让客户尝试从而获取反馈、快速响应客户反馈、提升业务速度,或尽量降低运营成本和减少浪费。

研发运营一体化(devops) 能力成熟度模型

  1. DevOps 国内翻译为开发运维一体化,但目前人们更多关注的是在开发与测试域,运维域仅有自动化发布归属 DevOps。DevOps 作为最佳实践,旨在提高软件交付速度和质量,打通部门间壁垒,促进协同,做到了从需求到运维,端到端的流程打通和可视化。

  2. DevOps 平台基础版包括代码配置管理、自动化编译打包、自动化部署 / 发布;高级版除基础版模块外,还包括需求管理、项目管理、开发管理、测试管理等协同功能。

  3. 经过多年的发展和演进,DevOps 已经形成了较为完备的知识体系,那就是以精益管理为基础,敏捷管理、持续交付、IT 服务管理为支柱的知识体系。

下图为研发运营一体化能力成熟度模型图,旨在帮助企业更好地理解和规范 DevOps 的落地实施与应用。

研发运营面临的 “四大” 挑战

  • 业务压力:激烈的市场竞争对业务提出更高的要求,数字化转型成为产业升级的重要抓手,快速、高效、高质量的交付业务价值。

  • 技术压力:云原生等新技术在带来便捷的同时,也增加了交付与维护的复杂度,对技术人员提出了更高的要求。

  • 效能压力:随着组织规模越来越大,多团队、多项目、多产品协作成本越来越高,单人效率日渐下降。

  • 成本压力:研发运营成本日益高企;复合型人才稀缺。

信息化程度走高后,暴露的研发运营问题

  1. 团队之间、不同角色之间协同效率低(信息离散难回溯,沟通成本高、效率低)

    1. 任务的分配、状态追踪需要人工 (当面 / 邮件 / 会议等) 反馈、跟踪;
    2. 线下沟通,参与人员多,邮件多,会议多,沟通成本高;
    3. 风险 (比如延迟开发、SIT、UAT) 的反馈慢。
  2. 研发过程割裂,缺乏研发运营一体化平台(IT 资源管理成本高、无法做过程优化)

    1. 多个团队都有自己的研发工具,重复造轮子;
    2. 交付件、发布内容缺乏统一管理,没有版本规范,流程管理规范;
    3. 工具互不关联,数据无法集成,任务协调进度无法集成。
  3. IT 侧的响应跟不上市场竞争节奏(市场商机稍纵即逝、IT 成本越堆越高)

    1. 业务迭代频率越来越高,现在的交付模式已经成为瓶颈;
    2. 发布过程复杂及人工操作时间久,发布涉及不同系统或数据库之间的前后发布依赖、部分复杂的应用;
    3. 前无法实现自动化发布,手工发布的系统比例较大。
  4. 系统可用性无法保障(用户流失、业务流程阻塞)

    1. 发布完成后,仅能做简单验证服务启动成功,对业务功能验证,并无好的方法;
    2. 线上服务没有故障快速发现,缺少自动化运维能力 (健康检查、弹性伸缩、 故障自恢复等)。

研发运营一体化建设思路

价值流交付平台使企业组织能够简化 DevOps 交付流水线的构建和管理。它们最大限度地减少了编排、集成和治理中涉及的开销,从而通过为工作流程提供可见性、可追溯性和可观察性来最大化价值。 产品基于价值流管理的思想,引入 DevOps 价值流管理理念,通过建设科学、规范、高效的一体化软件研发效能体系与平台,提升组织级软件交付、运维效能,以实现对企业数字化转型及业务创新的有力支撑和持续驱动,达到一体化、统一化、场景化、自动化、可视化的目标。

  • 体系化:引入 DevOps、ITIL 体系框架,建设科学的研发运营体系,实现企业的数字化转型和业务价值创新。

  • 统一化:通过建设规范、高效的一体化研发运营平台,实现多角色、多维度、多视角线上化的高效协作。

  • 场景化:通过模板化、规则化等手段,实现多种研发交付场景下的管理与生产动作的联动,从而实现从左到右端到端的价值流动,实现部门协同管理。

  • 自动化:以软件交付工序为主线,集成专业化 IT 服务管理工具、配置管理等生产工具,提升持续交付、持续运营的自动化能力。

  • 可视化:通过价值流可视化能力来分析价值和浪费,促进端到端的价值流快速流动。

解决方案

研发运营一体化建设蓝图规划

研发运营一体化平台,实现了企业从需求、规划、设计、开发、测试、发布、运维的端到端的管理。在需求全过程中涉及到需求管理、项目协作、配置管理、测试管理、发布管理、运维管理以及研发效能度量等活动,典型场景如下:

  1. 业务人员提交意向需求,BA 进行需求分析,编写业务需求和软件需求,并将需求关联到相关项目。

  2. 项目经理制定迭代计划,将需求分配到相关迭代计划,并将需求转化成任务,分配给开发人员。

  3. 开发人员按照任务完成代码开发,并提交代码,配置管理人员按照分支合并源代码,并手工触发流水线执行,流水线自动完成构建、自动化部署、自动化测试等工作,待测试人员完成测试用例的执行和报告后,执行发布流水线,最终完成生产部署工作。

 

研发运营一体化平台应用架构

研发运营一体化平台应用架构具体分为项目管理、产品管理、需求管理、测试管理、发布管理以及运维管理 6 大模块。未来平台将继续开放敏捷管理、代码库管理、流水线以及制品管理等模块功能。

研发运营一体化平台技术架构

云原生

  • 服务化前后端分离、基于 Rest API 交互,后端基于 DDD 拆分微服务;

  • 前端采用 Vue+H5、后端采用 Spring Cloud 开发框架。

  • 容器化支持应用容器化部署和管理,支持资源动态伸缩。

  • DevOps 通过 IaC 构建 DevOps (GitOps)

服务化

  • 开放 API 便于三方集成及生态化发展。

  • 集成 HUB 抽象集成层、数据模型便于集成及映射。

场景案例

场景一:高效协作,全流程解决方案

  • 实现需求管理流程、项目管理流程、测试管理流程、发布管理流程、变更管理流程、事件管理流程的全流程打通。

场景二:多维度、多层次研发协同

  • 实现业务人员、需求人员、产品经理、项目经理、开发人员、测试人员、部署人员、运维人员高效协同个信息共享。

场景三:需求端到端的管理

  • 面向业务,实现从需求收集、需求分析、需求规划、需求开发、构建和部署、需求测试、需求发布的端到端管理;

  • 支持需求的逐层分解(创意、史诗、特性、用户故事)和细化;

  • 支持需求的自动化跟踪和可视化管理。

场景四:项目全周期管理

  • 实现项目从启动、计划、执行 & 控制、结项的全生命周期管理;

  • 支持瀑布模型和敏捷模型的项目管理;

  • 支持项目迭代计划和里程碑计划管理。

场景五:统一软件配置管理

  • 全生命周期:从规划到产品交付投产的端到端的企业级配置管理全生命周期的统一化、线上化支持;

  • 分层级分角色管理:区分组织级、项目级角色;组织级可以关注在统一管控、支持指导方面;项目级角色可以进行日常的配置管理和环境管理的工作;

  • 多工具支持:企业内不同团队可根据需要自行选择版本管理工具支撑开发。

场景六:测试全周期管理

  • 按照测试任务,编写或者关联测试用例,执行测试用例,记录测试结果,并生成测试报告;

  • 建立统一测试用例库,测试任务从测试用例库提取测试用例。

场景七: 自动化 流水线

  • 全链路工具链集成

  • 流水线编排和调度

场景八:运维服务流程和 DevOps 的集成场景

  • 实现运维发布管理和发布流水线的自动化对接;

  • 实现制品元数据与 CMDB 信息的自动化同步。

 

场景九: 基于服务端到端 DevOps  CMDB 的融合

  • CMDB 为端到端的服务交付过程提供数据基础,提供部署环境信息。

  • 发布完成后,DevOps 自动同步应用配置基线数据到 CMDB

 场景十:研发运营一体化价值度量

项目建设收益

  • 提高 IT 管理效率

    •   通过统一平台、统一入口管理,管理者能够掌握软件研发全过程的信息,对软件研发全过程进行可视化掌控,及时了解需求、设计、开发、配置、构建、测试、部署等情况,实现可视化、透明化管理。
  • 提升 IT 工程效率

    •   一键式部署,实现代码提取、分支合并、自动构建、自动化测试、自动化部署的全过程管理。全过程无需人工干预,降低相关人员的技术和工具要求,同时产品支持自动化撤版和回滚,降低运维生产事故和风险。
  • 增强系统稳定性,提高项目质量

    •   实现项目全过程的规范化管理,通过自动化流水线,降低出错的机率,通过集成安全、质量、自动化测试工具,实现对交付质量的自动化检测,提高交付质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为路由器 静态路由

需求&#xff1a; 实现 PC1 与 PC2 互通 1、拓扑图 主机IP掩码网关PC1192.168.10.10255.255.255.0192.168.10.1PC2192.168.40.40255.255.255.0192.168.40.1PC3192.168.30.30255.255.255.0192.168.30.1 2、R1 路由器 <Huawei>undo ter mo Info: Current terminal monit…

c#调用c++捕获SEH异常

C代码&#xff1a; extern "C" __declspec(dllexport) int ExceptionTest() { int* pointer NULL;*pointer 100; return 100; }c#代码&#xff1a; class C_Sharp_Call_C__{[DllImport("testDll.dll", CallingConvention CallingConvention.Cdecl)]p…

SpringMVC:Spring与SpringMVC各自bean加载控制(2)

问题提出&#xff1a;学习Spring技术的时候在config目录下创建了一个配置类SpringConfig。现在学习SpringMVC技术在config目录下又创建一个SpringMvcConfig配置类。这两个配置类都需要加载资源&#xff0c;那么它们分别都需要加载哪些内容? 目录结构&#xff1a; config目录存…

[附源码]Python计算机毕业设计房屋租赁管理系统设计Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

完全可用的迁移docker目录方案(centos/redhat)

完全可用的迁移docker目录方一、前提二、具体操作如下&#xff1a;2.1 先模拟运行一个 docker mysql2.2 先停docker进程2.3 新建存储目录2.4 修改启动默认的目录2.4.1 使用软链接(推荐)2.4.2 修改/etc/docker/daemon.json &#xff08;推荐&#xff09;2.4.3 指定容器启动参数&…

【深度学习】PyTorch深度学习实践 - Lecture_12_Basic_RNN

文章目录一、RNN介绍1.1 RNN为什么能处理有序数据&#xff1f;1.2 RNNCell内部剖析二、How to use RNNCell In PyTorch2.1 参数分析2.2 PyTorch代码实现三、How to use RNN In PyTorch3.1 参数分析3.2 NumLayers3.3 PyTorch代码实现3.4 其他参数四、Example1&#xff1a;Using …

fpga实操训练(锁相环pll)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 锁相环pll是fpga区别于stm32、soc很重要的一个特征。通常来说&#xff0c;输入的晶振一般是25m、50m这样的&#xff0c;不一定能满足功能的开发。这…

QT—QList与QLinkedList类的常用方法

QList<T>维护了一个指针数组&#xff0c;数组元素指向每一个链表项&#xff0c;因此QList<T> 提供了基于下标的快速访问。QLinkedList<T>是一个链式列表&#xff0c;不能使用下标访问&#xff0c;与QList相比&#xff0c;当对一个很大的列表进行插入操作时&a…

最近爆火chatGTP是人工智能还是人工智障?

关于chatGTP和一些话题? OpenAI 发布了 ChatGPT&#xff0c;是一个可以对话的方式进行交互的模型&#xff0c;因为它的智能化&#xff0c;得到了很多用户的欢迎。 ChatGPT是InstructGPT的兄弟模型&#xff0c;可以以对话的形式与用户交互&#xff0c;这使得ChatGPT能够回答问…

linux第五章---git的基本操作

git作为代码管理仓库&#xff08;版本管理工具&#xff09;&#xff0c;主要有GitHub和Gitee等等。&#xff0c;大家可以登录官网注册&#xff0c;Github经常访问不到&#xff08;看运气&#xff09;&#xff0c;Gitee作为国内比较火的一个平台(较商业化)。 1.git基本概念 工…

Java连接Access数据库改成MySQL连接数据库

升级诉求&#xff1a;Java连接Access已经算是过时的产物了&#xff0c;一般作为存储服务的应用在Java界比较常用的还是MySQL&#xff0c; 当然还有Oracle数据库。这里要讲的就是连接MySQL数据库了。 就是因为有了SQL标准&#xff0c;各大厂商实现SQL语句基本上大同小异&#xf…

基于Python完成CA系统的设计和实现(附源码)

CA 系统开发 一、CA系统的设计和实现 ​ 注&#xff1a;CA&#xff0c;Certificate Authority&#xff0c;电子认证服务或机构&#xff0c;为电子签名相关各方提供真实性和可靠性验证&#xff0c;是负责发放和管理数字证书的权威机构&#xff0c;并作为电子商务交易中受信任的…

基于Feign远程调用

RestTemplate方式调用存在的问题 先看看我们以前利用RestTemplate发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; 1、代码可读性差&#xff0c;编程体验不统一&#xff1b; 2、参数复杂URL难以维护&#xff1b; 为了解决这些问题&#xff0c;所以引入了Feign&am…

QT QStackedWidget 控件 使用详解

本文详细的介绍了QStackedWidget控件的各种操作&#xff0c;例如&#xff1a;新建界面、页面切换、添加页面、addWidget、count、currentIndex 、currentWidget、indexOf、insertWidget、removeWidget、widget、setCurrentIndex 槽函数、setCurrentWidget 槽函数、currentChang…

RSS Can:将网站信息流转换为 RSS 订阅源(三)

第三篇内容里&#xff0c;我们来聊聊把结构化数据转换为可以订阅的 RSS 订阅数据源。 写在前面 通过前两篇文章《RSS Can&#xff1a;使用 Golang 实现更好的 RSS Hub 服务&#xff08;一&#xff09;》和《RSS Can&#xff1a;借助 V8 让 Golang 应用具备动态化能力&#xf…

【云计算与大数据技术】集群资源统一管理系统YARN、Mesos、Omega讲解(图文解释 超详细)

相比于一种计算框架一个集群的模式&#xff0c;共享集群的模式具有以下三个优点 1&#xff1a;硬件共享 资源利用率高 2&#xff1a;人员共享 运维成本低 3&#xff1a;数据共享 数据复制开销低 一、集群资源统一管理系统 集群资源统一管理系统需要支持多种计算框架,并需…

如何能让Linux系统能够更好的支持高并发环境?

Linux系统在默认的参数下对高并发支持不好&#xff0c;主要瓶颈在于单进程最大打开文件数限制、内核TCP参数方面和IO事件分配机制等。所以下面我们从这几方面进行调优&#xff0c;使Linux系统能够更好的支持高并发环境。 iptables相关 如果不是必须使用&#xff0c;建议关掉或…

对接云眸控件兼容性记录

之前采用的UIKit的形式进行视频播放&#xff0c;因为业务要求转换成了Web视频控件的形式。但是Web控件存在不少的兼容性问题 开发的直播系统(www.a.com)是通过Iframe嵌入到门户网站(www.b.com)中&#xff0c;并且部署的地址不同于门户地址: 由于系统页面和门户网站不同域&…

证明客户端发起HTTP请求后会进入TIME_WAIT状态并占用端口

证明客户端发起HTTP请求后会进入TIME_WAIT状态并占用端口 起因 线上出现服务器发起Http请求会报 connect: cannot assign requested address 错误的现象原因是HTTP请求四次挥手的发起方会进入TIME_WAIT状态并占用端口&#xff0c;大量的短链接导致端口耗尽 – 在这篇文章里很详…

代码的编译原理,以Linux系统为例

程序编译分为预编译、编译、汇编和链接四个阶段。在Windows操作系统中&#xff0c;编译工具用的是集成的开发环境&#xff0c;在Linux系统中没有很好的继承开发环境&#xff0c;用的是gcc编译器或者g&#xff0c;gcc用于C语言代码的编译&#xff0c;g用在C的编译过程中。在Linu…