从0开始理解DevOps

       

目录

一、DevOps背景

二、DevOps介绍

        DevOps 组成

三、Jenkins

        Jenkins 工作流程

四、云原生与DevOps


        相信你一定听过 DevOps 这个词,那它到底是什么呢?为什么越来越多的互联网企业都在追随使用它?它与云原生有什么关系?本文将带你一起探讨一下。

一、DevOps背景

        公司的业务发展越来越多的依赖软件,而且这种依赖程度越来越重,这也是发展趋势。而软件的开发过程也进入到了敏捷开发,这些年对敏捷开发的要求也越来越高,新业务新功能层出不穷,这就要求能够进行快速试错,甚至一天内升级部署多次都是有可能的,显然传统的模式是难以支持的。

        软件开发最开始由两个团队组成:

  • 开发团队:从开始对接需求,设计系统架构及开发代码,提测,到后期不断地进行迭代更新
  • 运维团队:将开发团队的代码进行部署,然后又测试人员进行测试,最后进行生产环境部署,并希望系统稳定运行

        这两个团队之间经常存在沟通障碍和工作流程不连贯的问题,导致软件周期交付周期长、效率低下、且难以响应快速的时长变化和需求。尽管敏捷开发改善了开发流程,但运维团队往往未能跟上快速迭代的步伐。

        这时就需要一套开发团队和运维团队协同工作的一套软件,即 DevOps。

二、DevOps介绍

        随着技术的不断进步,出现了云计算、容器技术(Docker)、配置管理工具、持续集成和持续部署(CI/CD)工具、代码管理构建工具等技术,为自动化软件交付提供了技术支持,使得快速、频繁、可靠的部署成为可能。

        DevOps 组成

        DevOps(Development & Operations)是开发运维团队协同工作的一套软件,软件开发流程如下:

  1. PLAN:开发团队根据客户目标或产品经理要求指定合理的开发计划
  2. CODE:根据开发计划进行编码过程,这时需要将代码托管到代码管理工具中,如 Git
  3. BUILD:编码工作完成并提交到代码管理工具后,需要用代码构建工具进行构建并打包,代码构建工具常用的有 Maven、Gradle 等
  4. TEST:代码构建成功后需要测试根据测试用例进行测试,如果发现代码中的错误或bug,需要进行修改,并重新构建
  5. DEPLOY:测试团队对代码经过手动测试、自动化测试、压测等步骤后,认定代码已经具备部署条件,这时交由运维团队
  6. OPERATE:运维团队将项目部署到生产环境,这这个过程中会用到容器化技术 Docker、服务编排工具 Kubernetes 等
  7. MONITOR:项目部署上线后要对项目进行持续的监控
  8. INTEGRATE:将监控阶段收集到的信息反馈开发团队,这时开发团队也会收到产品经理关于新功能的迭代,这时会重新进行 PLAN 计划,然后就是循环整个过程

        总体来说,DevOps 强调高效的组织团队之间如何通过自动化工具协作和沟通来完成生命周期,从而更快、更频繁的交付更稳定的软件。

三、Jenkins

        上图中还涉及到一个核心的环节,那就是持续集成与交付(CI/CD),通常使用 Jenkins 进行CI/CD。

        Jenkins 是基于Java开发的开源的持续集成的工具,Jenkins 配合gitlab、 Docker、K8s作为实现DevOps的核心工具。Jenkins最强大的地方在于其插件,Jenkins官方提供了大量插件来自动化CI/CD过程中各种琐碎功能。

        Jenkins 的主要功能如下:

  • 自动化构建和测试:Jenkins 可以自动监听代码库的变化,一旦检测到代码提交就会自动触发构建过程,执行编译、打包等操作,并运行单元测试、集成测试等,确保每次代码提交的质量。
  • 持续集成:支持开发团队频繁的将代码合并到主分支,通过快速反馈机制发现并修复集成错误,加速软件开发流程,减少人工干预,提高开发效率。
  • 持续交付与部署:Jenkins 支持将通过测试的软件包自动部署到测试环境乃至生产环境,实现从代码提交到产品发布的自动化流程,缩短软件交付周期。
  • 插件支持:Jenkins 拥有庞大的插件体系,支持各种版本的系统、构建工具(如 Maven、Gradle)、测试框架、容器技术(Docker)、云服务等,极大的扩展了其他功能。
  • 可视化和报告:提供丰富的构建结果可视化界面,包括构建趋势图、成功率统计等,帮助团队监控构建状态和项目健康度。

        那什么是 CI/CD 呢?

        CI:CI 过程即通过 Jenkins 将代码拉取、构建、制作镜像,然后交给测试人员进行测试,持续集成就是让软件代码可以持续的集成到主干、并自动构建和测试。

         CD:通过 Jenkins 将打好标签的发现版代码拉取、构建、制作镜像 ,然后交给运维人员部署。持续交付指的是让经过持续集成的代码可以进行手动部署,持续部署指的是让可以持续交付的代码随时随地的自动化部署。

        Jenkins 工作流程

        Jenkins 工作流程如下图

        下面详细介绍下这个工作流程,关于 Jenkins 的安装就不过多介绍了,按照教程一步步安装即可,安装好 Jenkins 后需要安装相应的插件,如 git 插件、Maven 插件、Docker 插件、kubernetes 插件等。

  1. 开发团队开发完成后,将代码提交到 git 仓库,然后 Jenkins 就可以对提交的代码进行构建了。
  2. Jenkins 通过项目构建工具(如 Maven),对项目进行构建。
  3. 然后根据项目中 Dockerfile 制作相应的镜像
  4. 如果是测试环境,服务启动后测试人员就能进行测试了。测试通过后需要部署到生产环境,这时需要将镜像部署到 Kubernetes,然后进行相应的服务编排并运行相应的服务。
  5. 通知结果:Jenkins 将构建结果通知发送给相应人员

四、云原生与DevOps

        云原生是一种构建和运行应用程序的方法论,它充分利用了云计算的优势,旨在使应用具备弹性、可移植性和可扩展性。云原生的特点包括:

  1. 容器化:应用及其依赖被打包进轻量级容器中,如 Docker,实现标准化的部署和运行环境。
  2. 微服务架构:将应用拆分成一组小型、独立的服务,每个服务都可独立部署和扩展。
  3. 自动化管理:使用持续集成/持续部署(CI/CD)流水线自动化软件的构建、测试、部署过程。
  4. 服务网格:用于处理服务间通信的复杂性,包括服务发现、负载均衡、监控和安全。
  5. 声明式基础设施:使用如 Kubernetes YAML 文件来描述应用所需的资源和状态,而非命令式操作。
  6. 可观测性:集成监控、日志和追踪工具,确保应用的健康状态可被有效监测。

        DevOps是一种文化和实践,旨在促进开发(Development)和运维(Operations)团队之间的紧密合作,通过自动化工具链实现软件的快速、频繁且可靠的交付。

        云原生为 DevOps 实践提供了理想的基础设施和技术支撑,使得 DevOps 理念得以充分实施。云原生技术如容器编排(Kubernetes)、微服务架构和自动化工具,使得 DevOps 的持续交付、基础设施即代码(IaC)等实践更加高效、灵活。同时,DevOps 文化强调的团队合作、快速反馈和持续改进,也是云原生应用能够快速迭代、持续优化的关键所在。两者结合,不仅加速了软件的开发周期,也提升了应用的稳定性和可维护性,是现代软件工程的最佳实践之一。

往期经典推荐:

从0开始理解云原生架构-CSDN博客

Kubernetes: 从零开始理解K8s架构-CSDN博客

云原生基石:解码Docker镜像分层-CSDN博客

Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践_nacos和sentinel的关系-CSDN博客

Kafka VS RabbitMQ,架构师教你如何选择_rabbitmq和kafka选型-CSDN博客

     

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

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

相关文章

浪潮信息打造业界首款50℃进液温度服务器 PUE逼近理论极限1.0!

在科技飞速发展的今天,浪潮信息以其前瞻性的技术创新思维,再次突破行业极限,推出业界首个支持50℃进液温度的浸没式液冷服务器NF5180G7。这一创新成果不仅展现了浪潮信息在液冷技术领域的深厚实力,更标志着服务器冷却技术的一次重…

力扣hot100:31. 下一个排列

LeetCode:31. 下一个排列 字典序的大小排序: 从前往后对比,如果先出现更小字符的,字典序更小,如果有个字符串结束了,则它更小。string s "112233"和string t "1122334",…

昂辉科技EasySAR-BootLoader上位机产品

近年来,硬件标准化、同质化和软件差异化、复杂化成为了汽车产品研发的重要趋势。与此同时,大量的智能化功能和快速上车的节奏,对软件开发提出了更高的要求。在软硬件解耦的大背景下,建立统一的软件体系和开发工具以紧跟硬件更新迭…

【因果推断python】38_预测模型1

目录 工业界中的机器学习 之前的部分涵盖了因果推理的核心。那里的技术是众所周知和成熟的。他们经受住了时间的考验。第一部分建立了我们可以依赖的坚实基础。用更专业的术语来说,第一部分侧重于定义什么是因果推理,哪些偏差会阻止相关性成为因果关系&…

基于51单片机的烟雾报警器设计-ADC0809

一.硬件方案 火灾报警器采用51单片机为核心控制器,利用气体传感器MQ-2、ADC0809模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片,当环境中可燃气体浓度或温度等发生变化时系统会发出相应的灯光报警信号和声音报警信号,以…

C语言的基本语法与数据类型

引言 数据类型与变量在C语言中是编程的基础。它们决定了代码的存储结构、操作方式和表现形式。本篇文章将深入探讨C语言的基本数据类型、变量的声明与定义、常量的使用以及类型转换等基础知识,帮助读者全面理解并掌握这些核心概念。 基本数据类型 C语言提供了一组丰…

Vatee万腾平台:创新科技,助力企业腾飞

在全球化竞争日益激烈的今天,企业如何借助科技力量实现转型升级,已成为摆在众多企业家面前的重大课题。Vatee万腾平台凭借其卓越的创新科技和专业的服务能力,成为众多企业实现腾飞的得力助手。 一、创新科技,引领企业前行 Vatee万…

【尚庭公寓SpringBoot + Vue 项目实战】公寓管理(十一)

【尚庭公寓SpringBoot Vue 项目实战】公寓管理(十一) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】公寓管理(十一)1、业务介绍2、逻辑模型介绍3、接口开发3.1、保存或更新公寓信息3.2、根据条件分页查询详细信息3.3、根据ID获…

2024.6.14 作业 xyt

使用手动连接,将登录框中的取消按钮使用第二中连接方式,右击转到槽,在该槽函数中,调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c…

西门子学习笔记15 - 位逻辑操作的学习

1、点动操作(按下按钮就启动松开就停止) 2、自锁电路(可以自己保持的状态除非常闭停止按下) 3、取反操作(顾名思义就是反过来1就变成0,0就变成1) 4、置为复位(置位之后如果不复位的话…

(南京观海微电子)——液晶屏显示不良及修复

TFT LCD信号驱动 屏横线 横暗线、暗带、竖线、竖带 原因: 1、COF与玻璃Bonding不良; 2、COF或玻璃遭到损伤(ESD或机械折伤); 3、ASG电路失效(仅对ASG技术panel而言) 解决方案&#xff1…

驱动开发(四):Linux内核中断

驱动开发系列文章: 驱动开发(一):驱动代码的基本框架 驱动开发(二):创建字符设备驱动 驱动开发(三):内核层控制硬件层 驱动开发(四&#xf…

51单片机STC89C52RC——2.3 两个独立按键模拟控制LED流水灯方向

目的 按下K1键LED流水向左移动 按下K2键LED流水向右移动 一,STC单片机模块 二,独立按键 2.1 独立按键位置 2.2 独立按键电路图 这里要注意一个设计的bug P3_1 引脚对应是K1 P3_0 引脚对应是K2 要实现按一下点亮、再按一下熄灭,我们就需…

Python 学习 第二册 第12章 图形界面

----用教授的方法学习。 目录 12.1 创建 GUI 示例应用程序 12.1.1 初探 12.1.2 布局 12.1.3 事件处理 12.1.4 最终的程序 12.1 创建 GUI 示例应用程序 这个微型文本编辑器的需求如下。 让用户能够打开指定的文本文件。 让用户能够编辑文本文件。 让用户能够保存文本…

excel文件被覆盖了怎么恢复?6个方法,文件误点了保存恢复数据(excel篇)

Excel文件误保存覆盖了之前的文档怎么办? 当Excel文件误保存覆盖了之前的文档时,我们可以尝试以下几种方法来恢复数据: 使用Windows的“还原到上一个版本”功能:如果启用了Windows系统的“系统保护”和“文件历史记录”功能&…

nvm 管理多版本node

因有多个前端项目,不同项目使用的node版本不一样,所以在本地使用nvm管理不同的node版本。 一、安装nvm 1)nvm理解 nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具&#xff…

(南京观海微电子)——TFT激光修复技术

激光在显示面板修复方面的应用 液晶面板包括TFT玻璃、CF玻璃、面板以及后段模块组装等一系列工艺制作过程。每段过程中都会产生一定的缺陷,例如亮点、暗点、闪点、碎亮点等。这些缺陷会导致部分区域显示不良,但是我们可以通过暗点化、亮点化、ITO隔离、…

双链表——AcWing.827双链表

双链表 定义 双链表是链表的一种,它的每个节点有两个指针,一个指向前一个节点,一个指向后一个节点。这样使得链表可以双向遍历。 运用情况 频繁进行前后双向遍历操作时非常有用,比如在一些需要来回移动处理数据的场景。可以方…

Linux host映射 设置主机名并通过主机名找到指定系统

一、windows ping linux 1.windows进入到 C:\Windows\System32\drivers\etc\hosts 内,使用edit with notepad打开hosts文件,在下面添加需要寻找的ip以及其主机名。该ip以及主机名即linux的一致。需要查看linux主机名的在终端使用 hostname进行查看&#…

yml配置文件快速上手

yml配置文件快速上手 springboot中,有三种文件可以作为配置文件 xml文件(不推荐,臃肿)application.propertis文件(层次不够分明)yml文件(推荐,层次分明,语法简洁) yml文件的基本语…