Devops 基础介绍

文章目录

  • 前言
  • 一、软件开发概述
      • 1. 软件开发生命周期
      • 2. 软件开发瀑布模型
      • 3. 软件的敏捷开发
        • 3.1 迭代开发
        • 3.2 增量开发
        • 3.3 敏捷开发如何迭代
        • 3.4 敏捷开发的好处
  • 二、持续集成概述
      • 1. 什么是持续集成
      • 2. 持续集成的流程
      • 3. 持续集成的组成要素
      • 4.优势

前言

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

一、软件开发概述

1. 软件开发生命周期

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

Devops 基础介绍_第1张图片

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. 回滚
    一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。
    Devops 基础介绍_第2张图片

3. 持续集成的组成要素

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

Devops 基础介绍_第3张图片

4.优势

  • 降低风险、修复代价少
  • 健康的检测
  • 减少重复工作
  • 提供部署单元包便于测试工程师单元测试
  • 提高质量

你可能感兴趣的:(devopes,devops,运维)