DevOps是什么

2023-11-18

DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。

可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。
传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而却需要极其紧密的多部门协作。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协作问题的流程和方法。

需要频繁交付的企业可能更需要对DevOps有一个大致的了解。Flickr发展了自己的DevOps能力,使之能够支撑业务部门“每天部署10次”的要求──如果一个组织要生产面向多种用户、具备多样功能的应用程序,其部署周期必然会很短。这种能力也被称为持续部署,并且经常与精益创业方法联系起来。 从2009年起,相关的工作组、专业组织和博客快速涌现。
DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出问题的地方。

以下几方面因素可能促使一个组织引入DevOps:
使用敏捷或其他软件开发过程与方法
业务负责人要求加快产品交付的速率
虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍
数据中心自动化技术和配置管理工具的普及
有一种观点认为,占主导地位的“传统”美国式管理风格(“斯隆模型 vs 丰田模型”)会导致“烟囱式自动化”,从而造成开发与运营之间的鸿沟,因此需要DevOps能力来克服由此引发的问题。
DevOps经常被描述为“开发团队与运营团队之间更具协作性、更高效的关系”。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。

DevOps对应用程序发布的影响
在很多企业中,应用程序发布是一项涉及多个团队、压力很大、风险很高的活动。然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下:
与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位)
减少变更范围与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。加强发布协调靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。强大的自动化部署手段能够确保部署任务的可重复性、减少部署出错的可能性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DevOps是什么 的相关文章

  • 后疫情时代企业云原生成本优化指南

    在本篇文章的末为还有福利 在等着大家哦 前言 近年来 公有云 混合云等技术在全球迅速发展 云的普及度越来越高 Docker Kubernetes DevOps Service Mesh等云原生技术蓬勃发展 但在 上云 之后 企业却往往发现
  • Jenkins 管道确定分支是否用于 Bitbucket 拉取请求

    我将 Jenkins 与Bitbucket分支源插件 一切都很好 但我希望能够根据分支是否与拉取请求关联来运行 排除管道中的某些阶段 例如 pipeline stages stage build compile stage package
  • GitHub 操作发布标签

    在 GitHub 中创建发布后 我会触发 GitHub 操作 在此操作中 我想从发布中获取一些数据 这可能吗 例如 我想获取标签 然后使用这个标签作为NuGet包版本 有没有办法从工作中获取这些数据 您可以使用 github ref or
  • 标志值构建无效:构建的拉取访问被拒绝,存储库不存在或可能需要“docker 登录”

    我正在尝试在 azure DevOps 管道中构建一个简单的 docker 控制台项目 但我无法构建该项目 当我尝试复制代码时出现此错误 标志值构建无效 构建的拉取访问被拒绝 存储库不存在或可能需要 docker登录 拒绝 请求的资源访问被
  • AWS CodePipeline:在 CodeBuild 中获取 CloudFormation 输出

    我正在使用 AWS CodePipeline Cloudformation 和 CodeBuild 学习一些开发运营技术 我的 简化的 管道是这样的 推送到 github 存储库会触发管道 CloudFormation 构建 更新后端基础设
  • 这套Go语言开发框架组合真的非常高效

    我尝试过很多框架 从Django Flask和Laravel到NextJS和SvelteKit 到目前为止 这是我唯一可以使用的不会让我感到疯狂或者放弃项目的堆栈 框架 我喜欢所有这些框架 但我只是不太适应它们的设计方式 实际上 我是一个弱
  • 在ansible中使用连字符

    我正在学习 Ansible 但我很困惑何时在剧本中使用连字符 何时不使用连字符 据我所知 连字符用于 Ansible 中的列表 例如 my first playbook hosts webservers why did we use hyp
  • Azure Devops 发布管道 XML 变量替换不起作用

    我的发布管道中有一个非常简单的变量替换 但它不起作用 我有变量connectionStrings config文件如下
  • cf run-task 运行前需要上传 env/script 吗?一种优雅的方式?

    我正在与 Cloud Foundry 合作 My need是在我的应用程序之外运行数据库迁移 以便我可以在需要时以某种方式 cf 命令 api 调用等 触发迁移 我被推荐使用cf run task 经过检查 我的理解是 cf run tas
  • 计划错误:尚未使用 Cloud Resource Manager API

    当我尝试跑步时 steps id Plan Terraform name hashicorp terraform light args plan 在 Cloud Build 中 我收到错误 Error Error reading Proje
  • 什么是 gitlab runner

    我想我从根本上错过了一些东西 我是 CI CD 新手 正在尝试使用 gitlab 建立我的第一个管道 该项目是一个预先存在的 PHP 项目 我还不想清理它 目前我已经将整个东西推入了 docker 容器 并且它与谷歌云的 mysql 数据库
  • 无法终止容器::尝试终止容器,但未收到退出事件

    我无法停止 删除或终止我的 docker 容器 下面给出的命令及其各自的错误消息 1 docker stop
  • 在开发与生产版本中自动更改 Vite 代理位置?

    在我正在开发的单页应用程序中 我正在使用 Vite 并在我的vite config ts文件我有以下代理 proxy v1 target https 127 0 0 1 8080 changeOrigin true secure false
  • 将 APK 发布到 Play 商店时出现构建版本问题

    我看过很多答案 但大多数都已经过时了 我正在尝试使用 Azure DevOps 管道将我的 Android 应用程序发布到 Play 商店 我遇到了 APK 版本代码的问题 出现以下错误 APK指定已使用的版本代码 任何人都知道如何增加存在
  • Docker 守护进程未运行

    这方面的新手 我已经在我的 Windows PC 上安装了新版本的 Docker 我使用的是 Windows 10 专业版 我已经尝试了非常基本的 docker 命令 但它不起作用 我还以管理员身份运行 docker 总是出现以下错误 do
  • 如何将 GitLab CI 文件变量传递给 Dockerfile 和 docker 容器?

    GitLab CI 允许向项目添加自定义变量 它允许使用类型的秘密变量file我指定的键是变量名称 值是文件的内容 例如证书的内容 然后在管道执行期间 内容将被保存为临时文件 调用变量名称将返回创建文件的路径 最终我需要将此文件复制到构建项
  • 更改 Kubernetes 中的 CPU 管理器策略

    我正在尝试更改我管理的 Kubernetes 集群的 CPU 管理器策略 如上所述here https kubernetes io docs tasks administer cluster cpu management policies
  • Terraform 规划自动化中人类可读的输出

    我已经通过 github jenkins 设置了自动化 以通过 jenkins 发布 repo 的 terraform plan 的输出 作为对 github 中拉取请求的评论 整个编排工作得很好 除了 terraform plan 的输出
  • 在 Subversion 中合并分支时预防冲突

    我最近在 Subversion 中观察到一个非常奇怪的合并冲突 我使用乌龟SVN作为客户端 干线和分行详细信息请参见以下信息 树干 两个用户正在研究这个问题 QA 是主干合并将发生的分支 为了简单起见 trunk ClassLibrary1
  • 如何配置 Ansible 跳过两个堡垒主机?

    我想编写一个 Ansible 剧本 使用 Ansible 2 7 5 它将在到达目标服务器之前跳过两个主机来执行诸如安装 docker 和 python 等操作 我能够让 Ansible 通过一台主机跳转到server1通过将其添加到我的h

随机推荐

  • 全新范式

    在本文中提出了一种简单的注意力机制Box Attention 它支持网格特征之间的空间交互 从感兴趣的Box中采样 并提高了Transformer针对多个视觉任务的学习能力 具体来说 介绍的BoxeR 即Box Transformer的缩写
  • CNN:Windows下编译使用Caffe和Caffe2

    用于检测的CNN分为基于回归网络的方法和基于区域 CNN网络的方法 其中基于回归网络的方法典型为YOLO9000 可以兼容使用VGG Net框架 其中基于区域 CNN网络方法 大量使用了Caffe作为基础CNN框架 准备工作 python2
  • 安装nedo.js 'npm'不是内部或外部命令,也不是可运行的程序 或批处理文件

    npm 不是内部或外部命令 也不是可运行的程序 或批处理文件 问题 没有npm命令需要按需node js npm 不是内部或外部命令 也不是可运行的程序 或批处理文件 一 下载安装node js nodejs官网 https nodejs
  • Spring Boot Metrics使用

    Spring Boot 使用Metrics监控 导入pom依赖
  • 2021年第八届大唐杯全国大学生移动通信5G技术大赛省赛

    2021年第八届大唐杯全国大学生移动通信5G技术大赛省赛 实验背景 勘站规划 网络部署 开通调测 业务认证摘自 https www bilibili com video BV1Hr4y1Y7m8 spm id from 333 337 se
  • vue+$emit调用父级方法,添加其他参数

    前言 我们在vue中子组件调用父组件的方法使用的是this emit 方法名 参数 但是在某些特定场合 我们还希望可以在父组件那里添加其他参数 实现方法
  • 新手学习Python要注意的13个问题

    作为一门易学的编程语言 Python对初学者来说确实是一个非常好的选择 不过 初学者在学习Python的过程中可能会遇到一些常见的问题 以下是一些常见的Python学习问题 语法错误 语法错误是最常见的问题之一 初学者经常会忘记冒号 括号
  • llvm之IR设计

    llvm之IR设计 引言 1 逻辑关系 2 class Module 3 class IRBuilder 4 class Instruction 5 class Constant 6 class Function 引言 llvm IR是ll
  • v-if与v-show的区别=====》面试题

    共同点 都是控制元素显示或隐藏的指令 区别 v show 控制元素无论是true还是false都会被渲染出来 通过diaplay none控制元素隐藏 v if控制元素是true渲染 是false不渲染 在dom树结构中不显示 加分回答 应
  • [STM32系列]一、HAL库的串口中断接收

    STM32系列 一 HAL库的串口中断任意长度接收 1 前言 2 回调函数 3 HAL库中断接收函数使用 1 前言 HAL即硬件抽象层 英语 Hardware Abstraction Layer 实现了不同硬件的统一接口操作 这就极大的简化
  • 极简Json格式剖析与fastjson下载和使用

    Json存在的意义 Json主要用来做数据的传输 例如发送java中的一个对象 由于对象是存储在内存里的 不能直接将内存里的对象发送出去 这时需要使用序列化 持久化 手段 将对象转换为一系列字符串 比如说Json 在字符串送达目的地时再使用
  • HTTP协议和Tomcat服务器

    目录 1 HTTP 是什么 2 HTTP 工作过程 2 1 HTTP 协议格式 2 1 1 抓包工具的使用 2 1 2 抓包工具原理 2 1 3 抓包结果分析 2 1 4 协议格式总结 3 HTTP 请求 Request 3 1 请求地址
  • 常用的数组方法整理

    常用的数组方法 1 concat 2 join 3 pop 4 shift 5 unshift 7 reverse 8 sort 9 slice 10 splice 11 toString 12 valueOf 13 IndexOf 14
  • 二、Vue3跨组件调用函数[mitt]

    一 跨组件调用函数 安装 npm install mitt 创建文件并写入 bus js import mitt from mitt export const eventBus mitt 使用方法 import eventBus from
  • 2022年6月8日STM32——SPI读写串行FLASH 和 串行FLASH文件系统FatFs

    此内容是为自己方便回忆 如有错误 欢迎指导 内容来源于野火指南者开发板教程 一 SPI读写串行FLASH SPI Serial Peripheral Interface 串行外围设备接口 是高速全双工的通信总线 通讯速率较高 SPI物理层
  • VS2019中文输出乱码解决方法(C语言)

    现象 VS2019控制台输出中文乱码 第一种解决方法 安装插件Format on Save重启VS2019生效 注意 别装错了 刚开始我就装错了这个UTF 8 No BOM 装了这个插件的同学 记得要删掉 不然还是会出现问题 第二种解决方法
  • 等价类

    动态测试方法是指通过运行被测程序 检查运行结果与预期结果的差异 并分析运行效率 正确性和健壮性等性能 这种方法由三部分组成 构造测试用例 执行程序 分析程序的输出结果 静态方法是指不运行被测程序本身 仅通过分析或检查源程序的语法 结构 过程
  • 无线通信原理之OFDM技术

    补充一个完整的OFDM系统结构图 包括收发天线 目录 1 OFDM的基本原理 2 OFDM系统模型 3 循环前缀和导频 4 OFDM系统参数 1 OFDM的基本原理 OFDM即正交频分复用 Orthogonal Frequency Divi
  • React-错误边界与组件通信方式概述

    错误边界 错误边界 Error boundary 用来捕获后代组件错误 渲染出备用页面 注意 只在生产环境 项目上线 起效 特点 只能捕获后代组件生命周期产生的错误 不能捕获自己组件产生的错误和其他组件在合成事件 定时器中产生的错误 简单理
  • DevOps是什么

    DevOps 英文Development和Operations的组合 是一组过程 方法与系统的统称 用于促进开发 应用程序 软件工程 技术运营和质量保障 QA 部门之间的沟通 协作与整合 它的出现是由于软件行业日益清晰地认识到 为了按时交付