CI/CD和 DevOps还在傻傻分不清吗?今日一文让你通透

2023-10-31 13:30

本文主要是介绍CI/CD和 DevOps还在傻傻分不清吗?今日一文让你通透,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

file

基本概念
持续集成

(Continuous Intergration)

​ 持续集成的重点在于构建编译及测试,开发人员每天要提交很多次代码到分支,在分支合并到主干前,需要通过编译和测试识别出问题。持续集成的流程就是通过自动化的构建(主要是构建编译、自动化测试)来验证,从而尽早地发现集成错误。

持续集成的核心意义:通过自动化测试尽早的发现代码的问题。

file

持续交付

(Continuous Delivery):

​ 持续交付指的是将产品尽可能快的发布上线的过程。持续交付是在持续集成基础上的扩展,也就是说除了自动化编译、自动化测试,为了尽快上线我们还需要自动化发布流程,整个流程实现后,根据实际需要,可以周期性的进行产品上线发布,上线方式为人工点击部署实现快速上线。部署环境的先后部署顺序,一般在公司都是开发环境、测试环境、预发布环境(类生产环境)和正式生产环境,如果代码在预发布环境测试通过,那么就可通过手动的方式部署生产环境实现上线的目的。

持续交付的核心意义:尽快的将最终的产品发布到线上环境,给用户使用。持续交付是每个企业追求的目标,我们常说的CI/CD里的CD一般指的就是持续交付。

file

持续部署

(Continuous Deployment):

​ 持续部署就是在持续交付的基础上,将编译、测试、打包部署到生产环境的过程做成自动化。

​ 持续部署的核心意义:持续的将迭代的需求自动化的方式部署到生产环境。一般来说,非生产环境的持续部署基本都能实现。但生产环境的持续部署并不是每个企业都能做到,主要原因是受限于各种系统功能依赖、自动化测试不完善等因素,自动化一旦部署到生产,将可能造成严重生产事故。

file

说明:无论是持续集成、持续交付还是持续部署,如果要实现整个流程,基本上离不开CI服务器。

持续集成
特点
  • 快速定位错误,测试环节可以及时暴露问题;
  • 避免大幅度偏离主干,借助统一的代码库;
  • 减少不必要的成本投入,可以自动化解决的重复乏味的事情,没必要浪费人力和时间;
工作流程

file

工作阶段

持续集成工作流程大体包括这么几个阶段:

  • 初始化CI流程

    基本的CI流程的配置,比如脚本、定时任务等。

  • 拉取最新代码

    从源码仓库拉取最新代码到构建服务器磁盘上。

  • 构建

    一般源码仓库自包含构建,可通过配置的脚本触发执行构建。比如Java的构建一般基于Maven或Gradle。

  • 执行测试

    测试阶段一般包含单元测试和集成测试。Java中的单元测试常指JUnit。

  • 结果处理

    CI流程执行的最后结果要么是成功,要么是失败,结果需要通知给对应的人员,一般的通知方式有邮件、钉钉、短信。

集成工具
  • Travis CI

  • Bamboo

  • TeamCity

  • CircleCI

  • Gitlab CI

  • Jenkins

DevOps
概念

DevOps这个词,其实就是Development(开发)和Operation(运维)两个词的组合。

​ DevOps 不是一项技术,也不是一套流程和方法论,更不是一套简单的工具产品。DevOps的维基百科定义是这样的:DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营(运维)和质量保证(QA)部门之间的沟通、协作与整合。

​ 通过实践 DevOps,可以将开发、测试、运维之间的工作串联起来,以持续构建、自动化测试、持续发布为目标,将所有流程全部自动化,最大化减少了重复性的人力投入。同时,基础环境的自动化构建也降低了由于人的原因带来的意外风险。下图为DevOps所包含的流程:

file

​ DevOps 这个词是Patrick Debois 于2009 年创造的。出生于比利时的Patrick 先生曾经是一名苦闷的IT 咨询师,饱受开发和运维相互割裂及伤害之苦。2009 年他参加了一个技术大会,在会上听了名为10+ Deploys Per Day: Dev and Ops Cooperation at Flickr 的演讲,深受启发,并创造了DevOps 这个词。

​ 目前,DevOps处于高速增长的阶段。尤其是在大企业中,DevOps受到了广泛的欢迎。越大的企业,越喜欢DevOps。包括Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Walmart、Sony等公司,都在采用DevOps。

工具链

​ 由于DevOps是一种跨职能的工作模式,因此实践过程需要使用不同的工具集(被称为 “工具链”),而不是单一的工具集。这些工具链应该符合以下一个或多个类别,这些类别反映了开发和交付过程中的关键环节:

  • 编码—代码开发和审查、源代码管理工具、代码合并

  • 构建—持续集成工具,构建状态

  • 测试—持续测试工具,提供快速、及时的业务风险反馈

  • 发布—变更管理、发布审批、发布自动化

  • 配置—基础设施配置和管理,基础设施作为代码工具的基础设施

  • 监控—应用性能监控、终端用户体验

DevOps生态圈工具链图:
file

常用工具

​ DevOps 需要要通过技术工具链完成持续集成、持续交付、用户反馈和系统优化的整合。工具链包括版本控制&协作开发工具、自动化构建和测试工具、持续集成&交付工具、部署工具、维护工具、监控,警告&分析工具等等。

  • 版本控制&协作开发:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
  • 自动化构建和测试:Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit
  • 持续集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
  • 容器平台:Docker、Rocket、Ubuntu(LXC)、第三方厂商如(AWS/阿里云)
  • 配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
  • 微服务平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere
  • 服务开通:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
  • 日志管理:Logstash、CollectD、StatsD
  • 监控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kiban
DevOps的目标
  • 更快的上市时间

  • 提高部署频率

  • 更短的修复时间

  • 降低发布失败率

  • 更快的平均恢复时间

总结来说DevOps的目标是最大限度地提高运营流程的可预测性、效率、安全性和可维护性。

小结
两者关系
  • 由DevOps的流程和工具链我们可以得知,DevOps 是持续集成思想的延伸

  • 持续集成/部署是 DevOps 的技术核心,在没有自动化测试、持续集成/部署之下,DevOps就是空中楼阁。

本文由传智教育博学谷教研团队发布。

如果本文对您有帮助,欢迎关注点赞;如果您有任何建议也可留言评论私信,您的支持是我坚持创作的动力。

转载请注明出处!

这篇关于CI/CD和 DevOps还在傻傻分不清吗?今日一文让你通透的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/315677

相关文章

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

Prometheus与Grafana在DevOps中的应用与最佳实践

Prometheus 与 Grafana 在 DevOps 中的应用与最佳实践 随着 DevOps 文化和实践的普及,监控和可视化工具已成为 DevOps 工具链中不可或缺的部分。Prometheus 和 Grafana 是其中最受欢迎的开源监控解决方案之一,它们的结合能够为系统和应用程序提供全面的监控、告警和可视化展示。本篇文章将详细探讨 Prometheus 和 Grafana 在 DevO

使用Azure Devops Pipeline将Docker应用部署到你的Raspberry Pi上

文章目录 1. 添加树莓派到 Agent Pool1.1 添加pool1.2 添加agent 2. 将树莓派添加到 Deployment Pool2.1 添加pool2.2 添加target 3. 添加编译流水线3.1 添加编译命令3.2 配置触发器 4. 添加发布流水线4.1 添加命令行4.2 配置artifact和触发器 5. 完成 1. 添加树莓派到 Agent Pool

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340

一文说清什么是AI原生(AI Native)应用以及特点

引言:智能新纪元 如今,走在街头,哪儿不被智能科技包围?智能音箱、自动驾驶汽车、聊天机器人......这些都在用不同的方式提升我们的生活体验。然而,究竟什么才能称得上“AI原生应用”呢? 什么是AI原生?   AI原生不仅仅是简单地引入人工智能功能。真正的AI原生应用犹如一个智慧的“大脑”,它的每一个决策都依赖于深度学习与数据分析。以Siri为例,它通过学习用户的习惯和需求,提供个性化的

世界公认十大护眼灯数据出炉!一文看懂孩子用的台灯哪个牌子好

近年来,随着科技的迅猛发展,诸如智能手机、电脑等电子设备在工作、学习及娱乐中的应用日益广泛,人们对这些设备的依赖程度也随之加深。然而,长时间面对屏幕不可避免地给眼睛带来伤害,如眼疲劳、干燥甚至近视等问题。因此,市场对能够缓解眼疲劳的照明产品的需求日益增长。这类护眼照明产品通常采用无频闪、无紫外线辐射等技术,旨在减少对眼睛的潜在危害,有效保护视力健康,并降低眼疾的发生率。随着护眼台灯的不断创新进步,

一文详解go底层原理之垃圾回收

1 前置知识 1.1 三色回收法 三色回收法在gov1.5版本时是主流的gc方式 简单介绍一下流程: 暂停程序执行流程(开启STW)将新创建的对象全部标记为白色从根节点开始遍历,把遍历到的第一层全部改为灰色遍历一次灰色集合,将灰色集合引用对象变为黑色重复上述步骤,知道没有灰色对象清除白色对象结束STW 1.2 STW 上述1.1所说的STW就是指的stop the world,简单的说