Devops 基础介绍

2023-11-04

前言

   DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

一、软件开发概述

1. 软件开发生命周期

软件开发生命周期又叫做 SDLC(Software Development Life Cycle),它是集合了计划、开发、测试和部署过程的集合。如下图所示 :

在这里插入图片描述

2. 软件开发瀑布模型

  1. 瀑布模型是最著名和最常使用的软件开发模型。
  2. 瀑布模型就是一系列的软件开发过程。它是由制造业繁衍出来的。一个高度化的结构流程在一个方向上流动,有点像生产线一样。
  3. 在瀑布模型创建之初,没有其它开发的模型,有很多东西全靠开发人员去猜测、去开发。这样的模型仅适用于那些简单的软件开发,但是已经不适合现在的开发了。
  4. 软件开发瀑布模型(传统)------>流水线工作------>需求分析-----设计----实现-----测试----发布----收集反馈
优势 劣势
简单易用和理解 各个阶段的划分完全固定, 阶段之间产生大量的文档,极大地增加了工作量
当前一阶段完成后,您只需要去关注后续阶段 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险
为项目提供了按阶段划分的检查节点 瀑布模型的突出缺点是不适应用户需求的变化

3. 软件的敏捷开发

敏捷开发的核心是迭代开发增量开发

3.1 迭代开发
  • 传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次"大开发",
  • 迭代开发将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",将其一步一步完成
3.2 增量开发
  • 软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。

举例:

房产公司开发一个10栋楼的小区。如果采用增量开发的模式,该公司可以在造完1号楼时交付1号楼,造完2号楼时交付2号楼,以此类推,这样可以分摊风险,回流资金。也有益于改进之后的楼房。

3.3 敏捷开发如何迭代

虽然敏捷开发将软件开发分成多个迭代,但是也要求,每次迭代都是一个完整的软件开发周期,其核心思想-------》<解耦>

3.4 敏捷开发的好处

早期交付

敏捷开发的第一个好处,就是早期交付,从而大大降低成本。
还是以上一节的房产公司为例,如果按照传统的"瀑布开发模式",先挖10栋楼的地基、再盖骨架、然后架设屋顶,每个阶段都等到前一个阶段完成后开始,可能需要两年才能一次性交付10栋楼。也就是说,如果不考虑预售,该项目必须等到两年后 才能回款。
敏捷开发是六个月后交付一号楼,后面每两个月交付一栋楼。因此,半年就能回款10%,后面每个月都会有现金流,资金压力就大大减轻了。

降低风险

敏捷开发的第二个好处是,及时了解市场需求,降低产品不适用的风险。
请想一想,哪一种情况损失比较小,10栋楼都造好以后,才发现卖不出去,还是造好第一栋楼,就发现卖不出去,从而改进或停建后面9栋楼?

二、持续集成概述

1. 什么是持续集成

  • 持续集成指的是频繁的将代码集成到主干中,持续集成为目的,让产品可以快速迭代,保证质量
  • 在到达主干之前,必须自动化测试,只要一个测试用例失败,不可集成(规避成本和时间)

2. 持续集成的流程

  1. 提交
    流程的第一步,是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交
  2. 测试(第一轮)
    代码仓库对 commit 操作配置了钩子(hook),只要提交代码或者合并进主干,就会自动化测试
  3. 构建
    通过第一轮测试,代码就可以合并进主干,就算可以交付了;
    交付后,就先进行构建(build),再进入第二轮测试;
    所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等
  4. 测试(第二轮)
    构建完成,就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时构建步骤也要移到第一轮测试前面
  5. 部署
    过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。将这个版本的所有文件打包(tar filename.tar * )存档,发送到生产服务器
  6. 回滚
    一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。
    在这里插入图片描述

3. 持续集成的组成要素

  1. 一个自动的构建过程, 从检测代码,编译,测试,结果、测试全部都是自动完成
  2. 一个代码存储库,需要版本控制软件来保障代码的可维护性,一般使用SVN/GIT
  3. 一般使用码云Gitee国内的github/一般搭建私有仓库/
  4. 一个持续集成服务器,jenkins完成
  5. 开发------SVN/GIT-----ci/cd编译、构建、部署------测试环境-----运维(迁移【数据迁移】按亿为单位 以PB级别)生产环境

在这里插入图片描述

4.优势

  • 降低风险、修复代价少
  • 健康的检测
  • 减少重复工作
  • 提供部署单元包便于测试工程师单元测试
  • 提高质量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Devops 基础介绍 的相关文章

随机推荐

  • 办公室里秀一把!用Python控制Excel实现自动化办公!附学习教程

    1 安装 2 操作一个简单的Excel文档 操作注释及代码 操作完成后 数据存储结果如下 3 操作简单Excel文档并添加数据格式 操作代码如下 附带数据格式的定义 操作效果如图所示
  • 【Rust】用libc实现文件拷贝

    macro export macro rules c string s expr gt use std ffi CString CString new s unwrap as ptr macro export macro rules che
  • office表格标题和表格距离过大怎么解决

    设置 表格 布局 属性 文字环绕 环绕 定位 然后修改成如下 垂直 位置 数据为0厘米
  • 如何使用Hyperledger Fabric和Composer构建区块链网络

    如何使用Hyperledger Fabric和Composer构建区块链网络 这是一个区块链开发入门人员的教程 在开始之前要说明Hyperledger Fabric仅在基于Unix的操作系统上运行 因此 它将无法在Windows上运行 这将
  • (一)云计算技术学习--基础概念

    目录 Linux的用户管理 Yum 命令 Python SELinux vsftpd etcd Session Cookie Token LNMP VMware Docker Kubernetes K8S Centos CentOS Com
  • ubuntu中pip3升级出现Traceback (most recent call last): File “/usr/bin/pip3”, line 9, in from pip import

    ubuntu18 04中pip3升级之后遇到这样的问题 Traceback most recent call last File usr bin pip3 line 9 in from pip import main ImportError
  • 超出表空间"users"的空间限额

    这是因为用户被数据库限制了在建表的表空间 执行一下下面的语句后 再执行建表语句 alter user 用户名 quota unlimited on 表空间名字
  • QLabel设置背景图片

    您可以使用Qt的QPalette类来设置QLabel的背景图片 以下是一个简单的示例 include
  • 2021爱分析·房企数字化厂商全景报告

    目录 1 研究范围定义 2 市场全景地图 3 市场定义与厂商评估 4 入选厂商列表 关于爱分析 研究与咨询服务 法律声明 1 研究范围定义 研究范围 本报告研究对象为房企 主要包括从事房地产开发 商写资产运营 物业服务等业务的综合性房地产企
  • [QT编程系列-20]:基本框架 - QT的测试框架QTest

    目录 第1章 QT测试框架与搭建步骤 第2章 Qt Test概述 2 1 概述 2 2 测试代码和项目代码共存 2 3 如何运行测试代码 2 4 ctest命令 第3章 单元测试代码示例 3 1 代码目录结构 3 2 代码示例 第4章 QT
  • Java写Mybatis的配置文件的注意事项

    先来聊聊properties配置文件的一些坑 1 注意自己当前使用的mysql的版本 版本低的 driver配置是 具体的版本是多少忘了 com mysql jdbc Driver 版本高的用 com mysql cj jdbc Drive
  • STM32中断与事件的区别

    STM32中断与事件的区别 在我们配置中断时 时常会困惑于什么是事件模式 EXTI InitStruct EXTI Mode 怎样选择 是选择中断模式还是事件模式 EXTI InitStruct EXTI Line EXTI Line0 E
  • IDEA 控制台输出中文乱码的简单解决方案

    目录 引言 解决方案 第一步 第二步 下载JDK 选择现有的JDK 完成 引言 很多人 包括我 在编程的时候可能会发现 在IDEA的控制台输出中文字符的时候 会出现乱码 如下图 于是就在网上搜了很多教程 结果弄完了却还是不行 下面是我的解决
  • 编译原理(第3版)第二章部分习题答案

    1 文法G A B C a b c P S 其中P为 S gt Ac aB A gt ab B bc 写出L G S 的全部元素 解 L G S 的全部元素为 a b c 2 文法G N 为 N gt D ND D gt 0 1 2 3 4
  • 修改intelliJ IDEA默认Mvnen插件镜像地址 ,加速依赖安装

    前言 1 3叙述的是如何找到idea的mvnen 如果是手动安装的Mvnen 直接跳到4 本文基于Linux平台 mac windows可作参考 如果是ToolBox安装的IDEA 那么桌面启动程序文件一般在 home USER local
  • 华为OD机试 Python 【五子棋迷】

    题目 张兵和王武喜欢玩五子棋 现在轮到张兵了 他面前的棋盘上有一排棋子 棋子规则 1 表示白子 0 表示没子 是个空位 1 表示黑子 一排棋子中 棋子数量L要满足 1 lt L lt 40 并且L是奇数 你要写个程序帮张兵找到最佳的落子位置
  • 【Apache Spark 】第 3 章Apache Spark 的结构化 API

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Tomcat提高并发量,性能优化

    系统采用的常用框架 Mysql SSM Tomcat结构 测试工具使用的是Jmeter 刚开始测试 并发量为200 s 居然错误率达到了15 让我很郁闷 按Tomcat的性能200的并发量应该完全没问题 于是我搜了一下提高Tomcat并发量
  • 区块链入门系列之P2P

    区块链入门系列文章 区块链基本概念和名词解释 P2P 共识算法 梅克尔 帕特里夏树 从零开始搭建区块链 这里写自定义目录标题 区块链入门系列文章 前言 中心化架构 去中心化架构 NAT 锥型NAT 完全锥型NAT 非完全锥型NAT IP受限
  • Devops 基础介绍

    文章目录 前言 一 软件开发概述 1 软件开发生命周期 2 软件开发瀑布模型 3 软件的敏捷开发 3 1 迭代开发 3 2 增量开发 3 3 敏捷开发如何迭代 3 4 敏捷开发的好处 二 持续集成概述 1 什么是持续集成 2 持续集成的流程