首页 > 其他分享 >DevOps实战笔记-DevOps平台设计和开发

DevOps实战笔记-DevOps平台设计和开发

时间:2023-03-22 14:45:08浏览次数:51  
标签:实战 CI Continuous DevOps 笔记 CD 发布 测试

DevOps实战笔记-DevOps平台设计和开发

1 简介

1.1 DevOps概述

  • 最初是瀑布模型,后来是敏捷开发,现在是DevOps,这是现代开发人员构建出色的产品的技术路线。
    在这里插入图片描述
    在这里插入图片描述
  • DevOps早在 2009 年就已经被提出来了。
  • 单纯从字面上来理解,DevOps 是Dev(开发人员)+Ops(运维人员),虽然名字来源于开发和运维的缩写,但DevOps并不是简单的就是开发加运维。
  • DevOps 所涵盖的角色范围会更广:除了开发、测试、运维还会涉及到项目经理、产品经理,甚至和销售、市场等各个部门,跨职能部门互相合作,完成某一项目或任务。
  • DevOps是通过工具,自动化,来达到这种通过工具链与持续集成、交付、反馈、优化进行端到端整合,完成无缝的跨团队、跨系统协作。即DevOps是一种协作方式

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

1.2 DevOps推崇文化

  • 尊重(Respect)
  • 正视失败(Healthy attitude about failure)
  • 不埋怨(Avoiding Blame)
  • 精益求精
  • 工程质量文化
  • 快速验证文化
  • 客户导向文化

1.3 CI/CD

CI/CD是DevOps最佳实践手段。
CI / CD的采用改变了开发人员和测试人员如何发布软件。
在这里插入图片描述
最初是瀑布模型,后来是敏捷开发,现在是DevOps,这是现代开发人员构建出色的产品的技术路线。随着DevOps的兴起,出现了持续集成(Continuous Integration)、持续交付(Continuous Delivery) 、持续部署(Continuous Deployment) 的新方法。传统的软件开发和交付方法正在迅速变得过时。从历史上看,在敏捷时代,大多数公司会每月,每季度,每两年甚至每年发布部署/发布软件。然而,现在,在DevOps时代,每周,每天,甚至每天多次是常态。当SaaS正在占领世界时,尤其如此,您可以轻松地动态更新应用程序,而无需强迫客户下载新组件。很多时候,他们甚至都不会意识到正在发生变化。开发团队通过软件交付流水线(Pipeline)实现自动化,以缩短交付周期,大多数团队都有自动化流程来检查代码并部署到新环境。

1.3.1 CI(Continuous integration)持续集成

介绍

CI(Continuous integration)即持续集成。在CI环境中,开发人员将会频繁地向主干提交代码。这些新提交的代码在最终合并到主干前,需要经过编译和自动化测试流进行验证。
在这里插入图片描述

要求

  • 团队需要为每个新功能、代码改进、或者问题修复创建自动化测试用例。
  • 你需要一个持续集成服务器,它可以监控代码提交情况,对每个新的提交进行自动化测试。
  • 研发团队需要尽可能快的提交代码,至少每天一次提交。

优点

  • 通过自动化测试可以提早拿到回归测试的结果,避免将一些问题提交到交付生产中。
  • 发布编译将会更加容易,因为合并之初已经将所有问题都规避了。
  • 减少工作问题切换,研发可以很快获得构建失败的消息,在开始下一个任务之前就可以很快解决。
  • 测试成本大幅降低,你的CI服务器可以在几秒钟之内运行上百条测试。
  • 你的QA团队花费在测试上面的时间会大幅缩短,将会更加侧重于质量文化的提升上面。

1.3.2 CD(Continuous Delivery)持续交付

介绍

CD(Continuous Delivery)即持续交付。它可以让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。
在这里插入图片描述

要求

  • 你需要有强大的持续集成组件和足够多的测试项可以满足你代码的需求。
  • 部署需要自动化。触发是手动的,但是部署一旦开始,就不能人为干预。
  • 你的团队可能需要接受特性开关,没有完成的功能模块不会影响到线上产品。

优点

  • 发布频率更快,因为你不需要停下来等待发布。每一处提交都会自动触发发布流。
  • 在小批量发布的时候,风险降低了,发现问题也可以很轻松的修复。
  • 客户每天都可以看到我们的持续改进和提升,而不是每个月或者每季度,或者每年。

1.3.3 CD(Continuous Deployment)持续部署

介绍

CD(Continuous Deployment)即持续部署。在CD环境中,通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,任何修改通过了所有已有的工作流就会直接和客户见面,只有当一个修改在工作流中构建失败才能阻止它部署到产品线。
持续部署是一个很优秀的方式,可以加速与客户的反馈循环,但是会给团队带来压力,因为不再有“发布日”了。开发人员可以专注于构建软件,他们看到他们的修改在他们完成工作后几分钟就上线了。

要求

  • 研发团队测试理念比较完善。测试单元的健壮性直接决定你的交付质量。
  • 你的文档和部署频率要保持一致。
  • 特征标志成为发布重大变化过程的固有部分,以确保您可以与其他部门(支持,市场营销,公关…)协调。

优点

  • 发布频率更快,因为你不需要停下来等待发布。每一处提交都会自动触发发布流。
  • 在小批量发布的时候,风险降低了,发现问题也可以很轻松的修复。
  • 客户每天都可以看到我们的持续改进和提升,而不是每个月或者每季度,或者每年。

2 优缺点

2.1 优点

  • 提高发布的频率
  • 更快地将产品新功能推向市场
  • 避免发布的失败率
    在这里插入图片描述

2.2 缺点

3 工具集

3.1 DevOps工具集

  • 编码:代码开发和审阅,版本控制工具、代码合并工具
  • 构建:持续集成工具、构建状态统计工具
  • 测试:通过测试和结果确定绩效的工具
  • 打包:成品仓库、应用程序部署前暂存
  • 发布:变更管理、发布审批、发布自动化
  • 配置:基础架构配置和部署,基础架构即代码工具
  • 监控:应用程序性能监视、最终用户体验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 CI/CD工具

在这里插入图片描述

4 应用

在这里插入图片描述

参考

1、
2、持续集成cicd和devops
3、DevOps研发模式下CI/CD实践详解指南
4、DevOps、CI/CD
5、DevOps漫谈之一:DevOps、CI、CD都是什么鬼?
6、什么是DevOps?
7、什么是CICD
8、Jenkins与Docker的自动化CI/CD实战
9、Kubernetes中的CI/CD
10、软件开发 CI、CD的简要思维导图,以及常用的软件
11、谁才是世界上最好的 CI/CD 工具
12、DevOps 实践体系和流程总结

 

标签:实战,CI,Continuous,DevOps,笔记,CD,发布,测试
From: https://www.cnblogs.com/data159/p/17243877.html

相关文章

  • js笔记
    forEachmap对原函数的影响arr1=[{a:1},{a:2},{a:3},{a:4}];arr2=[1,2,3,4];//forEach没有返回值arr1.forEach(i=>{//引用类型整个赋值不变i=i.a......
  • css笔记
    水平布局这段时间编写静态页面,学习了几种水平布局,其中有不小的差异和注意事项,特此记录汇总一下。1.display:inline-block将元素修改为行内块元素,可以在不脱离文档流的......
  • 【云原生实战】DevOps基础与实战项目
    【云原生实战】DevOps基础与实战项目DevOps简介DevOps是一系列做法和工具,可以使IT和软件开发团队之间的流程实现自动化。其中,随着敏捷软件开发日趋流行,持续集成(......
  • 【数据结构】数组与广义表 - 笔记
    数组与广义表的一章相对更为简单,第1,2节都是很熟悉的数组相关定义、实现等。因此这篇博客的讲述重点放在第3节“特殊矩阵的压缩存储”中的“稀疏矩阵”的存储以及第4节“......
  • 火遍大厂的Service Mesh服务实战课程 从组件到架构全方位解读微服务之Service Mesh
    云原生时代微服务的挑战随着近年来云计算技术的快速发展,软件开发也从传统的单体应用到SOA以及时下流行的微服务,均随着技术的演变发生巨大的变化,无论是对开发人员还是......
  • (2023版)一套教程搞定k8s安装到实战 | Kubernetes学习路线
    视频来源:B站《(2022版)最新、最全、最详细的Kubernetes(K8s)教程,从K8s安装到实战一套搞定》一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ......
  • 最小割树学习笔记
    前言最小割树(Gomory-HuTree)通过分治的思想,将图中的最小割关系建成一棵带权了树上问题。它的主要用途是求解全源最小割/最大流。前置知识:一种快速的最大流算法(Dinic/......
  • 数据结构笔记1 绪论 概念
    最近这一段时间在学习数据结构。感觉还是很值得的。有老大的话说就是这次投资成功了。开始决定学习的时候买了一本书《数据结构(C语言版)》相信大家都看过吧。是严蔚敏老师......
  • 数据结构笔记4 栈
    栈的定义和概念栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。(1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。(2)当表中没有元素......
  • 使用Jieba分词学习PaddleNLP(学习笔记)
    最近疫情肆虐,实现了我在家办公的愿望,也有更多的时间学习了,于是我参加百度深度学习集训营,刚刚接触新领域,以下是我整理的学习笔记,与大家分享:首先是此次的作业帖:​​h......