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

news/2024/4/25 19:01:03/文章来源:https://blog.csdn.net/csd11311/article/details/129224603

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

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

浅谈软件开发流程

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

  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.luyixian.cn/news_show_74289.aspx

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

相关文章

Python 多进程多线程线程池进程池协程

目录 一、线程与进程很简单的介绍 1.1 线程与进程的区别 二、多进程Process 2.1 多进程与多线程的区别 2.2 多进程为啥要使用队列 2.3 控制进程运行顺序 2.3.1 join , 2.3.1 daemon 守护进程 2.4 进程id 2.5 进程 存活状态is_alive() 2.5 实现自定义多…

计算机图形学:liang算法和Cyrus-Beck算法

其中Cyrus-Beck算法呢,是计算一根直线一个多边形的交线段;liang算法是Cyrus的一个特例,即多边形刚好是矩形;先看看Cyrus算法的思路【从别的博客找的图片】:这很容易理解,点积>0时就可能中内部嘛&#xf…

Pyinstaller 打包EXE(七) 百篇文章学PyQT

本文章是百篇文章学PyQT6的第七篇,本文讲述如何使用Pyinstaller打包UI界面和代码,将程序打包成EXE来更为方便的进行部署,在写博客和学习的过程中会遇到很多问题,例如:PyQT6在网上很多博客都是PyQT5、或者PyQT4大部分都…

Amazon S3 服务15岁生日快乐!

2021年3月14日,作为第一个发布的服务,Amazon S3 服务15周岁啦!在中国文化里,15岁是个临界点,是从“舞勺之年”到“舞象之年”的过渡。相信对于 Amazon S3 和其他的云服务15周岁也将是其迎接更加美好未来的全新起点。亚…

java面试题-JVM内存结构

整体结构:1.说说JVM内存整体的结构?线程私有还是共享的?JVM(Java Virtual Machine)内存可以分为以下几个部分:程序计数器(Program Counter Register):是线程私有的&#…

深入浅出解析ChatGPT引领的科技浪潮【AI行研商业价值分析】

Rocky Ding写在前面 【AI行研&商业价值分析】栏目专注于分享AI行业中最新热点/风口的思考与判断。也欢迎大家提出宝贵的意见或优化ideas,一起交流学习💪 大家好,我是Rocky。 2022年底,ChatGPT横空出世,火爆全网&a…

Linux学习(8.6)文件与目录的默认权限与隐藏权限

目录 文件与目录的默认权限与隐藏权限 文件的默认权限:umask chattr (配置文件隐藏属性) lsattr (显示文件隐藏属性) 文件特殊权限: SUID, SGID, SBIT 观察文件类型:file 以下内容转载自鸟哥的Linux私房菜 文件与目录的默认权限与隐藏权…

【架构师】零基础到精通——架构发展

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…

【20230225】【剑指1】分治算法(中等)

1.重建二叉树class Solution { public:TreeNode* traversal(vector<int>& preorder,vector<int>& inorder){if(preorder.size()0) return NULL;int rootValuepreorder.front();TreeNode* rootnew TreeNode(rootValue);//int rootValuepreorder[0];if(preo…

redis秒杀

redis优惠券秒杀 为什么订单表订单ID不采用自增长&#xff1f; id规律性太明显&#xff0c;容易被用户猜测到&#xff08;比如第一天下订单id10&#xff0c;第二天下订单id100&#xff0c;在昨天的1天内只卖出90商品&#xff09;受单表数据量限制&#xff08;订单数据量大&am…

从零开始学习iftop流量监控(找出服务器耗费流量最多的ip和端口)

一、iftop是什么iftop是类似于top的实时流量监控工具。作用&#xff1a;监控网卡的实时流量&#xff08;可以指定网段&#xff09;、反向解析IP、显示端口信息等官网&#xff1a;http://www.ex-parrot.com/~pdw/iftop/二、界面说明>代表发送数据&#xff0c;< 代表接收数…

chatGPT模型原理

文章目录简介BertGPT 初代GPT-2GPT-3chatGPT开源ChatGPT简介 openai 的 GPT 大模型的发展历程。 Bert 2018年&#xff0c;自然语言处理 NLP 领域也步入了 LLM 时代&#xff0c;谷歌出品的 Bert 模型横空出世&#xff0c;碾压了以往的所有模型&#xff0c;直接在各种NLP的建模…

EasyRecovery16MAC苹果版本Photo最新版数据恢复软件

无论是在工作学习中&#xff0c;还是在生活中&#xff0c;Word、Excle等办公软件都是大家很常用的。我们在使用电脑的过程中&#xff0c;有时会因自己的误删或电脑故障&#xff0c;从而导致我们所写的文档丢失了。出现这样的大家不要着急&#xff0c;今天小编就给大家推荐一款可…

FreeRTOS优先级翻转

优先级翻转优先级翻转&#xff1a;高优先级的任务反而慢执行&#xff0c;低优先级的任务反而优先执行优先级翻转在抢占式内核中是非常常见的&#xff0c;但是在实时操作系统中是不允许出现优先级翻转的&#xff0c;因为优先级翻转会破坏任务的预期顺序&#xff0c;可能会导致未…

YOLOv5模型学习记录

新年伊始&#xff0c;YOLOv8横空出世&#xff0c;这个还未开源时便引发界内广泛热议的目标检测算法&#xff0c;一经问世便再次引发热潮&#xff0c;而作为与其师出同源的YOLOv5&#xff0c;自然要拿来与其比较一番。接下来我们便来学习一下吧。 模型结构 首先便是模型结构了…

Rasa 3.x 学习系列-摆脱意图:一种新的对话模式

Rasa 3.x 学习系列-摆脱意图:一种新的对话模式 在2019年的一篇文章中,Alan Nichol写道 :是时候摆脱意图了。一年后,Rasa发布了Rasa中的第一个无意图(或“端到端”)对话模型。现在,我们宣布迈出了一个重要的步伐,将LLM的强大功能带入Rasa的对话管理中。 首先,意图非常…

ACSC 2023 比赛复现

Admin Dashboard 在 index.php 中可以看到需要访问者是 admin 权限&#xff0c;才可以看到 flag。 report.php 中可以让 admin bot 访问我们输入的 url&#xff0c;那么也就是说可以访问 addadmin.php 添加用户。 在 addadmin.php 中可以添加 admin 用户&#xff0c;但是需…

李宏毅2023春季机器学习课程

目录2021&2022课程重磅须知我维护的其他项目更新日志课程地址课程资料直链课程作业直链其他优质课程2021&2022课程 CSDN Github 重磅须知 为方便所有网课资料与优质电子书籍的实时更新维护&#xff0c;创建一个在线实时网盘文件夹&#xff1b;   网盘获取方式&#…

mindspore的MLP模型(多层感知机)

导入模块 import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import mindspore import mindspore.dataset as ds from mindspore import nn import mindspore.ops as ops import mindspore.numpy as mnp from …

Springdoc Swagger UI集成OAuth2认证

目录引言方式1&#xff1a;Bearer Token方式2&#xff1a;标准OAuth2授权码流程方式3&#xff1a;集成OIDC发现端点扩展&#xff1a;同时支持多种认证方式引言 之前的文章讲过OAuth2体系&#xff0c;以授权码流程为例&#xff08;参见下图&#xff09;&#xff0c; 其中资源服…