DevOps实战50讲-(1)彻底理解DevOps

news2024/9/30 23:32:46

持续坚持原创输出,点击蓝字关注我吧

软件质量保障:所寫即所思|一个阿里质量人对测试的所感所悟。

浅谈软件开发流程

软件开发流程是从需求分析、设计、编码、测试到上线等一系列环节的步骤和活动。通常来说,软件开发流程可以分为以下几个阶段:

  1. 需求分析:明确客户需求,收集、分析、整理、确认需求,以确保开发出的软件符合客户需求。

  1. 设计阶段:在明确的需求基础上,进行软件架构设计和详细设计,确定软件的功能模块和模块之间的关系。

  1. 编码阶段:根据设计文档进行程序编写,实现系统功能模块,通常会使用特定的编程语言和开发工具。

  1. 测试阶段:进行各种测试,包括单元测试、集成测试、系统测试等,以确保软件质量。

  1. 发布阶段:将软件发布到生产环境中,进行部署、配置、发布等操作,确保软件正常运行。

  1. 运维阶段:对软件进行监控、维护、升级和优化,以保证软件稳定运行。

不同的软件开发团队和项目可能会有不同的开发流程,例如采用敏捷开发、瀑布模型等不同的开发方法。但是,以上阶段基本上都是必不可少的(阿里研发流程知多少),软件开发流程的目标是确保开发出的软件质量、满足客户需求、按时交付并能够可靠地运行。

我的第一份工作,所在的团队当时的研发模式属于瀑布模式。它将软件开发流程分为一系列相互依赖的阶段,每个阶段必须在上一个阶段完成之后才能开始。瀑布模式存在风险管理能力不足、测试不充分等问题:

  1. 需求变更困难:瀑布模型是一个严格的阶段性过程,每个阶段必须完成后才能进入下一个阶段,这使得在项目开发过程中,客户的需求变更非常困难。

  1. 风险管理不足:由于在瀑布模型中,风险评估和管理通常在项目开始阶段进行,因此在后期发现的风险可能导致整个项目失败。

  1. 测试不充分:瀑布模型的测试阶段通常在开发完成后进行,这可能导致在测试阶段发现的问题难以解决,同时也会增加修复问题所需的时间和成本。

  1. 缺乏灵活性:瀑布模型中每个阶段的输入和输出必须按照一定的顺序执行,这意味着在需求或设计阶段出现问题时,整个项目可能需要重新开始。

  1. 周期较长:由于瀑布模型的每个阶段必须按顺序执行,因此整个项目的周期通常较长,这使得瀑布模型对于那些需要快速交付的项目不太适用。

传统的瀑布模式不适应如今的互联网大环境,而敏捷开发模型是一种迭代的、增量式的软件开发方法。它强调快速响应变化和客户需求的能力,并且通过与客户的持续协作来确保软件开发过程中的透明度和质量,目前被互联网公司广泛采用。

敏捷开发强调尽早、频繁地交付可用的工作软件,并通过快速反馈和验证来确保软件的质量和正确性。

站在测试的角度,瀑布模式下,开发完成coding提测后,测试向开发反馈BUG(沟通成本高)是一个反复且非常耗时(机械)的过程,很显然不适合敏捷开发的要求。可以参考我这篇文章《阿里微服务质量保障系列:研发环境知多少

如果让开发和测试(运维)团队整合到一个团队,是不是可以最大限度地降低了反馈成本,DevOps也就应运而生。

我对DevOps字面意思的理解

DevOps由Development和Operations两个词组成。其中Development代表着软件开发,包括设计、编码、测试等过程;Operations则代表着软件运维,包括部署、监控、维护等过程。因此,DevOps的字面意思可以理解为将软件开发和运维整合在一起的一种方法或理念,旨在加快软件交付速度、提高软件质量和可靠性。

说的大白话些,就是“简化”开发和测试(运维)之间流程,通过工具使提升整体软件开发速度。

再说直白点,DevOps解决的根本问题就是软件开发和测试(运维)之间的分离和沟通不畅的问题。

注:为什么说DevOps既可以说开发和测试、又可以说开发和运维呢?这里说一下个人对DevOps的理解。
这主要是因为不同公司对运维这个岗位的职责和归属不同。
我的第一家公司,运维是独立的岗位,有一个人专门负责,工作内容就是服务器监控、到甲方部署软件等,即开发->测试->运维。
阿里这边运维的责任貌似更多在开发同学肩上,当然测试也会负责,但大多数时间由开发负责,因此开发即运维,这里DevOps叫做DevTest其实更合适。

学习Devops学什么?

回答这个问题之前,我们再回首一下文章开头介绍的软件开发流程:

  • PLAN:开发团队根据客户目标制定开发计划

  • CODE:根据PLAN开始编码,由于产品要满足不同用户要求,则需要将不同版本的代码存储在一个代码仓库。

  • BUILD:开发完成后,将代码构建并部署运行。

  • TEST:包括开发侧的单测以及测试同学的黑盒、回归、自动化等测试

  • DEPLOY:代码经过测试后,如果达到准出要求,则将代码合并到主干分支,交由运维(开发)部署生产环境。

  • OPERATE:开发(运维)将代码部署到生产环境。

  • MONITOR:项目部署上线后,需要持续监控产品。

  • INTEGRATE:将监控阶段收到的有效反馈发送回PLAN阶段,往复循环,形成闭环。

上文说了,DevOps旨在降低项目过程的沟通成本,那么如何降低呢?自然是通过工具实现自动化。

OK,到这里相信大家已经悟了吧,通过这张图大家应该知道DevOps就是强调团队之间应该使用自动化工具来协作和沟通来完成软件生命周期管理,从而实现更快、更高质量地交付更稳定的软件。

那么我们学习DevOps到底学什么?

我认为是学DevOps理念以及软件生命周期涉及到的管理工具。

1. 代码管理工具:如Git等,用于管理代码的版本和变更。

2. 自动化构建工具:如Jenkins,用于将源代码转换为可执行的软件。

3. 自动化部署工具:如Kubernetes等,用于将软件部署到生产环境。

4. 自动化测试工具:如JUnit、Selenium等,用于自动化执行各种类型的测试。

5. 持续集成和持续交付:如CI/CD等,用于自动化构建、测试和部署软件。

6. 日志管理和监控工具:如ELK、Prometheus等,用于监视软件的运行状况和性能。

7. 容器化技术:如Docker等,用于将应用程序打包成容器并管理其生命周期。

- END -


下方扫码关注 软件质量保障,与质量君一起学习成长、共同进步,做一个职场最贵Tester!

  • 后台回复【测开】获取测试开发xmind脑图

  • 后台回复【加群】获取加入测试社群方式,领2T测试自学视频

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

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

相关文章

Vue3电商项目实战-商品详情模块7【21-商品详情-评价组件-头部渲染、22-商品详情-评价组件-实现列表】

文章目录21-商品详情-评价组件-头部渲染22-商品详情-评价组件-实现列表21-商品详情-评价组件-头部渲染 目的:根据后台返回的评价信息渲染评价头部内容。 yapi 平台可提供模拟接口,当后台接口未开发完毕或者没有数据的情况下,可以支持前端的开…

CentOS 7安装Docker并使用tomcat测试

文章目录环境准备Docker安装安装tomcat环境准备 CentOS 7以上版本linux内核版本需要在3.10以上,可通过uname -r 查看系统内核。 Docker安装 检查docker安装源 yum list docker yum安装docker : yum install docker.x86_64 启动 docker : s…

操作系统权限提升(十六)之绕过UAC提权-CVE-2019-1388 UAC提权

系列文章 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述 操作系统权限提升(十三)之绕过UAC提权-MSF和CS绕过UAC提权 操作系统权限提升(十四)之绕过UAC提权-基于白名单AutoElevate绕过UAC提权 操作系统权限提升(十五)之绕过UAC提权-基于白名单DLL劫持绕过UAC提权 注&a…

QML Item和Rectangle详解

1.Item和Rectangle Item类型是Qt Quick中所有可视项的基本类型。 Qt Quick中的所有可视项都继承Item。尽管Item对象没有视觉外观,但它定义了视觉项中常见的所有属性,例如x和y位置、宽度和高度、锚定和键处理支持。 Rectangle继承自Item,多…

数组初始化方式与decimal.InvalidOperation

数组初始化方式与decimal.InvalidOperation调用函数主函数: 数组声明不同带来的报错与否1. 报错decimal.InvalidOperation的数组初始化版本2. 可行的初始化版本输出结果1. 报错时的内容2. 正常的输出计算结果原因(是否是数组与列表不同引起(?…

因果推断10--一种大规模预算约束因果森林算法(LBCF)

论文:A large Budget-Constrained Causal Forest Algorithm 论文:http://export.arxiv.org/pdf/2201.12585v2.pdf 目录 0 摘要 1 介绍 2 问题的制定 3策略评价 4 方法 4.1现有方法的局限性。 4.2提出的LBCF算法 5验证 5.1合成数据 5.2离线生…

gitlab部署使用,jenkins部署使用

gitlab部署使用,jenkins部署使用gitlab下载gitlab安装gitlab使用gitlab设置中文修改管理员密码创建组,创建项目,创建用户jenkins下载jenkins安装jenkin使用jenkins更改管理员密码配置拉取代码配置登录gitlab拉取代码的账号密码配置项目配置gitlab仓库配置构建构建构…

动态分区分配计算

动态分区分配 内存连续分配管理分为: 单一连续分配固定分区分配动态分区分配(本篇所讲) 首次适应算法(First Fit,FF) 该算法又称最先适应算法,要求空闲分区按照首地址递增的顺序排列。 优点…

数据结构——树

深度优先/广度优先遍历深度优先:访问根节点对根节点的 children 挨个进行深度优先遍历const tree {val: "a",children: [{val: "b",children: [{val: "d",children: [],},{val: "e",children: [],},],},{val: "c&quo…

可靠性设计

目录 一、可靠性设计概述 二、冗余的类型 三、冗余系统的设计 1.N版本程序设计 2.恢复块设计 3.防卫式程序设计 4.双机容错 一、可靠性设计概述 可靠性指系统能够正常运行的概率。如何设计出一个具有高可靠性的系统呢?可以利用避错技术,容错技术…

【LeetCode】剑指 Offer 16. 数值的整数次方 p110 -- Java Version

题目链接:https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/ 1. 题目介绍(16. 数值的整数次方) 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,…

文献计量分析方法:Citespace安装教程

Citespace是一款由陈超美教授开发的可用于海量文献可视化分析的软件,可对Web of Science,Scopus,Pubmed,CNKI等数据库的海量文献进行主题、关键词,作者单位、合作网络,期刊、发表时间,文献被引等…

数据结构入门5-2(数和二叉树)

目录 注: 树的存储结构 1. 双亲表示法 2. 孩子表示法 3. 重要:孩子兄弟法(二叉树表示法) 森林与二叉树的转换 树和森林的遍历 1. 树的遍历 2. 森林的遍历 哈夫曼树及其应用 基本概念 哈夫曼树的构造算法 1. 构造过程 …

响应性基础API

一.什么是proxy和懒代理?什么是proxy?proxy对象是用于定义基本操作的自定义行为(如:属性查找,赋值,枚举,函数调用等等)。什么是懒代理?懒代理:在初始化的时候不会进行全部代理,而是…

数据仓库Hive

HIve介绍 Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载,可以简称为ETL。 Hive 定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户直接查询Hadoop中的数据&#xf…

三万字全面概述关于5G-V2X技术和应用

5G技术有望实现更快的网联链接、更低的延迟、更高的可靠性、更大的容量和更广的覆盖范围。希望依靠这些技术来实现车辆到一切(V2X)的通信,除了道路安全外,还能提高车辆的安全性和自动驾驶性能,节约能源和成本。车辆通信…

算法设计与分析期末考试复习(四)

贪心算法(Greedy Algorithm) 找零钱问题 假设有4种硬币,面值分别为:二角五分、一角、五分和一分,现在要找给顾客六角三分钱,如何找使得给出的硬币个数最少? 首先选出1个面值不超过六角三分的最…

improve-2

BFC 块级格式化上下文,是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。 IE下为 Layout,可通过 zoom:1 触发 触发条件: 根元素position: absolute/fixeddisplay: inline-block /…

[计算机网络(第八版)]第三章 数据链路层(学习笔记)

物理层解决了相邻节点透明传输比特的问题 3.1 数据链路层的几个共同问题 3.1.1 数据链路和帧 链路: 从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点 数据链路: 节点间的逻辑通道是把实现控制数据传输的协议的硬件和软件加…

Unity Avatar Foot IK - Avatar Foot Placement Resolution

文章目录简介实现Avatar FBX Import SettingsAnimator SettingsOn Animator IKCalculate IK Position & RotationBody PositionApply IK Position & Rotation简介 通过Unity内部的Mecanim动画系统实现的FootIK功能,效果如图所示,左右分别为开启…