最佳实践:CI/CD交付模式下的运维展望丨IDCF

news2024/11/29 10:37:31

李洪锋 启迪万众数字技术(广州)有限公司 ,产品研发中心-系统运维部、研发效能(DevOps)工程师(中级)课程学员

一、DevOps现状

据云计算产业联盟《中国DevOps现状调查报告2023》显示,国内DevOps 落地成熟度处于全面级的受访企业占比高达 41.2%,具备自动化、规范化的特点;17.83% 企业的DevOps实践成熟度处于优秀级,具备平台化、自服务化与度量驱动改进的特点;0.85% 的企业处于卓越级,能够实现 DevOps 的高度智能化、数据化及社会化的特点。

图片

 数据来源:中国信息通信研究院

 

 特别需要关注的是,2020-2023 年 4 年间无流水线工具企业由 26.89% 逐步下降至 19.11%;19.59% 的企业内部虽然无流水线平台,但也实现了构建、部署、测试自动化;流水线平台自动化程度由 17.11% 逐步上升至 28.16%;直接通过流水线进行生产环境交付数据由 16.30% 波动上升至 20.64%。充分说明企业正在通过流水线自动化的编排流程大幅降低交付成本,已经成为持续交付环节重要生产工具。

数据来源:中国信息通信研究院

  • 持续集成、单元测试、持续部署、持续发布、自动构建成为企业在持续交付域提升开发效能的主要方向。从数据反馈显示占比分别为 45.78%、40.40%、34.94%、32.58%、 32.14%。

图片

数据来源:中国信息通信研究院

综上所述,为灵活应对快速变化的业务需求和日益复杂的市场环境,快速提升交付高质量软件或服务的能力,强化组织、技术、流程的结合,加快推动企业数字化转型,一个具备效能度量和质量管控的CI/CD工具链平台是团队生产能力稳步提升的基石,是IT组织“降本增效”的底座,其重要性不言而喻。

二、CI/CD能力级别

持续集成和持续交付(Continuous Integration &Continuous Delivery,CI/CD):以自动化方式,持续地完成软件产品和服务的构建与集成、测试、部署等过程,维持随时可以交付软件产品并发布上线运行的状态。

持续集成和持续交付是 DevOps 产品研发模式最为重要的能力和核心特征之一,是缩短从代码提交到发布上线的周期时间的关键。围绕价值交付的核心,构建可度量、可延续、可优化、可追踪的工具化自动化交付工具链路,通过DevOps产品研发交付模式,以度量管理过程,以反馈检查优化,最终达到效能质量的提升。

参考GB/T 42560-2023 国家标准《系统与软件工程 开发运维一体化能力成熟度模型》,结合实际情况,进行分级别、分阶段的CI/CD能力建设。

等级1

CI/CD

1.1

1.1.1.建设目标

在 DevOps 流程开展 CI/CD 活动。

搭建 CI/CD 的环境,以自动或者半自动方式开展 CI/CD 实践。

等级2

CI/CD
2.1

2.1.1.建设目标

建立 CI/CD 实践标准和规范,并保持更新。

标准先行,帮助研发团队规范 构建与集成 活动。

2.1.2.典型活动

梳理现有 CI/CD 规范标准;

梳理现有 CI/CD 工具平台;

确认 CI/CD 现状及问题;

定义并发布 CI/CD 工程规范和分级标准。

CI/CD
2.2

2.2.1.建设目标

建设自动化系统以支持 CI/CD 实践。

持续建设、集成整合 CI/CD 实践所涉及的多个系统,包括但不限于:代管理(配置管理)系统、代码检查系统、编译构建系统、制品管理系统、自动化测试系统、部署变更系统、自动化流水线系统等,能够促进CI/CD 能力的提升。

2.2.2.典型活动

建设代码管理(配置管理)与变更评审系统;

建设代码质量检测系统;

建设编译构建系统;

建设制品管理系统;

建设自动化测试系统;

建设部署变更系统;

建设自动化流水线系统。

CI/CD  2.3

2.3.1.建设目标

依据标准规范,基于自动化系统在开发和交付中实现 CI/CD。

统一标准且用统一的系统平台落地实施标准,能够保证标准能够被有效执行,也能够加快标准推广实施的速度。

2.3.2.典型活动

按照 CI/CD 规范标准使用系统平台开展 CI/CD 实践。

等级3

CI/CD
3.1

3.1.1建设目标

在组织标准的研发过程中融入 CI/CD 实践。

把 CI/CD 与研发过程的其他环节相结合,在研发流程中内嵌 CI/CD 实践,使得 CI/CD 成为研发流应执行的环节。且 CI实践宜在研发流程中多次执行,以保证研发流程各阶段的质量,保证软件持续保持在随时可以发布的状态。

3.1.2.典型活动

本地开发时随时 CI;

代码提交至中央仓库前自动触发 CI

分支合并前自动触发 CI;

分支合并后自动触发 CI;

CI 应通过后才能触发CD

CI/CD
3.2

3.2.1.建设目标

设定 CI/CD 准入标准。

在项目进展过程中持续丰富 CI/CD内的检查项,不断提高 CI/CD 准入标准,进而提升软件产品或服务的质量。

3.2.2.典型活动

增加单元测试,并设置质量门禁;

增加代码规范检查,并设置质量门禁

增加代码安全检查,并设置质量门禁

增加代码缺陷检查,并设置质量门禁

增加代码可维护性检查,并设置质量门禁、圈复杂度、注释率;

增加代码重复度检查,并设置质量门禁;

增加 P0自动化回归测试,并设置质量门禁;

增加测试环境部署,开发人员可以自测功能;

增加自动化回归测试,并设置质量门禁;

增加制品安全扫描,并设置质量门禁;

增加全量源码安全扫描,并设置质量门禁;

增加服务安全扫描,并设置质量门禁;

增加多种自动化测试类型,并设置质量门禁,如性能测试、压力测试、稳定性测试、异常测试、隐私合规测试、系统兼容性测试等;

增加制品包管理规范,并设置质量门禁。

CI/CD
3.3

3.3.1.建设目标

定期审视 CI/CD 过程和实践,提升工作效率

解决 CI/CD 检查项增加所带来的自动化任务执行时间长、消耗资源多、系统不稳定等问题,以提升CI/CD自动化效率,保障软件开发的速度和质量

3.3.2.典型活动

审视当前 CI/CD 过程和实践;

持续提升 CI/CD自动化效率。

CI/CD
3.4

3.4.1.建设目标

定位CI/CD 失败问题并加以解决。

运用各种技术、方法和工具,在 CI/CD 自动化任务失败的时候,快速定位和解决问题。

3.4.2.典型活动

区分并定义 CI/CD 失败问题类型。例如是程序问题还是 CI/CD 平台问题。

CI/CD 任务失败及时有效通知相关人员。
及时:例如通过即时通信工具发送消息;
有效:例如自动分析问题根因并告知相关人员。

建设自动化构建系统。例如解决问题后可以不用完全重新执行整条流水。而是可以选择继续执行上次失败的流水线。

等级4

CI/CD
4.1

4.1.1.建设目标

使用统计和其他量化手段管理 CI/CD 过程。

开展CI/CD 效能度量,通过数据驱动 CI/CD 能力的持续提升应用统计方法找出CI/CD 过程瓶颈或问题并加以解决。

4.1.2.典型活动

建立研发大数据仓库,对接 CI/CD 平台,收集研发过程数据;

根据 CI/CD 标准,制定度量实践过程和结果的指标;

基于研发大数据仓库,开发度量指标并可视化;

深入分析度量数据,持续运营 CI/CD 优秀实践。

三、CI/CD运维展望

CI/CD可实现更快的迭代速度、更高的软件质量和更高效的团队协作。同时CI/CD对运维发展和转变呈现以下趋势和方向:

1. 自动化程度的加深:随着技术的进步,CI/CD流程中的自动化不仅限于构建和部署,还扩展到了测试、配置管理、监控、日志分析等多个方面。自动化工具和平台的集成能力不断提升,减少人工干预,实现从代码提交到生产环境部署的端到端自动化。

2. 智能化运维(AIOps):结合人工智能和机器学习技术,AIOps能够自动分析海量运维数据,预测故障、优化资源分配、自动处理常见问题,从而提高运维效率和系统的稳定性。CI/CD流程与AIOps的融合,使得运维更加智能化、主动化。

3. 安全性集成:安全不再是事后考虑,而是被嵌入到整个CI/CD流程中,即DevSecOps,包括静态代码分析、动态应用安全测试、依赖项扫描等安全检查,确保每次部署都是经过安全验证的,减少安全漏洞的风险。

4. 容器化与微服务:容器技术和微服务架构的普及,极大促进了CI/CD的发展。容器标准化了应用的打包和部署,微服务则让系统更易于维护和快速迭代,两者结合使得CI/CD流程更加灵活高效。

6. 可观测性和监控:随着系统复杂性的增加,集成强大的可观测性和监控工具变得至关重要。这些工具能够提供实时的性能数据、异常检测和故障定位功能,确保快速响应问题,优化用户体验。

7. 文化与流程的变革:CI/CD不仅仅是技术的变革,更是文化和流程的转变。强调跨职能团队的合作,鼓励持续学习和实验文化,以及建立快速反馈和迭代的机制,是CI/CD成功实施的关键。

以可观测性工程和可靠性工程为例:

可观测性工程

基于CI/CD的可观测性工程是确保软件系统稳定运行、及时发现并解决问题的重要实践。可观测性工程关注于通过收集、分析和展示系统的指标、日志和跟踪数据,能够帮助团队在快速迭代的同时,保持对系统健康状况的精确掌握。体现在以下几个关键点:

1. 集成监控工具:在CI/CD流水线中集成监控和日志管理工具(如Prometheus、Grafana、ELK Stack等),确保新部署的服务或应用能够自动接入监控体系,及时生成并上报监控数据。

2. 日志与跟踪:配置应用以在每个CI/CD阶段生成详细的日志,包括构建、测试、部署等环节。利用分布式跟踪技术(如OpenTracing、OpenTelemetry)捕获服务间调用的完整链路,便于问题追踪和性能瓶颈分析。

3. 健康检查与就绪检查:在部署阶段自动执行健康检查和就绪检查,确保服务部署后即刻可被正确监控,并能迅速响应健康状态查询。这些检查可以是简单的HTTP请求,也可以是更复杂的逻辑判断。

4. 性能与负载测试:将性能测试和压力测试作为CI/CD的一部分,确保新版本在高负载下仍能稳定运行。通过工具(如JMeter、LoadRunner、Gatling)模拟真实用户场景,提前发现性能瓶颈。

5. 指标与阈值设定:定义关键性能指标(KPIs)和业务指标(如响应时间、成功率、吞吐量),并在监控系统中设定合理的报警阈值。当指标超出预设范围时,自动触发告警,及时通知相关人员。

6. 持续反馈与优化:建立闭环反馈机制,收集监控数据,分析部署后性能变化和用户反馈,定期回顾并优化CI/CD流程和可观测性策略,不断提升系统的稳定性和运维效率。

通过将可观测性工程深度融入CI/CD流程,团队可以更快地发现并解决问题,减少故障影响,同时提高开发和运维的效率,为持续交付高质量的软件产品奠定坚实的基础。

可靠性工程

基于CI/CD的可靠性工程是一种集成方法,旨在通过自动化和最佳实践确保软件系统在整个开发生命周期中的稳定性和可靠性。可靠性工程不仅关注于避免故障的发生,还包括了快速检测、隔离和恢复故障的能力。在CI/CD流程中实施可靠性工程主要涉及以下几个方面:

1. 自动化测试:在CI/CD流程中实施全面的自动化测试策略,包括单元测试、集成测试、端到端测试和性能测试,确保代码变更不会引入新的错误或降低系统稳定性。

2. 持续监控与日志管理:集成监控工具和日志管理系统,实现实时监控应用程序性能、资源使用情况和异常行为。这包括配置警报系统,以便在关键指标偏离正常范围时立即通知团队。

3. 混沌工程:通过混沌实验(如使用Chaos Toolkit、Gremlin等工具)故意引入故障,模拟真实世界中可能发生的各种故障场景,以评估系统的健壮性和恢复能力,并据此优化架构和配置。

4. 蓝绿部署/金丝雀发布:利用CI/CD工具支持的部署策略,如蓝绿部署或金丝雀发布,能够在不影响现有用户的情况下逐步推出新版本,快速回滚以减少故障影响范围。

5. 自愈能力:设计系统具备自我检测和自我修复能力,如自动重启故障服务、资源自动扩展、熔断机制等,减少人工干预,提高系统的稳定性。

6. 安全性集成:在CI/CD管道中集成安全扫描和漏洞检测,确保每次部署都经过安全审查,实现DevSecOps,提高系统的安全性,这也是可靠性的重要组成部分。

7. 故障恢复演练:定期进行故障恢复演练,验证灾难恢复计划的有效性,确保团队成员熟悉紧急情况下的操作流程,提高应对突发事件的能力。

8. 性能与稳定性测试:在部署前进行性能和稳定性测试,模拟高负载情况,确保系统在预期的最大负载下仍能稳定运行,优化资源配置,防止性能瓶颈。

9. 持续反馈与改进:建立一个反馈循环,收集生产环境中的数据和用户反馈,分析系统性能和稳定性,持续优化开发流程、测试策略和基础设施配置。

基于CI/CD的可靠性工程不仅增强了软件的可靠性,还缩短了故障恢复时间,提高了团队对复杂系统的管理能力,为用户提供更加稳定可靠的产品和服务。

四、总结

 基于CI/CD的运维正朝着更加自动化、智能化、安全和高效的方向发展,在提升软件交付的质量和速度的同时拓宽了运维的技术视野,呈现出前所未有的广度和深度。未来的CI/CD下的运维将更加智能化、自动化、安全和可持续,以支持企业更快地创新,更稳定地运行,提高运维效率,降低运维成本,进一步提升软件交付的效率,最终提升业务价值和业务竞争力。

参考文献:

[1] GB/T 42560-2023 《系统与软件工程 开发运维一体化能力成熟度模型》,国家标准化管理委员会

[2]《2023年企业数字化转型技术发展趋势研究报告》,中国信通院

[3]《中国 DevOps 现状调查报告2023》,云计算产业联盟

[4]《DevOps IT 效能新基建》,顾黄亮

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

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

相关文章

JUC阻塞队列(四):DelayQueue

1、DelayQueue介绍 DelayQueue 是一个延迟队列,生产者写入一个数据,这个数据具有被直接消费的延迟时间, 让数据具有延迟的特性。 DelayQueue底层也是基于二叉堆来实现的,DelayQueue本就是基于PriorityBQueue 实现的。 二叉堆结构每…

NCL画出来的图模糊问题处理

问题介绍: 如图所示,NCL画出来的图分辨率比较低,图片比较模糊,怎么将分辨率提高? 解决方法: ; 采用这个方法来定义wkswks_type "png"wks_typewkWidth 2500wks_typewkHeight 2500wks gsn_…

网易、网易互娱、360、头条、商汤等公司面试真题....

测试岗/测试开发岗面试真题 来源与网易、网易互娱、360、头条、商汤等公司面试真题 自我介绍 项目中负责什么? 团队几个人?合作情况 为什么要读研 项目/实习介绍 项目中负责什么? 团队几个人?合作情况 项目的方法怎么改进,和别人方…

微信为什么会限制加好友?

微信限制加好友主要是为了防止垃圾信息和滥用行为,包括以下几个原因: 1、防止骚扰:限制加好友可以减少陌生人骚扰和垃圾广告。 2、保护用户隐私:控制好友请求能更好地保护用户的个人信息。 3、提升用户体验:避免用户…

用博达网站群管理平台设计网站时如何创建二级导航

1 介绍 现用博达网站群管理平台设计出的网站只能一级导航,亦即点击首页的顶端导航,直接出现列表页,无法出现二级菜单。二级菜单在网站开发中被称为二级导航。 怎样用博达网站群管理平台制作出二级导航的效果?这个问题在《网站群…

掌握电子邮件的艺术:使用 Mailbird 统一管理您的数字生活

在数字时代,电子邮件已成为我们沟通的骨干。无论是商务交流、家庭联络,还是订阅更新,我们几乎每天都在使用电子邮件。但随着账户数量的增加,管理这些账户变得日益复杂。如何有效地整合和优化您的电子邮件体验?Mailbird…

Arduino调试ESP32常见问题 exit status 1

问题1:代码上传(烧录)报Failed uploading: uploading error: exit status 1大概率原因:没有安装对应的驱动,我的ESP32驱动是CH340点击这里下载CH340 下载后打开,若出现乱码不用在意,点击第一个按…

原生js实现下滑到当前模块进度条填充

<div style"height: 1500px;"></div> <div class"progress-container"><div class"progress-bar" data-progress"90%"><p class"progress-text">Google Ads在Google搜索引擎上覆盖超过90%的互…

浙江大学蒋超实验室在JHM发文揭示日常使用量的一次性纸杯释放的微塑料或可能影响孕期健康

CQ师姐做的一个纸杯微塑料项目&#xff0c;非常有意思&#xff0c;揭示了日常生活中真实来源的孕期微塑料暴露&#xff0c;对生殖和代谢性能的影响和调控机制。我参与了其中的部分实验和分析&#xff0c;学习了养小鼠&#xff0c;灌胃&#xff0c;解剖和部分塑料的定性定量等实…

二、Socket链接方式分类

一、Socket通信基本流程图 1、流程图 2、链接方式 &#xff08;1&#xff09;同步 商业中不会用&#xff0c;会有阻塞的情况出现&#xff1b;举例&#xff1a; 客户端的玩家升级&#xff0c;向服务器发送这条信息&#xff0c;而服务器传输回来需要一定时间&#xff0c;此时…

探索《黑神话:悟空》品质保障的背后:ISO体系认证

《黑神话&#xff1a;悟空》横空出世 8月20日上午10点&#xff0c;国产首款大型3A游戏《黑神话&#xff1a;悟空》正式上线。游戏一经上线便吸引了无数国内外用户的关注&#xff0c;不仅仅是因为其高超的游戏制作技术&#xff0c;极高的画面精度&#xff0c;精良的的视觉和战斗…

如何将平淡无奇的产品推向市场?借助ChatGPT,仅需3秒即可化身短视频创意策划大师,助你的产品一夜成名!

本文通过一系列生动的实例&#xff0c;展示了如何通过ChatGPT生成创意和独特的宣传方式&#xff0c;将平凡或不起眼的产品转化为市场上的明星。从全红婵最爱的小乌龟到棋牌室排烟机&#xff0c;再到食物研磨器的成功案例&#xff0c;我们可以看到&#xff0c;创意和创新的宣传策…

手把手教你如何注册使用Runway Gen3,10秒搞定专业级视频制作

大家好&#xff01;我是YUAN。 今天&#xff0c;我们要介绍的是一款AI视频制作的王者级工具——Runway Gen-3。它不仅能够在短时间内生成高质量的视频&#xff0c;还能满足不同风格和场景的需求。 一、Runway Gen-3是什么&#xff1f; Runway Gen-3是一款功能强大的AI视频生…

jenkins最佳实践(二):Pipeline流水线部署springCloud微服务项目

各位小伙伴们大家好呀&#xff0c;我是小金&#xff0c;本篇文章我们将介绍如何使用Pipeline流水线部署我们自己的微服务项目&#xff0c;之前没怎么搞过部署相关的&#xff0c;以至于构建流水线的过程中中也遇到了很多自己以前没有考虑过的问题&#xff0c;特写此篇&#xff0…

水凝胶结机器人咋自主运动?利用拓扑调用的自我调节!

大家好&#xff0c;今天我们来聊聊一项有趣的研究 —— 水凝胶结机器人。这篇文章《Animating hydrogel knotbots with topology-invoked self-regulation》发表于《Nature Communications》。想象一下&#xff0c;小小的机器人能够像生物一样自主运动&#xff0c;这是不是很神…

极空间Z4Pro,最懂中国人的NAS,为了极影视值得入手

极空间Z4Pro&#xff0c;最懂中国人的NAS&#xff0c;为了极影视值得入手 小伙伴们大家好&#xff0c;我的极空间Z4Pro是在首发的时候交定金购买的&#xff0c;到目前为止也算是用了很长一段时间了&#xff0c;说一下自己的使用体验吧。 首先是这个极空间的外观&#xff0c;并…

【流媒体】RTMPDump—主流程简单分析

目录 1. main函数1.1 初始化socket&#xff08;InitSockets&#xff09;1.2 初始化RTMP&#xff08;RTMP_Init&#xff09;1.3 解析URL&#xff08;RTMP_ParseURL&#xff09;1.4 配置流信息&#xff08;RTMP_SetupStream&#xff09; RTMP协议相关&#xff1a; 【流媒体】RTMP…

MySQL基础操作探秘

ok&#xff0c;前面两个文章介绍了MySQL的安装与配置环境&#xff0c;以及如何进行删除。 那么&#xff0c;接下来探寻数据库的一些基本操作。 首先我们登录上数据库先&#xff1a; 我们要对数据库进行操作&#xff0c;那我们要用到有些命令&#xff0c;这些命令在这里称为&a…

企业财务自动化:RPA机器人的优势与挑战

随着数字化浪潮的推进&#xff0c;企业财务自动化已成为企业提升效率和降低成本的关键策略。在这一背景下&#xff0c;RPA以其独特的优势&#xff0c;正逐渐成为企业财务自动化的重要工具&#xff0c;然而&#xff0c;RPA在实际应用中也面临着一些挑战。本文金智维将围绕RPA机器…

VBA技术资料MF187:写入文件属性及自定义属性

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…