EASYOPS系列|《凤凰项目》用几百案例解释DevOps

Stella981
• 阅读 438

团队组织是否“DevOps化”很难被定义,因为它在IT中的各种角色的工作原理是不同的,其间也有很多误解。- Alan Koch

EASYOPS系列|《凤凰项目》用几百案例解释DevOps

是否“DevOps化”真的很难被定义,以下会讲到这里面的几点原因。IT系统中各种角色的人还会存在不同观点,可能它看起来和它的工作原理看起来有很大区别吧。DevOps影响IT中的每个人,但它会以不同的方式去影响每个角色,从而产生不同的描述。

是否DevOps也很难定义,因为世间对它存有太多误解。那么,在我们尝试定义DevOps之前,先花几分钟来描述最常见的误解吧。

DevOps不是新工具

DevOps要求的许多工具无法在没有工具的情况下完成,随之DevOps社区很多无私奉献的大神创建了许多酷酷的新工具。当然,用着Puppet或Docker,又或Jenkins等其他工具并不意味着你就在做DevOps的事情。这些工具不代表DevOps,它们只是工具。

DevOps不是新团队

字面上看,“DevOps”把开发部分与Ops部分联系起来。事实上如果还要在开发和运维之间增加其他组织,这就会起反作用。创建DevOps团队测试流程和工具,并促进Dev and Ops共同合作,这是一个好的开始。

DevOps不是新角色

许多公司都在暗地打听“DevOps工程师”,这说明他们不明白其内涵以及需求什么。其实,DevOps包括了IT组织中的一切,DevOps工程师将是一个IT-one-man-band,而且对象无所不包

DevOps也等你定义

DevOps领域没有权威,没有标准,DevOps也没有一个“永恒正确的打开方式”

别人眼中的DevOps

Gene Kim等人的DevOps手册说:DevOps及其产生的技术,构建和实践代表了许多哲学和管理运动(包括)的融合:精益,约束理论,Toyota生产系统,弹性工程,学习型组织,安全文化,人为因素,高信任管理文化,雇佣领导,组织变革管理和敏捷方法。

换句话说,DevOps是一个从许多不同领域获取良好做法的问题,并将其实施在IT组织中,以提升IT的绩效。

虽然DevOps来自一些非常完善的学科,但DevOps本身就是近年的东西。“DevOps”一词是在2009年底创造出来的,这个时候也标志着这个快速增长运动的开始。将其与2001年初出现的“敏捷”一词比较,敏捷性方面大涨两倍以上。

出现时间短也是DevOps难以界定的另一个原因。DevOps社区一直在增长和快速学习,这些实践正在发展,工具正在成熟,并且加入的每个组织都有助于我们对DevOps的进一步了解。

《凤凰项目》Gene Kim认为的三种方式:

Gene Kim曾在DevOps这个短暂的历史变动中清晰描绘过DevOps体系。他的2013年的novelette《凤凰项目》描述了一个虚构的IT组织及其使用DevOps原则来解决一系列严重的问题。他把之前数百家组织已经实施成的DevOps经验浓缩于2016年的《DevOps手册》,为任何开展DevOps之旅的组织提供了详细的指导。

两本书都以“三种方式”为基础展开描述。Gene Kim本人向我们描述:基金会的三种方式是DevOps旅程的主要组成部分,并提供了一种了解和实施DevOps的路线图。它们是:

  1. 迁移(flow)

  2. 反馈(feedback)

  3. 持续学习(Continual Learning)

  • The First Way: Flow

第一种方式是专注于IT组织中的活动流程,往顺利,快速方面进行优化。在此环节中,需要解决的关键流程之一是从开发团队到生产中的价值流(the flow of value,以软件的形式),这涉及连续交付和优化部署Pipeline等概念。

以精益思维看,第一种方式是理解你追求的“价值流”,识别和消除阻碍流动的障碍,并自动化以增加流量。

  • The Second Way: Feedback

第二种方式是建立在第一种基础之上优化从右到左的反馈流程。这也包括最终的反馈 - 开发团队敏锐地了解他们的软件在生产中的表现以及最终用户实际如何使用它们。这部分还包括所有角色中所有人的任何类型反馈。

第二种方式目的是为在IT组织反应工作质量以及对客户的影响,并将之可见。这不仅包括确保反馈的稳定提供,且包括缩短和优化反馈循环,以便人们尽可能快地自动收到反馈。

  • The Third Way: Continual Learning

流动和反馈良好的前提下,第三种方式利用了建立继续学习和持续改进的模式

它生来自带一些门槛问题:“我们可以从我们所做的和我们收到的反馈中学到什么?”以及“我们如何利用这些知识来改善IT组织的绩效?

最终,这种学习超出了我们工作的基础,包括尝试寻找新的和创新的方式来更好地满足客户、用户和组织的需求。例如,在“假设驱动的开发”中,我们假设用户和客户可能需要哪些软件功能,然后构建软件实验来测试这些假设,丢弃失败的实验,并建立在那些正向工作上的继续学习和持续改进。

第三条途径涉及到我们失败方法的文化转型:愿意把失败当作学习机会。无论是意想不到的操作失败,还是我们通过实验带来的失败,我们认为失败是好的,因为我们可以从中学习,逐渐完善。

尽可能的自动化

一个关键的DevOps原则是“自动化你尽可能想到的一切”。这个论调很重要,自动化利于优势流转(第一种方式),快速反馈回路(第二种方式)和高性能(随着持续学习和持续改进,第三种方式)。

自动化是DevOps底线,再看它想对现有模式的优势所在:

1. 加快速度

自动化比手动快。如果某环节实现了自动化,那就几乎是最快了。

2. 减少人为错误

工具不会像人们那样犯错误。一旦工具被配置和验证正确,它将每次都正确地完成任务。

3. 一致性

一旦每个工具都按照定义确保了一致性。那就可以用工具来检查和执行不自动化环节的一致性。

4. 减轻风险

由于工具不会出错,可用于检查手动活动,因此可以部署以减轻无法避免的风险。

高效能组织尽量的自动化一切 - 这就是他们高效的诀窍。

DevOps解决核心冲突

每个IT组织都有两个同时的核心/优先事项:

**创新.**通过开发和部署新的增强服务和应用,跟上客户和用户不断变化的需求。

**稳定.**确保客户和用户都可以使用这些IT服务和应用,并保证其数据和信息安全。

这两个优先事项是相互冲突的,因为将变更部署到生产环境中是造成中断和其他操作问题的最常见原因。更坑爹的是,这些相冲突的优先事项还经常引起其他功能性障碍,因为开发通常首选创新优先级,而运维首选稳定优先级。

DevOps不只是说Dev和Ops(以及QA和Security)必须合作, 同时DevOps也通过实现创新和稳定来解决核心慢性冲突。 DevOps的做法和工具确保整个IT操作的稳定性和可预测性,特别关注创新和部署过程中的稳定性。 这可以通过允许IT团队快速移动并经常部署,从而加速创新,而不会危及安全性和稳定性。

先知而后行

看到这里,你心里已经迈出DevOps旅程的第一步了(至少),DevOps并不意味着抛弃一切,重新做。相反,它注重的是你在做什么,用特定的工具和技术改造工作流程,改进反馈,并开始不断学习和改进。

什么困难暴击了你,Google下别人怎么解决的这个问题,然后学习改进。至少,你有了开始DevOps之旅的心。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
DOIS 2019 DevOps国际峰会北京站来袭~
DevOps国际峰会是国内唯一的国际性DevOps技术峰会,由OSCAR 联盟指导、DevOps时代社区与高效运维社区联合主办,共邀全球80余名顶级专家畅谈DevOps体系与方法、过程与实践、工具与技术。会议召开时间:2019070508:00至2019070618:00结束会议召开地点:北京主办单位:DevOps
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
DevOps世界中的软件开发
!(https://oscimg.oschina.net/oscnet/f40e68cbfe8148deb00f040b4e917a0a.jpg)在整个软件开发过程中,开发人员通常需要花费大量时间来修复错误和漏洞,以便一切按计划进行交付。但是,通过DevOps实践,可以更轻松地管理和保护这些问题。这是由于以下事实:使用DevOps实践的软
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这