写点什么

什么是(不是)DevOps,我们如何实现 DevOps?

  • 2014-03-11
  • 本文字数:2159 字

    阅读完需:约 7 分钟

在本文中我们将会讨论一些人们对 DevOps 的误解,同时会介绍一个能够带来 DevOps 文化转变的流程。

在一篇题为“不,你并不是一个 DevOps 工程师”的博文中,Cloud Technology Partners 公司的副总裁兼首席架构师 Mike Kavis 谈论了一些与 DevOps 相关的错误想法。例如,他提到一些团队是如何误用术语 DevOps 的:

企业正在为 DevOps 苦恼。他们都想得到 DevOps,即使很多企业并不知道它到底是什么。在很多情况下,我会看到那些自称 DevOps 的基础设施团队在领导一个基层倡议。当我问他们开发团队在哪里的时候,他们通常会说“我们并没有邀请他们”,甚至更糟“我们并没有同他们交流”。

一些工程师将自己宣传为 DevOps,但是他们并不是,因为根据 Kavis 所说“DevOps 并不是一个人,一个角色或者一个头衔。即使你可以声称自己是一个 DevOps 工程师,但是这仅是你自己的看法,实际上你并不是。”如果 DevOps 不是一个角色,一个资格,一个头衔 ,那么它到底是什么呢?Kavis 的定义是:

DevOps 是一种文化转变,或者说是一个鼓励更好地交流和协作(即团队合作)以便于更快地构建可靠性更高、质量更好的软件的运动。

然后他详细描述说:

DevOps 是软件开发生命周期(SDLC)从瀑布式到敏捷再到精益的发展。DevOps 超越了敏捷,它的关注点是从 SDLC 中移除浪费。通常情况下,发现浪费或者瓶颈的形式包括:不一致的环境,人工的构建和部署流程,差的质量和测试实践,IT 部门之间缺少沟通和理解,频繁的中断和失败的协定以及那些需要珍贵的资源、花费重要的时间和金钱才能保持系统运行的全套问题。

我看到的另一个重复模式是:一个“DevOps”团队的第一步通常是决定他们是否应该使用 Chef 或者 Puppet(或者是 Salt、Ansible 等其他任何热门的东西)。他们甚至还没有定义自己打算解决的问题,即使他们手头的工具可以解决它们。这些团队通常会紧张地构建数千行脚本,但是这就产生了一个问题:“我们的职责是编写 Chef 脚本还是通过质量更好、更稳定的产品更快地进入市场?”。在大多数情况下,这些团队会将自己逼入绝境,大量的专有脚本实际上是增加了系统的浪费,而隐藏在 DevOps 运动之后的驱动力是从系统中移除浪费,这些团队并没有做到这一点。

如果说 DevOps 是一种打算让开发某个产品的多个团队之间能够更好的交流和协作的文化变革,那么下一个问题就是我们该如何实现 DevOps,我们如何将这种文化引入到自己的公司中?

DTO Solutions 的共同创建者 Damon Edwards 在 2013 年的 DevOps Days Mountain View 上做了题为“如何发起一个DevOps 变革”的主题演讲,他推荐通过一个三步走的过程将DevOps 文化引入到某个组织中:

1.弄清楚“为什么?”

根据 Edwards 所说,首先非常清楚组织成员为什么会聚到一起,知道他们试图实现什么,清楚他们的目的是什么是非常重要的。为了找到这些问题的答案我们应该直接与组织中的这些人交流,询问他们为什么会出现在这里。组织的主要目标是我们实现 DevOps 文化的唯一原因,除此之外没有其他原因。

Edwards 认为 _DevOps_ 仅仅是达到目标的一种手段,但是它自己本身并没有结束:“DevOps 并不是你的 _ 为什么 _,不是你合作伙伴的 _ 为什么 _,当然也不是你业务的 _ 为什么 _”。他甚至建议忘记 _DevOps_ 团队,而是使用 _ 服务交付 _ 作为替代,因为“我们的职责是创造服务”。

2. 实现组织合作

按照 Edwards 介绍的过程,接下来需要做的是使整个组织合作,让所有人基于一组共享的条件和规则向一个共同的目标努力。当你能够把同一个目标指定给多个人的时候,一个组织就实现了正确的合作,他们会选择同样的方式去实现各自的目标;他们对于同一个问题有同样的答案。这可能是“组织合作的终极梦想”。

为了完成这种合作,组织内部必须要有人描绘一个 _DevOps__ 愿景 _。这并不能通过教学过程实现,因为人们只会尝试着机械性地遵循这些步骤。我们需要的是教会大家一种思维方式。根据 Edwards 所说,这可以通过遵循下面的几个步骤实现:

  1. 教导基本的概念,例如“单件流、批量工作、限制在制品的数量、拉式 vs 推式、持续交付”以及可以使用的工具等组织将会共享的一些通用词汇的概念。
  2. 让所有人目标一致,通过:
    a. 价值流程图——一个精益概念,它详细描述了一个组织内部发生的信息流和制品流,引导价值创造。
    b. 时间线分析——试图发现时间花费在哪里,瓶颈在哪里。
    c. 浪费分析——确定一个组织所产生的各种各样的浪费以便于尽可能地消除浪费。
  3. 发展度量链它的意思是对价值交付链中的各个活动进行度量,发现各个活动相互之间的影响。
  4. 针对基线识别项目/ 实验。识别哪些项目或者活动偏离了基线,并且采取纠正措施。
  5. ** 重复第24步。** 这一步构成了持续改进流程。

为了实现这些想法,Edwards 建议了一个 3 天的计划:

  • 1天—— 教导原则,提出一个方案进行研究,模式和反模式
  • ** 第2天——** 分析组织当前的状态,提供问题识别技术和改进指标
  • ** 第3天——** 讨论解决方案和工具链自动化原则,构建一个路线图

3.持续改进循环

这些循环的目的是通过制定计划、实现计划、测量输出和决定如何持续地改进流程。

在最近举行的 QCon London 2014 上 Edwards 做了题为“ Dev ‘Programming’ Ops For DevOps Success ”的分享,其中就讲到了这些原则,稍后这个分享将会发布到 InfoQ 上。

查看英文原文 What Is (Not) DevOps, and How Do We Get There?

2014-03-11 05:4220523
用户头像

发布了 321 篇内容, 共 119.5 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

智云盾捕获多个僵尸网络利用最新ConfluenceRCE漏洞的活动

百度开发者中心

安全 漏洞

架构实战营模块四作业 - 设计千万级学生管理系统的考试试卷存储方案

李焕之

案例分享 | dubbo 2.7.12 bug导致线上故障

捉虫大师

dubbo 问题排查

Linux用户/用户组编辑

在即

9月日更

架构训练营 模块四

Leach Sun

刷爆Leetcode!字节算法大佬进阶专属算法笔记:GitHub标星97k+

Java 架构 面试 程序人生 LeetCode

如何使用FL Studio录制外部音频

懒得勤快

金秋国庆|官微掌门人火热征集!期待你的掌舵!

InfoQ写作社区官方

国庆中秋 热门活动

浅谈语音质量保障:如何测试 RTC 中的音频质量?

阿里云CloudImagine

阿里云 测试 WebRTC 语音 音频

模块四作业-考试试卷存储设计

potti

架构实战营

[Golang 基础] Map 数据类型

baiyutang

golang 9月日更

极客时间【架构实战营】第二期 模块四作业

Geek_91606e

架构实战营

让数据库无惧灾难,华为云GaussDB同城双集群高可用方案正式发布

华为云开发者联盟

数据库 高可用 集群 华为云GaussDB 同城双集群

HarmonyOS荣膺2021世界互联网大会领先科技成果奖

Geek_283163

华为 鸿蒙

解密秒杀系统架构,不是所有的系统都能做秒杀!

华为云开发者联盟

架构 秒杀 电商系统

【大咖直播】Elastic 企业搜索实战工作坊(第一期)

腾讯云大数据

elasticsearch

(model4)千万学生管理系统存储架构设计

消失的子弹

架构 微服务 云原生

毕业设计电商秒杀系统

Clarke

架构实战营

【架构实战营作业】模块四——学生管理系统存储

聆息

遇见乌镇 | VoneCredit洞见供应链金融新未来

旺链科技

世界互联网大会 供应链金融

PerfDog携手Imagination,助力开发者获取GPU关键数据

WeTest

0 基础架构入门 - 4(千万级学生管理系统的考试试卷存储方案)

felix

架构实战营 0 基础架构入门

GK架构营模4作业

Ping

🏆【SpringBoot技术专题】「FtpServer文件服务」教你如何基于Springboot开发一个”可移植“的轻量级文件服务项目系统!

洛神灬殇

Apache springboot ftp服务 9月日更 FtpServer

论文阅读丨神经清洁: 神经网络中的后门攻击识别与缓解

华为云开发者联盟

神经网络 深度学习 论文阅读

云原生时代,如何构建数字化转型架构?

博文视点Broadview

AI专家一席谈:复用算法、模型、案例,AI Gallery带你快速上手应用开发

华为云开发者联盟

算法 模型 案例 AI Gallery 应用开发

等保测评一次多少钱,收费标准是怎样的?

行云管家

网络安全 等保 等保测评 等保2.0

netty系列之:使用netty搭建websocket服务器

程序那些事

Java Netty 网络协议 websocket 程序那些事

如何使用ESD二极管,设计运算放大器电压保护?

不脱发的程序猿

电路设计 ESD二极管 运算放大器 电压保护 嵌入式硬件

三款Linux文件传输工具简单介绍-行云管家

行云管家

Linux 文件传输 IT运维

什么是(不是)DevOps,我们如何实现DevOps?_DevOps & 平台工程_Abel Avram_InfoQ精选文章