DevOps是什么?DevOps能够给我们带来什么?

news2024/12/23 3:38:39

在这里插入图片描述

目录

    • 专栏导读
    • 一、DevOps是什么?
    • 二、为什么会出现DevOps?
      • 1、容器化技术的发展,微服务架构的发展,直接促进了DevOps的迅速发展
      • 2、敏态需求的增加,即探索性工作的增加
      • 3、软件开发活动在企业经营活动中占比的不断增加
      • 4、企业存在对消除浪费的需求
    • 三、DevOps的优势
    • 四、DevOps生命周期
    • 五、DevOps三大原则
      • 1、流动原则
      • 2、反馈原则
      • 3、持续学习与实验原则
    • 六、快速实现DevOps

专栏导读

🏆作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 ,专注Java硬核干货分享,立志做到Java赛道全网Top N。

🏆本文收录于Java基础教程系列(进阶篇),本专栏是针对大学生、初级Java工程师精心打造,针对Java生态,逐个击破,不断学习,打通Java技术栈

🏆订阅后,可以阅读Java基础教程系列(进阶篇)中全部文章包含Java基础、Java高并发、Spring、MySQL等Java进阶技术栈

🏆还可以订阅其姐妹篇Java基础教程系列,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例理论结合实战,实现Java的轻松学习

🏆哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师。

🏆面试福音:10万字208道Java经典面试题总结(附答案)

大家好,我是哪吒。

本系列为SpringCloud微服务系列,上一期分享了 图解Nginx,系统架构演变 + Nginx反向代理与负载均衡,今天分享DevOps,读哪吒编程,品技术人生。

一、DevOps是什么?

DevOps 是 Development 和 Operations 的组合词。它是一组过程、方法与系统的统称,用于促进开发(应用程序 / 软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

在这里插入图片描述
它是一种重视“软件开发人员(Dev)”和“IT 运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠,把敏捷开发部门和运维部门之间的围墙打通,形成闭环。

在这里插入图片描述

在 DevOps 流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。

二、为什么会出现DevOps?

我觉得根本原因有如下几点:

1、容器化技术的发展,微服务架构的发展,直接促进了DevOps的迅速发展

2、敏态需求的增加,即探索性工作的增加

软件开发从传统的瀑布流方式到敏捷开发,再到现在对敏捷开发提出了更高的要求,近些年创新型的应用不断涌现,在这些应用的研发过程中多采用小步快跑、快速试错的方式,这些探索性工作要求运维能够具备一天发布多次的能力,需要企业完成由稳态到敏态的转变。

3、软件开发活动在企业经营活动中占比的不断增加

业务发展对软件的依赖由轻度依赖、中度依赖发展到目前的重度依赖。

4、企业存在对消除浪费的需求

  • 软件开发活动在企业中的位置越来越重要,而像企业经营活动一样,软件开发活动中也存在着许多的浪费,企业管理上必然存在着 「识别并消除浪费」 的需求。
  • 软件开发中的浪费包括不必要和必要的浪费,不必要的浪费有:无人使用的功能、软件bug、等待测试、等待审批等;必要的浪费包括:工作项移交、测试、项目管理等。

三、DevOps的优势

工程效率提升50%,这是一个真实的案例。
在这里插入图片描述

DevOps 的主要优势在于,自动化流程可以比人员更快,更可靠地执行重复操作。对于组织而言,让开发人员或其他人员整天构建和部署代码既不可行,也无济于事。使这些重复性任务自动化可以使开发人员腾出精力去做自己最擅长的工作 ~ 修改代码。

这样做是允许在几分钟之内构建和部署代码,这仅受组织选择管理其DevOps管道的方式的限制。这意味着从开发功能或错误修正到向最终用户提供更好的体验之间的时间可以大大缩短,从而使用户更加满意。

它还创建了更好的反馈循环。新功能越早交付给用户,组织就越早可以收集反馈和指标并深入了解用户对其产品的喜好。这使组织保持敏捷并为创新提供了更好的环境。

四、DevOps生命周期

DevOps生命周期主要包括产品(策划、研发、运营、推出)、项目(立项、执行、完工),而敏捷、持续集成、持续部署、持续交付都是 DevOps 的一个局部的阶段。

在这里插入图片描述
DevOps 在支持全生命周期的过程,要以产品的视角来看待,真正进行交付的时候,也要以产品为维度进行组织的设立。

DevOps 的核心是一组工具和实践,可帮助组织更可靠,更快地构建,测试和部署软件。DevOps 使组织能够比具有传统开发和发布周期的组织更快地发展和交付其产品,从而可以提供竞争优势。与其每天两周或更长时间发布一次版本,不如每天向用户交付新功能,并且可以在数小时内部署错误修正,所有这些都遵循相同的可重复自动化流程。

五、DevOps三大原则

在这里插入图片描述

1、流动原则

「加速」 从开发、运维到交付给客户的流程;

  1. 坚持少做,产品开始开发时采用 MVP 原则,产品迭代时要适时做减法;
  2. 持续分解问题,大的变更或需求拆解为一系列小的变更,快速解决;
  3. 工作可视化,采用 Sprint 看板将工作可视化;
  4. 控制任务数量,减少前置时间,降低测试人员的等待时间;
  5. 减少交接次数,减少不必要的沟通和等待;
  6. 持续识别和改善约束点,提高搭建环境、需求文档、QA、开发、运维的生产力;
  7. 消除价值流中的困境和浪费;

2、反馈原则

建设 「安全可靠」 的工作体系;

  1. 在复杂系统中安全地工作;
  2. 及时发现问题;
  3. 在源头保障质量;
  4. 为内部客户优化工作;

3、持续学习与实验原则

采用科学的工作方式,将对组织的 「改进和创新」 作为工作的一部分。

  1. 建立学习型组织和安全文化;
  2. 将日常工作的改进制度化;
  3. 把局部发现转化为全局优化;
  4. 在日常工作中注入弹性模式;
  5. 领导层强化学习文化;

六、快速实现DevOps

在这里插入图片描述

开发人员完成了为其小部件的新功能编写代码。他们将代码提交到功能分支,该功能分支在其开发计算机上启动了一些轻量级测试,检查是否存在任何代码样式问题,同时还扫描具有新公开的安全漏洞的软件包。开发人员提交拉取请求以将其代码合并到代码存储库中,该代码存储库向团队聊天发送通知。

团队中的另一位开发人员检查了代码更改,在发现代码中没有问题之后,批准了请求请求。该代码会自动合并到开发分支中,从而开始构建过程。构建服务器将克隆 developer分支,安装所有软件包依赖项并构建窗口小部件。生成服务器会运行单元测试和集成测试,以确保新功能不会在小部件的其他部分引起任何退步。

每个测试都通过了,构建成功。根据代码库中定义的最佳实践配置,将在云中自动配置一个新容器,并部署小部件。

此时,组织有两个选择。他们可以选择将更新后的窗口小部件自动发布到生产环境中,并使所有用户或选择接收最新功能的部分用户可以使用该功能。自动部署到生产中称为连续部署(CD)。

或者,组织可以选择仅将功能发布到用户验收测试(UAT)环境中,然后根据预定义的时间表手动批准将发布发布到生产中。在管道中添加手动审批流程通常称为“持续交付”(CD的另一种形式)。

无论是否涉及手动步骤,一旦将小部件成功部署到生产中,都将执行附加的自动化测试。其他工具收集有关性能和用户行为的指标,这些指标将提供给IT运营和开发团队,以提供实时反馈,突出显示潜在的错误并帮助塑造新功能。

对于基本的 DevOps 管道,这是一个相当典型的过程,但具体细节取决于组织。

一些组织倾向于在生产环境中快速部署,将新功能隐藏在功能标记后面,以允许向用户群分阶段发布。其他人则更喜欢使用更传统的开发,测试和生产环境结构,在此结构中,功能被批量部署并在部署到生产之前通过多个手动门缓慢发布。

DevOps 可以根据组织或项目的特定需求进行定制。

该过程趋于发展,添加其他测试以生成更安全的应用程序,或找到优化管道以加快构建速度并减少人工干预的方法。

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

Java学习路线总结,搬砖工逆袭Java架构师

10万字208道Java经典面试题总结(附答案)

Java基础教程系列

Java基础教程系列(进阶篇)

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

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

相关文章

【华为OD机试模拟题】用 C++ 实现 - 水仙花数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明水仙花数题目输入输出描述示例一输入输出说明示例二输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。…

【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…

基于stm32计算器设计

这里写目录标题 完整de代码可q我获取1 系统功能设计2 系统硬件系统分析设计2.1 STM32单片机核心电路设计2.2 LCD1602液晶显示模块电路设计2.3 4X4矩阵键盘模块设计3 STM32单片机系统软件设计3.1 编程语言选择3.2 Keil程序开发环境3.3 FlyMcu程序烧录软件介绍3.4 CH340串口程序烧…

【华为OD机试模拟题】用 C++ 实现 - 最近的点(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明最近的点题目输入输出示例一输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址…

【基础篇0】Linux下ANACONDA与TF-LITE环境配置

0 写在前面:一些摸索与总结 对于Linux系统,我发现不管是电脑x86的Ubuntu还是树莓派arm的raspberry系统,在系统安装完毕后,总是自带一个特定版本的python.   例如我的ubuntu22.04自带的python版本是3.10,而高版本的py…

Vue3之组件

何为组件 组件化的概念已经提出了很多年了,但是何为组件呢?组件有啥优势?本文将会做出解答,首先我们需要弄清楚何为组件。在VUE的官网中的解释是: 组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对…

Android 基础知识4-3.2 EditText(输入框)详解

一、EditText(输入框)介绍 EditText在开发中也是经常使用的控件,比如,要实现一个登录页面,需要用户输入账号、密码等信息,然后我们或得用户输入的内容,把它交给服务器来判断。因此,这…

【模拟集成电路】分频器(DIV_TSPC)设计

分频器(DIV_TSPC)设计前言一、DIV工作原理二、DIV电路设计(1)32分频原理图(2)D触发器原理图(3)D锁存器原理图(4)三输入与非门原理图三、DIV仿真测试32分频器测…

k8s学习之路 | Day15 k8s 中的 yaml 语法

文章目录yaml 基础什么是 yaml&#xff1f;yaml 特性适用场景基本语法规则数据类型yaml 对象yaml 数组yaml 纯量yaml 引用k8s 中的 yaml 语法\<string>\<Object>\<map[string]string>\<[]Object>\<boolean>示例 yaml 说明我在学习过程中&#xf…

【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明最多获得的短信条数题目输入输出示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过…

优化WebView实现H5秒开

WebView与原生对比差在哪里&#xff1f;这里引用百度APP图片来说明。百度的开发人员将这一整个过程划分为了四个阶段&#xff0c;并统计出了各个阶段的平均耗时。可以看到&#xff0c;在初始化组件阶段就花费了 260 ms&#xff0c;首次创建耗时均值为 500 ms&#xff0c;毫无疑…

7-vue-2

vue3.2 自定义全局指令、局部指令 // 在src目录下新建一个directive文件&#xff0c;在此文件夹下新建一个index.js文件夹&#xff0c;接着输入如下内容 const directives (app) > {//这里是给元素取得名字&#xff0c;虽然是focus&#xff0c;但是实际引用的时候必须以v…

为赋能,创共赢~ 〖TFS_CLUB社区〗-〖星荐官计划〗来袭~ 期待各位小伙伴的加入~

文章目录❤️‍&#x1f525; TFS社区介绍❤️‍&#x1f525; 星荐官计划在直播结束之后&#xff0c;有几位小伙伴跟我说&#xff0c;想法是好的&#xff0c;但是会很难搞。试想一下如果真的是很容易做的事情&#xff0c;那岂不是人人都可以做&#xff1f;正因为难做&#xff…

PyQt5数据库开发2 5.2 QSqlRelationalTableModel

目录 一、Qt窗体设计 1. 新建Qt项目 2. 添加组件 3. 添加资源 4. 添加Action 5. 添加工具栏 6. 添加菜单项 7. 添加退出功能 二、SQL Server下建表插数据 1. 建立表 2. 插入数据 3. 单表数据 4. 联合查询 三、代码实现 1. 新建项目目录 2. 编译窗体文件和资…

[计算机网络(第八版)]第一章 概述(章节测试/章节作业)

随堂作业 练习版(无答案版) 1.2 因特网概述 1【单选题】因特网的前身是1969年创建的第一个分组交换网 A、internetB、InternetC、NSFNETD、ARPANET 2【单选题】因特网采用的核心技术是 A、TCP/IPB、局域网技术C、远程通信技术D、光纤技术 1.3 三种交换方式&#xff1a;电路…

mysql数据库表的创建与查看

mysql数据库表的创建与查看 一、mysql查看 查看所有数据库 show databases切换数据库 use 数据库名查看该数据库下所有的表名 show tables查看表的结构 desc 表名二、mysq创建 创建数据库 create database 数据库名;创建数据库设置编码 drop database if EXISTS dbname; creat…

Gehpi的网络布局

Gehpi的网络布局1. 力引导布局2. 辅助布局布局是网络可视化中的重要概念&#xff0c;指将点和边通过某种策略进行排布&#xff0c;应尽可能满足以下4个原则&#xff1a; 节点均匀分布在有限的区域内避免边的交叉和弯曲保持边的长度一致整体布局能反映图内在的特性 Gephi的布局…

flask入门-3.Flask操作数据库

3. Flask操作数据库 1. 连接数据库 首先下载 MySQL数据库 其次下载对应的包: pip install pymysql pip install flask-sqlalchemy在 app.py 中进行连接测试 from flask import Flask, request, render_template from flask_sqlalchemy import SQLAlchemyhostname "1…

Facebook广告投放运营中的关键成功因素是什么?

在当今数字化的时代&#xff0c;广告投放已经成为了各种企业获取市场份额和增加品牌曝光的重要手段之一。Facebook作为全球最大的社交媒体平台之一&#xff0c;其广告投放运营的成功&#xff0c;将直接影响企业的品牌推广和市场营销效果。本文将探讨Facebook广告投放运营中的关…

浅谈光流跟踪之KLT稀疏光流跟踪算法

0 简介 在学习vins-mono过程中&#xff0c;算法前端采用基于KLT光流的跟踪方法&#xff0c;对光流和KLT光流进行简单的总结。包括LK光流跟踪算法原理&#xff0c;基于金字塔改进的LK光流跟踪&#xff0c;KLT光流跟踪算法&#xff0c;以及在光流跟踪时使用的角点检测算法Harris…