从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.mzph.cn/pingmian/28122.shtml

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

相关文章

VRChat 2024年裁员原因与背景深度分析

VRChat,作为2022年元宇宙/VR社交领域的巨头,近期在2024年宣布裁员计划,其背后原因和背景值得业界尤其是仍在纯元宇宙虚拟空间创业的同仁们重点关注。 一、创始人决策失误 根据CEO的邮件披露,VRChat的创始人因缺乏经验和过度自信…

Java 桥接模式(Bridge Pattern)是设计模式中的一种结构型设计模式,桥接模式的核心思想是将抽象与实现解耦

桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式的核心思想是将抽象与实现解耦,使得它们可以独立扩展。 在桥接模式中,通常包含以下四个…

MySQL之优化服务器设置(四)

优化服务器设置 InnoDB的IO配置 双写缓冲(Doublewrite Buffer) InnoDB用双写缓冲来避免页没写完整所导致的数据损坏。当一个磁盘写操作不能完整地完成时,不完整的页写入就可能发生,16KB的页可能只有一部分被写到磁盘上。有多种多样的原因(崩溃、Bug&am…

【纯干货级教程】深度学习根据loss曲线进行分析调参

相信很多刚刚接触目标检测系列算法小伙伴跑深度学习算法时会有许多困惑,比如训练得出的loss曲线有什么意义?训练的一些参数要如何设置选择?选择哪个算法模型作为baseline、选择哪个参数量/复杂度/深度的模型进行训练最为合适? 本…

生成和链接动态库

生成和链接动态库 在Linux和windows中的动态库是不一样的 linux 的动态库不需要设置导入导出符号,以.os为后缀windows中需要设置导入和导出符号.lib,以及动态库的后缀是dll 1、windows环境 1、创建动态库 项目结构 CMakeLists.txt cmake_minimum_re…

使用Ventoy 替代Win_To_Go更好的随身系统

Ventoy支持在物理机上直接启动安装了 Linux/Windows 系统的 磁盘映像文件 。 系统是在真实物理机上运行,并不是在虚拟机里运行,没有性能损失。支持 Legacy BIOS 和 UEFI 模式。支持从任意磁盘启动磁盘映像。 Windows 支持固定大小以及动态扩展类型的 VH…

设计模式-代理模式Proxy(结构型)

代理模式(Proxy) 代理模式是一种结构型模式,它可以通过一个类代理另一个类的功能。代理类持有被代理类的引用地址,负责将请求转发给代理类,并且可以在转发前后做一些处理 图解 角色 抽象主题(Subject&…

光功率计传感器

光探测仪表: 激光功率计探头按照不同的原理和材料分为热电堆型、光电二极管型以及包含两种传感器的综合探头, 激光能量计则有热释电传感器和热电堆传感器探头 热释电效应传感器: 热释电传感器的工作原理主要是基于热释电效应。当物体处于不同温度时,会发射出不同强度的红…

深入剖析 Laravel 框架:构建高效PHP应用的最佳实践

引言 随着互联网的高速发展,PHP 作为一门广泛使用的服务器端脚本语言,始终备受开发者青睐。而在众多 PHP 框架中,Laravel 凭借其优雅的设计和高效率,成为了构建现代 Web 应用的热门选择。本文将从零开始,探讨如何使用 …

镍电解阳极液深度除铜树脂

摘要&#xff1a;HP686适用于以下行业中的铜、镍等金属选择性吸附&#xff1a; • 可用于锂电正极材料、锂电回收等生产过程中回收镍、铜&#xff0c;料液纯化 • 可在酸性条件下 (pH< 2) &#xff0c;吸附铜离子 • 钴电解液中去除镍离子&#xff0c;纯化电解液 • 可在…

面向对象前置(java)

文章目录 环境配置相关如何在 cmd 任何路径下中 使用 javac(编译) 和 java(运行) 指令path变量的含义javac(编译&#xff09;使用java(运行&#xff09;的使用public class 和 class 的区别 标识符命名规则命名规范 字面量字符串拼接变量的作用域转移字符类型转换接收用户键盘输…

公差基础-配合(互换性和测量基础)-2

过盈配合&#xff1a; 配合的种类&#xff1a; 三种&#xff1a;间隙&#xff0c;过渡&#xff0c;过盈配合&#xff1a; 间隙配合&#xff1a; 过盈配合&#xff1a; 过渡配合&#xff1a; 间隙量&#xff1a;最大间隙减去最小间隙&#xff1b; 配合的公差怎么算&#xff1a…

江协科技STM32学习- 2安装Keil5-MDK

本文是根据哔哩哔哩网站上“江协科技STM32”视频的学习笔记&#xff0c;在这里会记录下江协科技STM32开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技STM32教学视频和链接中的内容。 引用&#xff1a; STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩…

TypeScript入门教程

今天&#xff0c;给大家分享一个自己总结的超详细的TypeScript入门教程电子书。从TypeScript的基础知识开始讲解&#xff0c;包括数据类型、变量、运算符、条件语句、循环结构等基本概念。接着&#xff0c;详细介绍TypeScript中的函数、类和接口等高级特性&#xff0c;以及如何…

Oracle阅读Java帮助文档

进入到Help Center 选择Java 查看Java SE [version]对应版本相关的内容 查看其它版本 查看Java11 javac等相关参数 目录查看java相关命令

【Mac】Luminar Neo for mac(图像编辑软件)软件介绍及同类型软件比较

Luminar Neo软件介绍 Luminar Neo 是一款由 Skylum 开发的功能强大的照片编辑软件&#xff0c;专为摄影师和摄影爱好者设计。它适用于 Mac 和 Windows 平台&#xff0c;提供了一系列先进的编辑工具和功能&#xff0c;使用户能够轻松提升和优化他们的照片。以下是 Luminar Neo …

篮球杯小白+强者

2. 宣读数字【算法赛】 思维题&#xff0c;注意到完全平方数的约数是奇数个&#xff0c;其余都是偶数个。 #include <bits/stdc.h>using namespace std;#define LL long long#define pb push_back#define x first#define y second #define int long long #define endl \n…

在机器学习领域中,One-Hot Encoding是什么

一般来说&#xff0c;机器学习模型要求所有的输入输出变量都必须是数字。如果我们的数据中包含了分类数据&#xff0c;我们必须将它们编码成一些数字&#xff0c;这样我们才可以拿去训练和评测一个机器学习模型。 我们常说的分类数据是不能够直接拿来训练、预测的。因为它们一…

邮件钓鱼--有无SPF演示--Swaks

目录 临时邮箱网址: Swaks 简单使用说明&#xff1a;(kali自带) 操作流程: 无SPF:(直接伪造发信人) 演示1 演示2 演示3 ​编辑 有SPF:--演示 临时邮箱网址: http://24mail.chacuo.net/ https://www.linshi-email.com/ Swaks 简单使用说明&#xff1a;(kali自带) -t –t…

第5章:模型预测控制(MPC)的代码实现

1. 建立 QP 模型&#xff1a; 1.1 车辆模型&#xff1a; 注&#xff1a;使用车辆横向动力学模型 纵向动力学模型&#xff08;误差模型&#xff09; 1.2 QP 问题模型&#xff1a; 注&#xff1a;详细推导见 笔记100&#xff1a;使用 OSQP-Eigen 对 MPC 进行求解的方法与代码-…