DevOps 到底是什么到底是什么

2023-11-18


链接:https://www.zhihu.com/question/55874411/answer/608052871


 

DevOps 到底是什么

2018 年,我们走访了近百个分布在各行各业中的 IT 团队,意外的发现,大多数的 IT 团队寻求改革并非来源于部门内部的自我革新,而是来源于业务部门的服务压力。正如同当年企业寻找 ERP,今天的企业将目光投向了 DevOps。但是 DevOps 并非像 ERP 那样可以直接部署的东西,而是一种由主流互联网巨头们所总结出来的的研发管理理念,是 Google、Netflix 等大型互联网公司实现快速迭代的秘诀。

作为一家专注于研发 DevOps 工具链的公司创始人,我在接触客户的时候,发现一个很有趣的现象:所有人都想“做” DevOps 并期待其能为他们带来商业上的成功,却对 DevOps 的核心理念知之甚少。这很大一部分原因是市面上对 DevOps 有着各种各样的说法,导致大家概念的混淆。想要弄清楚 DevOps 到底是什么,必须先从它的本质说起。

软件开发最高效的组织形式是“One Man Work”,只有一个人干活,写个小项目,从需求到开发,从测试到部署全部独立完成,非常高效。但随着业务的增长,项目开始逐渐变得庞大,变成团队,出现了分工,出现了产品经理、项目经理、开发、数据、测试、运维等等角色。这些角色间存在天然的工作目标上的矛盾。

举个例子,对于运维来说,稳定压倒一切,新 Feature 越少越好。而对于研发来说,却希望能开发更多的功能。这种矛盾会导致大量的资源和时间的浪费。就像两匹马拉一辆车,如果马头向着的方向不一致,肯定是没法全速前进的。

DevOps 的理念就是希望能打破这种屏障,让研发(Development)和运维(Operations)一体化,让团队从业务需求出发,向着同一个目标前进。

字面意思上说 DevOps 是指“开发运维一体化”,即通过工具辅助开发完成运维的部分工作,减少成本。但深入理解了 DevOps 之后,你会发现 DevOps 其实是一种软件研发管理的思想,方法论,他追求的是一种没有隔阂的理想的研发协作的状态,可能涉及到的角色有开发、测试、产品、项目管理、运维等等。所以我们认为,为了帮助研发团队在保持质量的前提下提高交付效率的方法和方法论都隶属于 DevOps 的范畴

比如 Google 提出的 5 个 DevOps 原则,这套原则中必须依赖于工具辅助的部分只有后两点,更多的则是对于开发组织形式的内省:

  1. 精简组织架构;
  2. 愿意承担一部分试错带来的损失;
  3. 分阶段地一小步一小步地进行转型;
  4. 最大化地利用工具和自动化流程;
  5. 对所有的过程和结果进行记录和分析。

所以 DevOps 不是简单的开发软件化,而是企业的学习能力不断提升的结果,将企业改造成敏捷应对的学习型组织,运用新的工具,优化组织架构和流程,不断地进行自我革命和创新的方式。工具是辅助,而非基础。


困难重重的 DevOps 落地

在弄清楚了 DevOps 的宏观定义之后,我们再来观察一下 DevOps 目前在国内的实践现状。根据南京大学 «DevOps 中国•2018 年度调研» 的调研报告,目前设有 DevOps 实践团队的公司中,科技和互联网行业占比接近 70%。其他行业的从业者对 DevOps 的认知还存在一定的不足。

这与我们的调研走访体验一致:大多数企业都愿意尝试运用 DevOps ,但是在实践 DevOps 中,普遍碰到了比较大的困难。主要是以下三个原因:

  • 对 DevOps 有不切实际的预期

部分团队为了做 DevOps 而做 DevOps,并没有真正的从业务的角度出发来考虑。

如前文所说,DevOps 不是银弹,高水平的研发团队在 DevOps 实践中将快速找到研发质量与业务增长的平衡点。但对于许多仍然在使用中心化的研发组织形式的团队来说,DevOps 的尝试无法立即获得肉眼可见的增长数据,思索与尝试带来的对团队的训练可能会是第一份收获。

  • 步子迈得太大

新生代互联网公司诞生于 DevOps 理念已经相对成熟的年代,且互联网公司天生地将迭代速度作为追求目标之一,使得这些公司能够在发展的初期,就将 DevOps 的理念融入到公司的架构设计中。

上图是 Netflix 的整个系统架构。如此复杂的系统架构同时还能每天迭代几十个版本,无法通过传统的研发管理模式来维护,只有通过实践 DevOps 的理念,来优化组织的分工、资源和能效,才能得以实现。在这样的组织里,已经不需要有人了解所有模块是做什么,每个人只需要对自己的模块负责。

而很多企业,为了巩固和提高自己的市场竞争力,非常急于达成上述高效的状态,并且希望能一步到位。国内其实大部分团队都没到大规模实践 DevOps 的时间点,有些团队甚至连分支开发、并行开发的方式都没有。我给这类的企业建议是:不要想着一口气吃成个胖子,一步一步来,先理解 DevOps 的理念和对业务的实际意义,然后搭建一只小的 DevOps 团队来承接一项新业务,旧的业务仍然使用旧系统,双轨并行,等待小团队适应了 DevOps 的管理节奏之后再向其他团队进行推广。

之前出过一篇关于 DevOps 的专题报告《四周年 · 专题报告:双速 IT》,也可以作为参考。

  • Toolchain Crisis

实践 DevOps 的原则中很重要的一点就是对工具的运用及依赖工具搭建合适企业的自动化流程。但是目前市面上缺乏成熟的 DevOps 工具链,各个服务商的细分工具层出不穷,企业为了搭建整套 DevOps 流程,需要研究几十种工具,并选取其中的 7-8 种进行落地实践。非常依赖于管理者的项目经验,没有 DevOps 经验的团队起步将会比较困难。

以 CODING 为例。2018 年之前 CODING 产品仅有任务及代码管理模块。我们是这样进行工作的:产品经理在 CODING 上撰写文档创建任务,研发 Leader 将任务分配给开发,开发完成后提交代码,并创建 MR,我们在本地部署了 Jenkins 进行持续集成进行构建和测试,再由其他工程师进行人工评审,通过后并到发布分支,进行预发布,再通过持续集成进行构建,自建 Docker registry 进行构建物管理。构建出的 Docker 镜像在测试环境和预发布环境上依次进行自动化测试及人工测试,测试通过后,使用我们运维自己搭建的工具进行部署管理。

目前 CODING 每天都进行产品迭代,可以快速响应用户需求并保证服务质量,但搭建这一整套的流程高度依赖于团队能力,门槛非常高。

为了降低工具的成本和使用门槛,包括 CODING 在内的很多云服务厂商都在做打通全流程的 DevOps 工具链的尝试,希望可以做到让企业开箱即用,低成本的践行 DevOps 理念,不过目前产品仍处于迭代期,无法满足所有企业的需求。

 

链接:https://www.zhihu.com/question/55874411/answer/608052871

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

DevOps 到底是什么到底是什么 的相关文章

  • 前端常用js插件

    浏览目录 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 MVC 框架和库 基于 Node 的 CMS 框架 模板引擎 Flux 数据可视化 时间轴 编辑器 文件 函数式编程 响应式编程 数据结构 日期 字符串
  • 直联和间联的区别——直连和间连的区别

    直联和间联的区别 直联就是商户直接和银联对接 商户 银联 直联一般商户自己支付手续费 间联就是商户间接和银联对接 商户 第三方支付 银联 间联也要支付 但一般是有人帮你付 直连和间连的区别 直连 指第三方支付直接与商业银行做对接 如果是本行
  • 硬件基础知识

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 SCLK SCLK是一种有固定周期并与运行无关的信号量 CLK CLK是一种脉冲信号 TDNN 时延神经网络 它的两
  • UE4持续集成打包(Mac脚本自动化打包)

    主要通过RunUAT进行打包 win和mac均可以打包 本次打包实现在Mac环境下 使用 Engine Build BatchFiles RunUAT sh 参考命令格式 参考文献1 RunUAT BuildCookRun project
  • 一些优秀的开源轻量级TCP/IP协议栈

    以下是一些优秀的开源轻量级TCP IP协议栈 它们适用于嵌入式设备和其他资源受限的环境 lwIP lightweight IP lwIP 是一个非常流行的开源 TCP IP 协议栈 它专门为嵌入式系统设计 具有低内存占用和高效率的特点 lw
  • 【小程序】实现经典2048小游戏

    概述 经典小游戏2048 2048小游戏对于逻辑要求还是很有技术含量的 有兴趣的可以看看 详细 以前学习时写的小游戏2048 技术含量还是不错的 有兴趣的可以看看 2048已经封装好了 在主页面直接引入文件可以直接调用 演示图 调用wxml
  • 设计圆和圆柱体

    编写一个完整的Java Application 程序 包含类Circle Cylinder Main 具体要求如下 1 编写类Circle 表示圆形对象 包含以下成员 属性 radius 私有 double型 圆形半径 方法 Circle
  • Python3.X出现AttributeError: module 'urllib' has no attribute 'urlopen'错误

    研究用Python写爬虫 下载一个网页 报错代码如下 import urllib def getHtml url page urllib urlopen url html page read return html html getHtml
  • 导致事务@Transactional失效的5种场景

    一个程序中不可能没有事务 而 Spring 中 事务的实现方式分为两种 编程式事务和声明式事务 又因为编程式事务实现相对麻烦 而声明式事务实现极其简单 所以在日常项目中 我们都会使用声明式事务 Transactional 来实现事务 Tra
  • 英文学术论文写作——模式识别方向(笔记)

    文章目录 文章结构 英文写作tips Latex小技巧 英文学术论文写作经验几乎为0 在老师和师兄们的帮助下 学习到了如何撰写文章 仅限于模式识别方向的 文章结构 文章除去abstract acknowledgment以及reference
  • 深度学习目标检测综述学习

    目录 0 摘要 1 引言 2 背景 2 1 问题描述 2 2 目标检测中的关键挑战 3 数据集以及评价指标 3 1 数据集 1 PASCAL VOC 07 12 2 ILSVRC 3 MS COCO 4 Open Image 3 2 指标
  • vue一行代码实现富文本编辑器

    vue中我们可以使用tinymce第三方组件 第一 我们先将tinymce下载下来 下载链接 https pan baidu com s 15hvafdE7czBM9Wdu5sh9Ow 提取码 kv48 然后引入两个文件到我们项目中 第二部
  • 第十一届蓝桥杯 ——互质(gcd求最大公约数)

    gcd最大公约数 Rudy的博客 CSDN博客 gcdhttps blog csdn net xiaoyue article details 83239172 ops request misc 257B 2522request 255Fid
  • go语言exec包调用shell命令

    工程中需要用到ffmpeg 想直接用exec包调用shell命令 本来以为很简单 结果折腾了一下午 最后查到了解决方案 假如之前执行报错的语句为 cmd exec Command echo helloworld out err cmd Ou
  • 智能时代悄然到来刷脸支付逐渐成为潮流

    随着人脸识别 人工智能 物联网 大数据等前沿技术的迅速发展 智能时代已悄然到来 刷脸支付也逐渐成为一种潮流 如今 刷脸支付愈发常见 除了乘车刷脸 看病刷脸外 值机 安检 登机也都可以刷脸了 机场不用排长队 不用身份证 仅需一张脸即可登机的刷
  • rabbitmq web界面报错 Access refused

    赋予权限就好了 rabbitmqctl set permissions p 当前登录账户的账号
  • 态势感知与态势理解

    几个星期前 我与我的一个机构同事碰面 讨论了最新的备受瞩目的袭击事件 他向我提到了一个新词 态势理解 在USB提案中做了8个月的工作后 我对催吐流行语并不陌生 这个词立即引起了人们的注意 但是由于我一直在讨论几天 所以这个词本身正在赢得信誉
  • 【MLOps】第 2 章 : MLOps中的人

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 备战2023蓝桥国赛-传纸条

    题目描述 解析 这道题想了我好久 一开始我是想假如只走一条路线 从 1 1 走到 m n 这种问题该怎么解决呢 针对这种问题我是设了dp k i j 表示走了k步到达 i j 的好心程度之和的最大值 然后根据这个来写出转移方程来计算 后面就

随机推荐

  • Nginx 队列双向链表结构 ngx_quene_t

    队列链表结构 队列双向循环链表实现文件 文件 src core ngx queue h c 在 Nginx 的队列实现中 实质就是具有头节点的双向循环链表 这里的双向链表中的节点是没有数据区的 只有两个指向节点的指针 需注意的是队列链表的内
  • JVM安全退出(如何优雅的关闭java服务)

    https tech imdada cn 2017 06 18 jvm safe exit utm source tuicool utm medium referral 背景 用户 货都到了 购物车里怎么还有刚买的东西 what 产品 有用
  • 如何助力金融贷款企业实现精准营销获客

    无论是哪个行业 吸引客户都是核心 许多公司的线下渠道面临着许多障碍 以至于他们不得不采用在线客户获取方法 受影响最大的行业之一是贷款行业 如何获得准确的贷款客户资源 如何赢得客户已经成为企业的一大痛点 过去 信贷员经常使用电话营销 本地促销
  • IP(OSPF综合实验)

    一 实验 1 R4为ISP 其上只能配置IP地址 R4与其他所有直连设备间使用公有IP 2 R3 R5 6 7为MGRE环境 R3为中心站点 3 整个OSPF环境IP地址自定义 4 所有设备均可访问R4的环回 5 减少LSA的更新量 优化
  • apache Commons-beanutils的使用

    1 背景 在java开发过程中 经常会与javabean打交道 像Entity pojo vo dto等等 java应用非常讲究分层架构 因此在各层之间bean的传输与转换非常的繁琐 比如 Student stu new Student s
  • 基于OpenCV的双目测距系统实现

    基于OpenCV的双目测距系统实现 The BinocularMeasure System Based on OpenCV Abstract This passage mainly describes how to measure dist
  • nginx安装配置

    1 nginx下载 http nginx org download 选择对应版本的nginx下载 这里选择 nginx 1 21 6 tar gz 2 环境准备 必备环境 sudo yum install y gcc c 必须下载 3 个依
  • mysql学习笔记(6)_存储过程

    原本觉得掌握最基本的语法就行了 但发现老师最近又提到了存储过程 我觉得有必要学习整理一下 以下是我的简单笔记 存储过程的含义以及优点 含义 一组预先编译号的sql语句的集合 理解成批处理语句 优点 1 提高代码的重用性 2 简化操作 3 减
  • qq机器人如何滑动验证码验证TxCaptchaHelper

    当我们再运行QQ机器人时出现 一下信息 提示需要滑动模块验证 复制上中的url 在浏览器打开 点击开始验证 出现验证图片 打开开发者控制台 一般浏览器快捷键为 F12 切换到 网络 拖到滑块 验证成功后 会出现 在 预览 中会看到ticke
  • 16-2_Qt 5.9 C++开发指南_使用样式表Qss自定义界面

    进行本篇介绍学习前 请先参考链接01 1 Qt工程实践 Qt样式表Qss 后再结合本篇进行融合学习如何使用样式表定义界面 文章目录 1 Qt样式表 2 Qt样式表句法 2 1 一般句法格式 2 2 选择器 selector 2 3 子控件
  • [Unity][Aniamtor&Animation]动画状态机设置自定义脚本StateMachineBehaviour

    对状态机设置自定义脚本StateMachineBehaviour 这种脚本能够实现什么 优点 通过Animator的状态机就可以实现 敌人AI NPC AI 可以在对应状态机 的动画进行 播放 的时候 生成 特效 音效 以及特定的物品 例如
  • Linux源码编译开启cgroup blk限制io性能

    编译选项 内核5 9 General Setup gt Control Group support gt io controller Enable the block layer gt Block layer bio throttling
  • mysql基本数据类型

    概述 要想学好mysql 了解其支持的基本数据类型以及内部原理是极为重要的 只有这样 我们才能根据不同的业务要求来选择不同的数据类型 实现最佳的存储效果和查询性能 因而本文就着重总结一下mysql支持的数据类型以及内部的存储原理 总体来说
  • Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks

    Abstract 卷积神经网络 cnn 被认为是一类有效的图像识别模型 然而 当利用CNN学习时空视频表示时 这并非不平凡 一些研究表明 执行3D卷积是一种捕获视频中时空维度的有益方法 然而 从头开始开发非常深的3d cnn会导致昂贵的计算
  • 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.29. Coreutils-8.23...

    Coreutils 软件包包含用于显示和设置基本系统特性的工具 大概编译时间 2 5 SBU 需要磁盘空间 193 MB 6 29 1 安装 Coreutils POSIX 要求 Coreutils 中的程序即使在多字节语言环境也能正确识别
  • ChatGPT3.0、ChatGPT3.5和ChatGPT4.0版本。

    ChatGPT3 0版本是目前最先进的对话生成系统之一 已经在多个应用场景中得到了广泛应用 相较于以往的版本 ChatGPT3 0在模型规模和语言能力上都有了明显的提升 这一版本的模型包含了1 75万亿个参数 而且其生成的对话内容更加流畅
  • 性能优化点

    Arts and Sciences Computer Science myUSF 索引3层 高度为3 一般对于数据库地址千万级别的表 大于2000万的数据进行分库分表存储 JVM整体结构及内存模型 JVM调优 主要为减少FULL GC的执行
  • javascript下的protype

    了解下JavaScript中的prototype JS中的phototype是JS中比较难理解的一个部分 javascript的方法可以分为三类 类方法 对象方法 原型方法 例子 view sourceprint 01 function P
  • Vue3 从入门到放弃 (第二篇.创建第一个Web应用)

    上一篇讲到了 Vue3的一些前期准备和环境配置 Vue3 从入门到放弃 第一篇 环境准备 Meta Qing的博客 CSDN博客 今天我们来讲讲 项目结构以及各个文件介绍 并且创建我们第一个WEB应用 我们继续上一篇 创建完工程结构 目录介
  • DevOps 到底是什么到底是什么

    链接 https www zhihu com question 55874411 answer 608052871 DevOps 到底是什么 2018 年 我们走访了近百个分布在各行各业中的 IT 团队 意外的发现 大多数的 IT 团队寻求