【软考】论devops在企业信息系统开发中的应用

news2025/4/19 9:12:01

摘要:

      随着互联网的不断发展,各行各业都在建设自己的企业信息系统,而随着业务的不断升级和复杂化,系统的更新迭代速度越来越快,系统也越来越复杂。对于信息系统开发者,架构师,管理者,如何高效的开发,集成,交付高质量的系统功能成了系统开发者,架构师,管理者们的一项具有挑战性的工作。在不断的实践经验中 ,我们总结了devops方法,能够快速 进行系统开发,系统集成 ,系统交付,从而缓解了企业对系统建设快速交付的要求,该套方法介绍系统开发中如何应用devops进行系统快速开发,持续集成,快速交付的方法和工具

背景:

 本人  ,作为公司的系统架构师,有幸参与了公司的信息化系统的架构,管理,全面管理工作。现在我以系统“XXX全息系统”为例介绍devops在企业信息系统开发中的应用。

正文

从逻辑上把 DevOps 平台划分为三大领域:敏捷过程、持续交付、持续改进。敏捷过程针对于软件过程进行管理,包括产品、项目、团队、计划、任务等,持续交付则关注从需求到上线交付的管理,包括持续集成、自动化测试、自动化部署、交付流水线等。持续改进则体现了平台的核心价值,不断的度量和优化软件过程,为提升 IT 运行效率打下坚实的基础

DevOps 平台划分为领域层、基础服务层、工具层三层。工具层封装了一些开源工具,提供基础能力。服务层在此基础上封装的一些基础服务,如编译、部署、代码管理等。领域层主要包括项目管理、产品管理、构建、部署、交付流水线、度量优化等模块。底层运行环境支撑物理机、虚拟机、容器云平台。

软件的整个生命周期可以从不仅仅是项目的生命周期,而是应该也包括了产品的生命周期。在企业内部,通常我们先决定做哪个产品,然后需求调研、版本划分,确认了具体版本要实现的需求范围后,便可以组建项目进行研发。研发完成进行交付后,有进入产品的线上运营阶段。直至产品下线。一个产品可以对应多个项目,当然,对于有些企业而言,一个项目也是持续稳定的维护一个产品。

持续集成

持续集成模块功能主要有代码库管理、构建定义管理以及构建实例管理等。在构建定义管理模块中,DevOps 平台将构建任务分成了四种类型:

  • 编译类任务:Maven、Ant、Gradle、纯前端构建等

  • 测试类任务:Sonarqube、Jmeter、Selenium等

  • 打包类任务:Npm、Archive、Docker 等

  • 其他工具类任务:Copyfile、Shell、介质提交到Nexus 仓库、介质上传二方库等。

在每个构建定义上可以选择若干个需要的构建任务,通过原子步骤编排,组装成一个完整构建流程。代码提交时触发构建(支持 gitlab、github、svn 等常用代码库版本管理工具)、日构建等不同的构建触发策略等支撑了持续集成的完整链路打通。

自动化部署

在自动化部署模块中,为了更好的与实际结合,我们将部署分为三个阶段:设计、转换、运维。

设计阶段: 将部署架构分为三层:部署装配(Assembly)、部署容器(Platform)、部署组件 (Component)。部署装配是对部署架构的描述,由多个部署容器组成,每个部署容器由若干个部署组件组成。

转换阶段: 将部署架构与部署策略(全新、蓝绿、灰度、滚动升级等)、资源(具体资源如物理机、虚拟机、容器)、组件配置参数(端口号、JVM 参数、健康检查 url 等)进行结合,生成部署计划,一键执行自动化部署。

运维阶段: 对于已部署的实例进行运维管理,包括启动、停止、重启、修复、状态检查等等。

持续交付流水线

设计阶段: 将部署架构分为三层:部署装配(Assembly)、部署容器(Platform)、部署组件 (Component)。部署装配是对部署架构的描述,由多个部署容器组成,每个部署容器由若干个部署组件组成。

转换阶段: 将部署架构与部署策略(全新、蓝绿、灰度、滚动升级等)、资源(具体资源如物理机、虚拟机、容器)、组件配置参数(端口号、JVM 参数、健康检查 url 等)进行结合,生成部署计划,一键执行自动化部署。

运维阶段: 对于已部署的实例进行运维管理,包括启动、停止、重启、修复、状态检查等等。

持续交付流水线

为什么需要持续交付流水线?举个例子来说,我们常常苦恼最终上线版本和系统集成测试环境不一致。这一般是因为在系统集成测试完成后发现了问题,作了代码变更但没有重新构建,而是直接在介质里进行了调整进而发布上线。在持续交付流水线中是不允许这种情况出现的。所有上线入口一定是最初的构建,所有的后续产物都是基于这一介质,如果有变更必须重走流程。这样可以保证发布的安全性和统一性,线上出现问题也是可以追溯的。当然过程中的环境可以配置人工介入或自动执行。

发布流水线从构建到生产部署共 9 大环节,涵盖 SIT/UAT/LAB/PROD 四大环境。驱动了开发、测试、质量、运维等多个角色的协作。

在设计流水线能力时,我们主要考虑到几点:

  • 结合企业的不同交付流程,要能支持自定义的流程配置,要能支持多套流程配置

  • 流程的每一个环节都要支持自动执行的配置

  • 流程中每个环节的属性和配置信息可以自定义,灵活扩展

  • 流程以构建开始,让 buildNumber 贯穿整个流程,方便追根溯源

  • 要有一个看板,直观的看到整个产品的版本目前到了流程的哪个环节,是 SIT 还是 UAT,结果如何

  • 要有一个看板,直观的看到每个环境下,有哪些介质在运行

以这些为基础准则,我们底层基于了我们的 BPS 流程引擎,支撑流程的自定义和扩展。并且,针对于每个环节,都可以配置前置后置事件、人工执行还是自动执行,责任人等。整个流水线从构建开始,保证全局介质唯一,避免人为修改介质导致的生产介质不可追溯。

度量优化

精益运营的基础是度量,度量的三大维度:指标、执行监控、预测。首先是明确指标和执行监控,基于软件全生命周期的度量过程中企业遇到的最大困难莫过于拿不到完整的数据,各个部门、各个流程、各个系统之间数据相互隔阂,信息很难流通,导致无法从整体的角度对软件过程进行度量。当 DevOps 平台能打通企业的软件生产全生命周期时,数据的割裂性问题自然也就不存在。当然,度量不仅仅是事后的统计分析,更应该提供过程监控的能力,在过程中,通过一些看板(比如任务看板、需求看板、发布看板)、趋势图(比如任务燃尽图、bug 燃尽图)等,提前预知风险,规避风险,持续把控项目质量和产品质量。

总结

我们在建设过程中,每一个模块都需要结合万达的流程规范以及我们的最佳实践共同进行建设,在前期,当一些流程规范不是那么明确的时候,还需要一起讨论,同时规范也不是一蹴而就的,实施过程中发现一些不合适的地方就需要进行修改,这也就带来了需求的反复的可能。以持续交付流水线为例,这个就需要结合万达的环境、发布规范来定制流程,对于其他企业而言,持续交付流水线未必就是这样的一个流程,有可能会少一些环境,也有可能多个预发环境,又或者会把这一个流水线拆分成多个流水线。

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

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

相关文章

生物化学笔记:医学免疫学原理22 肿瘤及肿瘤治疗

肿瘤及肿瘤治疗 免疫疗法 CAR-T细胞介绍

JVM考古现场(二十二):降维打击·用二向箔优化内存模型

"警报!三维堆内存正在经历二维化坍缩!" 我腰间的玄铁令突然震动,在蜀山剑派的量子剑阵中投射出诡异的曼德博分形——这是三体文明发动降维打击的铁证! 楔子:二向箔奇点降临 昆仑镜监控日志: // …

操作系统-PV

🧠 背景:为什么会有 PV? 类比:内存(生产者) 和 CPU(消费者) 内存 / IO / 磁盘 / 网络下载 → 不断“生产数据” 例如:读取文件、下载视频、从数据库加载信息 CPU → 负…

医院数据中心智能化数据上报与调数机制设计

针对医院数据中心的智能化数据上报与调数机制设计,需兼顾数据安全性、效率性、合规性及智能化能力。以下为系统性设计方案,分为核心模块、技术架构和关键流程三部分: 一、核心模块设计 1. 数据上报模块 子模块功能描述多源接入层对接HIS/LIS/PACS/EMR等异构系统,支持API/E…

【MATLAB代码例程】AOA与TOA结合的高精度平面地位,适用于四个基站的情况,附完整的代码

本代码实现了一种基于到达角(AOA) 和到达时间(TOA) 的混合定位算法,适用于二维平面内移动或静止目标的定位。通过4个基站的协同测量,结合最小二乘法和几何解算,能够有效估计目标位置,并支持噪声模拟、误差分析和可视化输出。适用于室内定位、无人机导航、工业监测等场景…

PC主板及CPU ID 信息、笔记本电脑唯一 MAC地址获取

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 PC主板及CPU ID 信息物理 MAC地址获取win11 新电脑 wmic 安装❤️ 欢迎一起学AI…

C++17 信号量模拟实现

C17 信号量模拟实现 一、实现原理 C17 标准库没有原生信号量(C20才有)&#xff0c;但可以通过 std::mutex std::condition_variable 模拟实现。以下是核心逻辑&#xff1a; #include <mutex> #include <condition_variable>class CountingSemaphore { private:…

web后端语言中篇

#作者&#xff1a;允砸儿 #日期&#xff1a;乙巳青蛇年 三月十八 笔者本来打算隔一天给它更完的&#xff0c;但是事情有点多这几天&#xff0c;实在是抱歉。废话不多说直接进入正题。 PHP流程控制语句 什么是流控:流程控制语句用于决定代码的执行顺序。 #注意流程控制语句…

Spine-Leaf 与 传统三层架构:全面对比与解析

本文将详细介绍Spine-Leaf架构&#xff0c;深入对比传统三层架构&#xff08;Core、Aggre、Access&#xff09;&#xff0c;并探讨其与Full-mesh网络和软件定义网络&#xff08;SDN&#xff09;的关联。通过通俗易懂的示例和数据中心网络分析&#xff0c;我将帮助您理解Spine-L…

Vmware esxi 查看硬盘健康状况

起因 硬盘掉盘 - - 使用自带的命令esxcli 列出所有硬盘 esxcli storage core device list[rootlocalhost:~] esxcli storage core device list t10.NVMe____INTEL_MEMPEK1W016GAL____________________PHBT83660BYP016D____00000001Display Name: Local NVMe Disk (t10.NVMe…

4.黑马学习笔记-SpringMVC(P43-P47)

1.SpringMVC简介 SpringMVC技术&#xff08;更少的代码&#xff0c;简便&#xff09;与servlet技术功能相同&#xff0c;属于web层开发技术。 SpringMVC是一种基于java实现MVC模型的轻量级web框架。 轻量级指的是&#xff08;内存占用比较低&#xff0c;运行效率高&#xff09;…

【文件操作与IO】详细解析文件操作与IO (一)

本篇博客给大家带来的是文件操作的知识点. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺便进步 一. …

PMP考试费能报销吗?报销流程是什么?

最近也是到了6月和8月PMP考试的报名高峰期&#xff0c;后台有小伙伴最常问的问题就是&#xff0c;PMP考试费比较贵&#xff0c;能不能报销&#xff1f;报销流程是什么&#xff1f; 先给大家分享一下最新PMP报名消息和考试信息&#xff1a; 添加图片注释&#xff0c;不超过 140…

学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、GlitchPass渲染通道)

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.EffectComposer 后期…

docker部署springboot(eureka server)项目

打jar包 使用maven&#xff1a; <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>17</source><target>17&…

第 7 期:DDPM 采样提速方案:从 DDPM 到 DDIM

本期关键词:采样加速、DDIM 推导、可控性提升、伪逆过程、代码实战 前情回顾:DDPM 的采样瓶颈 在前几期中,我们构建了一个完整的 DDPM 生成流程。但是你可能已经发现: 生成一张图像太慢了!!! 原因是: DDPM 要在 T 个时间步中一步步地去噪,从 x_T → x_0。而通常 T 至…

1panel第三方应用商店(本地商店)配置和使用

文章目录 引言资源网站实战操作说明 引言 1Panel 提供了一个应用提交开发环境&#xff0c;开发者可以通过提交应用的方式将自己的应用推送到 1Panel 的应用商店中&#xff0c;供其他用户使用。由此衍生了一种本地应用商店的概念&#xff0c;用户可以自行编写应用配置并上传到自…

七牛使用任务工作流对音频进行转码

最近工作中有对音频转码的需求&#xff0c;比如 iOS 设备中对 ogg 格式的语音支持力度不够&#xff0c;那么可以讲ogg转码成mp3格式,下面来介绍一下&#xff0c;如果通过七牛&#xff0c;后端自行转码&#xff0c;不需要前端做任何事情。 假设我们存在一个音频的 url&#xff…

基于springBoot+vue的PC 端学习系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决生活上的问题&#xff0c;线上管理系统展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c;在疫…

【Python爬虫基础篇】--1.基础概念

目录 1.爬虫--定义 2.爬虫--组成 3.爬虫--URL 1.爬虫--定义 网络爬虫&#xff0c;是一种按照一定规则&#xff0c;自动抓取互联网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。随着网络的迅速发展&#xff0c;万维网成为大量信息的载体…