什么是DevOps? 什么是DORA?

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.hqwc.cn/news/8028.html

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

相关文章

Linux进程概念

目录 冯诺依曼体系结构 操作系统 系统调用和库函数概念 进程 描述进程-PCB 组织进程 理解进程 查看进程 通过系统调用获取进程标示符 通过系统调用创建进程-fork 进程状态 进程状态查看 孤儿进程 进程优先级 查看系统进程 PRI and NI PRI vs NI 用top命令更改…

官宣 | 平行云正式升级为Paraverse平行云科技,开启全球业务新征程

6月30日, "Here is New-Gen Web"——Paraverse Global Strategy and Brand Launch Party 于香港科学园召开,会上平行云正式宣布升级为Paraverse平行云科技(以下简称Paraverse),并升级品牌标识“Paraverse”。这一全新命名与视觉焕新…

LabVIEW仿真单频脉冲信号+线性调频信号+高斯白噪声信号

文章目录 前言一、单频脉冲信号1、信号参数2、仿真图①、前面板②、程序框图 二、线性调频信号1、信号参数2、仿真图①、前面板②、程序框图 三、高斯白噪声信号1、信号参数2、仿真图①、前面板②、程序框图 四、合成信号1、前面板2、程序框图 五、代码自取 前言 本文基于 Lab…

day28-JSP

0目录 JSP 1.为什么使用JSP 2.B/S和C/S的区别 3.URL 4.Tomcat 5.JSP实战综合项目 1.为什么使用JSP 1.1 JSP定义: (1)是一种动态网页技术 (2)Java Server Pages(Java服务器端页面技术) 1.2 …

干货 | 石化产品机器学习价格模型开发和SEI石化产品价格分析体系构建

以下内容整理自大数据能力提升项目必修课《大数据系统基础》同学们的期末答辩汇报。 我们的报告将分为六个部分,第一部分是研究背景与内容。受疫情影响以来,石化行业市场日趋饱和,竞争激烈,同时利润也受到压缩,大部分石…

5G NR:RACH随机接入过程

1. 简述 无论是3G,4G还是现在的5G都需要随机接入过程,随机接入过程主要是为了让基站和UE之间做好上行同步以及初始接入。此文章仅仅帮助大家了解此过程,更加具体的用途及其场景需要参考具体的3GPP协议(38.211,38.212,38.213).主要帮助理解如下…

【Spark实战】Windows环境下编译Spark2 Linux上部署Spark On Yarn

Windows环境下编译Spark2 环境准备 git-2.14.1maven-3.9.2jdk-1.8scala-2.11.8zinc-0.3.15 主下载地址spark-2.3.4 github官方地址 编译准备 maven远程仓库使用的是阿里云的 解压源码包spark-2.3.4.zip,修改根模块的pom文件。主要目的是为了变更hadoop的版本号,…

【数据可视化】大作业(意向考研高校的数据可视化)

文章目录 前言一、数据介绍1.1 基本信息1.2 考研信息1.3 导师信息 二、预处理及分析2.1 数据预处理2.1.1 考研信息预处理2.1.2 导师信息预处理 2.2 数据分析 三、可视化方法及结果3.1 可视化方法3.2 可视化结果展示3.2.1 基本信息3.2.2 考研信息3.2.3 导师信息 四、总结五、附录…

git 获取两个版本间的变更文件,生成增量包

可用于代码在无git环境情况下的做增量包 注意:版本号1一般是上一次版本的结束。 #下面命令可以获取两个版本直接的变更文件git diff 版本号1 版本号2 --name-only git diff 版本号1 版本号2 --name-only | xargs zip update.zip 牛逼之处就是打出来的压缩包是带…

89C52RC普中单片机-4

20230629 Thusday lcd1602代码 lcd1602.c #include <REGX52.H>//引脚配置&#xff1a; sbit LCD_RSP2^6; sbit LCD_RWP2^5; sbit LCD_ENP2^7; #define LCD_DataPort P0//函数定义&#xff1a; /*** brief LCD1602延时函数&#xff0c;12MHz调用可延时1ms* param 无*…

论文笔记--GPT-4 Technical Report

论文笔记--GPT-4 Technical Report 1. 报告简介2. 报告概括3 报告重点内容3.1 Predictable Scaling3.2 Capabilities3.3 limitations3.3 Risks & mitigations 4. 报告总结5. 报告传送门6. References 1. 报告简介 标题&#xff1a;GPT-4 Technical Report作者&#xff1a;…

uniapp怎么把px转换成对应手机型号的rpx

首先获取系统手机屏幕的宽度系统信息的概念 | uni-app官网&#xff0c;然后根据公式转换 rpx 750*元素 B 在设计稿上的宽度为 多少px/手机屏幕的宽度 详见&#xff1a;CSS 支持 | uni-app官网 如下为把宽度为1px的转成对应手机型号的rpx uni.getSystemInfo({success(res) {co…