什么是DevOps? 什么是DORA?

news2024/11/24 3:32:14

1. 前言

对于搞云原生应用的同学,对于DevOps和DORA应该都不陌生。但对于传统应用程序开发的同学,经常被DevOps, Microservice, CICD, DORA这些新颖的名词搞得晕头转向。那么到底什么是DevOps? 什么是DORA呢?

2. 解析

2.1 DevOps

DevOps并不是凭空创造出来的一个概念,它也是有着历史的发展过程的。在知乎上找到了一篇不错的文章,对DevOps的解析很清楚,感兴趣的同学可以去读一下DevOps到底是什么意思? - 知乎 (zhihu.com)。

简而言之,DevOps是继软件开发的瀑布模型、敏捷模型后的第三种软件开发的方法论,可以理解为:

  • 第一阶段:瀑布模型
  • 第二阶段:敏捷模型
  • 第三阶段:DevOps

在瀑布模型中,大家分工合作,开发、测试、部署、运维,每一部分都有专门的团队负责,开发完成后进入测试环节,测试完成后进去部署环节,部署完成后进入运维环节,每个环节都是独立的,有着独立的开发团队、测试团队、部署团队、运维团队。

瀑布模型的弱点在于,软件上线周期长,对于新需求的反映速度慢。因而,在瀑布模型的基础上,衍生出了敏捷开发,强调“开发测试”一起搞,小步快走完成开发任务,但仍然有独立的部署团队和运维团队。

DevOps是敏捷模型的进一步升级,为了进一步加快软件的上线速度,更快地对客户需求做出反应,强调“开发测试部署运维”全部一起搞定

这也就是DevOps缩写的含义,也即Development and Operation, 开发和运维。

总结起来,采用DevOps这种方法论,主要就是想在软件开发过程中提升以下几点:

  • 更专注于用户的需求
  • 更快的上线速度
  • 更自动化流程
  • 更稳定的运行时长

为了实现这一目标,有着一些列辅助DevOps的工具和方法论,例如包括软件架构上的微服务设计Microservices、云原生的部署方案K8S、持续集成持续交付CICD等。

2.2 设计上的妥协与变通

通过上面的介绍可以了解到,实施DevOps,不仅仅要在软件开发理念上改变,也要在组织架构上发生改变,要打破开发测试部署运维的组织边界和职能边界,同时为了完成这一目标,软件的架构设计也会发生变动,即从之前的“单体架构monolithic architecture”转变成“微服务架构Microservices”。

云原生为什么要使用微服务架构,让我们首先对比下两种架构的优势与劣势。

对于传统的单体架构:

优势劣势
1易开发(同一个代码库,更容易开发)开发速度慢(大型的用程序使开发更复杂、更慢)
2高性能(集中式的代码库和数据库,一个API通常可以执行许多API在微服务中执行的相同功能)可扩展性差(不能扩展单个组件)
3测试简单 (端到端测试可以比分布式应用程序更快地执行)可靠性弱(任何模块出现错误,都可能影响整个应用程序的可用性)
4易调试 (所有代码都放在一个地方,跟踪请求和发现问题容易)新技术应用障碍(框架或语言的更改都会影响整个应用程序,使得更改通常既昂贵又耗时)
5灵活性差(受到单体中已经使用的技术的限制)
6部署代价大(一个小更改需要重新部署整个单体)

对于微服务架构:

优势劣势
1敏捷的部署与扩展(弹性扩展、独立部署)

开发蔓延(微服务增加了更多的复杂性、更多冗余重复的API,如果管理不当,就会导致开发速度变慢,操作性能变差)

2高可维护性和可测试性(易隔离和修复单个服务中的错误和错误)

指数级的基础设施成本(每个新的微服务在测试套件、部署脚本、托管基础设施、监控工具等方面都有自己的成本)

3更灵活的技术(不同的服务可以通过不同的技术栈完成)

增加了管理成本(团队需要增加另一个层次的沟通和协作,以协调更新和接口)

4

高可靠性(可更改特定服务部署,而不会危及整个应用程序)

调试复杂(每个微服务都有自己的日志集,这使得调试变得更加复杂。另外,单个业务流程可以跨多台服务器运行,这进一步增加了调试的复杂性)

5

缺乏标准化(如果没有一个通用的平台,语言、日志标准和监控标准,管理会失控)

可见,微服务架构虽然灵活,但微服务也不是万灵丹,微服务架构带来系统敏捷性的同时,也有着很多的妥协和挑战。例如为了微服务间的解耦,可能需要创建更多冗余的服务或数据,这与之前软件设计中的do not repeat yourself是完全相反的思路,这种设计也为数据的最终一致性带来了不小挑战。

可以说,实施DevOps方法论和微服务架构目前也仍然是在不断试错、不断摸索的过程中。

有一点需要注意的是,使用微服务架构,构建云原生应用程序的初衷并非是“降低运营成本”,因为随着微服务数量的增加,其所消耗的基础设施成本也是指数级增长的。使用微服务架构的初衷是获得更高的敏捷性,获得更快的部署速度,更快的软件迭代周期

2.3 DORA

DORA是DevOps Research & Assessment的缩写,它是研究如何评判DevOps运行状况的一个组织 DORA | DevOps Quick Check。总结下来,这个组织提出了5点衡量标准:

  • (速度)Deployment Frequency: 部署的频率
  • (速度)Lead time for changes: 从代码提交,到在生产系统上生效的时间
  • (稳定性)Time to restore service: 部署之后,出了问题,需要多久能修复
  • (稳定性)Change Failure Rate: 由于部署产生问题的百分比
  • (运维角度)Reliability:服务是不是稳定的 ---> (这一条是新提出的)

这5点标准可以量化成具体的衡量指标,用于衡量一个实施DevOps方法论的组织的运行状况。例如下图给出的一个参考标准:

 总的来说,通过DORA提出的指标,我们可以从部署的速度和服务的稳定性两个角度,去量化软件开发团队运行的状况。

所以说,DORA的核心其实是提出了DevOps的“可量化的衡量指标”

3. 总结

本文简单总结和介绍了DevOps和DORA的基础概念,对于云原生开发的很多衍生工具和概念没有过多的介绍,包括例如Zero-Downtime Deployment,Zero-Downtime DB Migration,Resilience,Feature Toggles,Monitoring & Alerting, Product Metrics等等,这些概念的核心都是围绕着DevOps方法论的思想所服务的。

首先把握DevOps的初衷和Miscrosevices架构的特点,是学习其它相关概念的前提,希望本文对你了解DevOps有所帮助。

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

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

相关文章

群晖NAS搭建WebDV服务手机ES文件浏览器远程访问

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址 转载自cpolar极点云文章:群晖NAS搭建WebDAV服务手机ES文件浏览器远程访问 有时候我们想通过移动设备访问群晖NAS 中的文件,以满足特殊需求,我们在群辉中开启WebDav服…

支持刷机(OpenWrt)的路由器大全

2023年上半年最热门的刷机路由器当然是360T7、小米WR30U这两款,主要是性价比高,闲鱼100多搞定,支持刷OpenWrt、支持WiFi6,采用MTK798X系列处理器,性能强,轻松跑满千兆,如果你想追新,…

SpringMVC基础知识

一、SpringMVC 1. Spring与Web环境集成 1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件…

云捷|打破应用孤岛加速企业数字化转型

CBG云服务BU X 神州数码云基地 一、引言 从流程信息化到整体的数字化转型,对企业而言是一场深刻的升级再造。企业在决心开启数字化转型之路后,有近5成民营企业数字化转型采用标准化工具;关于“贵公司未来将在工作中增加哪些数字应用的使用…

强化学习从基础到进阶-案例与实践[4.2]:深度Q网络DQN-Cart pole游戏展示

【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧…

基于PaddleDetection fairmot目标跟踪 C++ 部署

1 源码下载 PaddleDetection 2 工程编译 参考:paddle 目标检测C部署流程 3 导出模型 python tools/export_model.py -c configs/mot/fairmot/fairmot_dla34_30e_576x320.yml --output_dir ./inference -o weightshttps://paddledet.bj.bcebos.com/models/mot/…

AutoSAR系列讲解(入门篇)4.7-BSW的Diagnostics功能

一、架构与术语解释 首先简单介绍以下诊断(Diagnostics),由于百度百科中就有很好的解释,这里直接引用一下: 汽车诊断技术是凭借仪器设备对汽车进行性能测试和故障检查的方法和手段,它能够测试出汽车各项工作…

CMU 15-445 -- 存储篇 - 02

CMU 15-445 -- 存储篇 - 02 引言Database StorageDisk Manager 简介计算机存储体系为什么不使用 OS 自带的磁盘管理模块磁盘管理模块的核心问题在文件中表示数据库File StorageDatabase PagesHeap File OrganizationPage LayoutData LayoutTuple LayoutTuple Storage Data Repr…

Windows Update当前无法检查更新怎么办?

当进行Windows更新或升级时,可能会提示“Windows Update当前无法检查更新,因为未运行服务。您可能需要重新启动计算机”。而当重启也无法解决问题时,我们该怎么办呢?下面我们就来了解一下。 1、删除Software Distribution文件夹中…

Hyperledger Fabric交易流程分析

1、交易流程 客户端利用受支持的SDK(Golang、Java、Node、Python)提供的API构建交易提案请求,将交易事务提案打包成为一个正确的格式。交易提案包含如下要素: ①channelID:通道信息。 ②chaincodelD:要调用的链码信息。 ③timestamp:时间戳。 ④sign:客户…

百度智能车竞赛丝绸之路2——手柄控制

百度智能车竞赛丝绸之路1——智能车设计与编程实现控制 百度智能车竞赛丝绸之路2——手柄控制 一、机器人设计 二、实现原理 本教程使用Python的Serial库和Struct二进制数据解析库去实现Xbox手柄百度大脑学习开发板(上位机)和机器人控制器(…

9小时通关 黑马新教程发布,含重磅项目~

随着测试行业的蓬勃发展,对从业者的要求越来越高,自动化测试已经成为软件测试中一个重要组成部分,广泛应用于各行各业。甚至,在圈子中还流传着这样一句话:学好测试自动化,年薪30万不在话下! 今…

Qt读写文件

一、界面 项目文件结构 样例文件 中芯国际近期做出了两个重要改变:第一个是调整财报披露方式,不再公布芯片制程的营收占比,而只公布晶圆尺寸的营收占比;第二个是撤消14nm工艺的官方展示,只有28nm、40nm及以上的芯片工…

LeNet基础

目录 1.LeNet简介 1.1基本介绍 1.2网络结构 2.LetNet在pytorch中的使用 2.1首先定义模型 2.2初始化数据集,初始化模型,同时训练数据。 2.3 训练结果​编辑 2.4绘制曲线 1.LeNet简介 1.1基本介绍 LeNet(LeNet-5)是历史上第…

磁盘阵列(RAID)

什么是磁盘阵列 磁盘阵列(RAID)是一种将多个物理硬盘组合成一个逻辑存储单元的技术。这种技术可以提高数据存储的可靠性、性能或容量,并且可以在某些情况下提供备份和灾难恢复功能。 RAID技术可以通过在多个硬盘之间分配数据来提高性能。例…

事务处理相关

目录 步骤1.创建一个数据表 步骤2:创建项目导入jar包 步骤3:根据表创建模型类 步骤5:创建Service接口和实现类 步骤6:添加jdbc.properties文件 步骤7:创建JdbcConfig配置类 步骤8:创建MybatisConfig配置类 步骤9:创建SpringConfig配置类 步骤10:编写测试类 开启事务 1…

电磁阀原理精髓

一、引用 电磁阀在液/气路系统中,用来实现液路的通断或液流方向的改变,它一般具有一个可以在线圈电磁力驱动下滑动的阀芯,阀芯在不同的位置时,电磁阀的通路也就不同。 阀芯在线圈不通电时处在甲位置,在线圈通电时处在…

算法与数据结构-链表

文章目录 链表和数组的区别常见的链表类型单链表循环链表双向链表 总结 链表和数组的区别 相比数组,链表是一种稍微复杂一点的数据结构。对于初学者来说,掌握起来也要比数组稍难一些。这两个非常基础、非常常用的数据结构,我们常常会放到一块…

Python基础 - global nonlocal

global global作为全局变量的标识符,修饰变量后标识该变量是全局变量 global关键字可以用在任何地方,包括最上层函数中和嵌套函数中 实例1:如下代码,定义了两个x,并且赋值不同 直接调用print(x) 打印的是全局变量x的…

号外!MyEclipse 2023.1.1已发布,更好支持Vue框架

MyEclipse 2023.1.1是之前发布的2023.1.0的一个小错误修复版本,如果您已经安装了MyEclipse 2023,只需检查产品中的更新 (Help > Check for Updates…) 就可以选择这个新版本。或者,下载我们更新的离线安装程序来安装2023.1.1。 MyEclipse…