DevOps:软件架构师行动指南1.7 障碍

1.7 障碍


如果DevOps解决了开发中长期存在的问题并有如此明显的好处,为什么不是所有的组织都采用DevOps实践呢?本节将探讨采用DevOps时遇到的障碍。

1.7.1 文化及组织类型

在讨论DevOps时,文化很重要。在跨组织以及同一个组织中的不同群体之间,与DevOps相关的文化问题都会影响它的形式与采用。文化不仅取决于你的角色,而且取决于你所在组织的类型。

DevOps的目标之一是缩短新功能或新产品投向市场的时间。在采用DevOps实践时,组织要考虑的一个问题是缩短面市时间所带来的收益与一些事情出现差错之间的权衡。几乎所有的组织都对风险感到担忧。但是,一个特定组织所担忧的风险取决于他们的活动领域。对一些组织来说,出现问题所带来的风险比尽快推向市场更重要。

在监管领域运作的组织(金融、医疗保健、公用事业服务)有他们必须遵守的规则,如果违反了运营规则,就会面临处罚,有可能还是很严重的处罚。即使处于监管领域的组织也可能有不受监管的产品。这样,一个金融组织也可以在某些产品上使用DevOps过程。对于需要更多监管的产品,这些实践可以修改。例如引入更多的看门人。我们将在第8章讨论安全及审计问题。

在成熟、行动缓慢的领域中运作的组织(汽车或建筑行业)有很长的前置时间。并且,虽然他们的截止日期是切切实实的,但他们很早就能预见到。

某些组织的客户在切换到其他供应商(supplier)时成本很高,例如企业资源计划系统,客户因为担心运行的稳定性而不愿意冒险。某些系统宕机时间的成本远远高于更快速引入一个新功能所能得到的竞争优势。

对于其他组织来说,灵活快速的响应比因为快速移动而偶尔产生的错误重要得多。

依赖于业务分析决定产品方向的组织希望在收集数据并根据数据采取行动之间的时间越来越短。因为下一个周期很快到来,出现的错误能够很快纠正。

面临激烈竞争压力的组织需要赶在竞争对手的前面把产品和新功能投向市场。

注意这些例子并不取决于组织的规模,而更取决于他们的业务类型。如果监管者监督你们并且能够强行规定你们的运营规范,或者产品特性的前置时间是好几年,或者你们的资本设备的预期使用期限是40年,那么你们很难灵活起来。

这里讨论的要点是企业有自己的运营环境,并会继承这个环境中的很多文化。第10章将会详细描述。有些DevOps实践是破坏性的,例如允许开发人员直接部署产品。另一些DevOps实践是增值的,它们不会影响产品整体的工作流或监管。把运维人员作为首要干系人的做法应该落入这个非破坏性的分类中。

一个行动缓慢的组织可能变得更加灵活,一个灵活的组织可能面临监管。如果你考虑采用DevOps实践,需要清楚3件事。

1)在你考虑的实践中隐含地包含了其他什么实践?不做持续集成就无法实施持续部署。独立的实践需要优先采用,先于有依赖关系的实践。

2)你考虑的特定实践是什么?它的假定条件、成本和收益是什么?

3)企业文化是什么,采用这个特定的DevOps实践的后果什么?如果这个实践只影响运营与开发,倒还好说。但如果需要修改整个组织结构和监管办法,那可以说是另一回事了。采用一种实践的困难之处是,它影响组织中的其他部分。但即使是一个开发团队和多个运维人员采用DevOps,让所有涉及的人都接受DevOps文化也是很重要的。采用DevOps的一种常见的失败情况是,你雇用了一个DevOps工程师,然后就认为万事大吉了。

1.7.2 部门类型

确定一个组织的文化的方法之一是看它的激励产生什么样的结果。依靠销售额提成的销售人员会很努力地推销。根据季度利润获取报酬的CEO会关注下一个季度的结果。这是人之本性。对开发人员的激励是生产并发布代码。理想情况下,他们受到的激励是生产没有错误的代码。但是有一部Dilbert卡通片显示了这种做法的困难之处。尖脑袋老板对每个发现并修复的缺陷都支付10美元,Wally的回答是:“好哇,今天下午我就可以为自己写出一部小客车来。”不管怎么说,开发人员得到的激励应该是让代码进入生产环境。

另一方面,对运维人员的激励是把宕机时间降至最低。这意味着要去检查并排除宕机的原因。仔细检查是需要花费时间的。而且,避免变更也是减少宕机的一个原因。“没有问题就不要修复”是一个几十年来广为人知的说法。

一般来说,开发人员受到的激励是做出变更(发布新代码),运维人员受到的激励是不要变更。这两种不同的激励机制培育出不同的态度,可能成为文化冲突的原因。

1.7.3 筒仓思维方式(Silo Mentality)

组织中的两个部门有一个共同目标——确保组织取得成功。这句话说起来容易,实际做起来要难得多。一般来说一个人对自己的团队最忠诚,其次才是整个组织。如果开发团队负责制定发布计划,该计划说明将实现哪些功能、以何种优先级实现,那么组织中的其他部门就会感到自己的权力被侵犯了,客户也可能会不满意。如果以前由运维人员完成的工作现在由开发人员完成了,那么运维人员的工作变少了之后会怎么样呢?

这种政治在一个组织中早已司空见惯,但重要性并不因此而降低,也不能因此就视而不见。

1.7.4 工具支持

我们前面描述了自动化过程的优势。这些优势是实实在在的,但也不是没有成本的。

每个工具的安装、配置和使用都必须具备专业技能。工具有新发布、新信息和新特征。使用工具的技能经验必须整合到组织中。

如果一个组织中的很多不同的开发团队使用同一套过程,那就必须有一个方法定义这些共同使用的过程,并确保所有的开发团队都遵守。使用工具意味着需要遵守隐含在工具中的策略。关于如何定义共同使用的过程,可参见第12章中的一个例子。

1.7.5 人员问题

按照Datamation 2012 IT薪水指南,一个软件工程师比一个系统管理员的薪水高50%。把系统管理员(运维)的任务转移给软件工程师(开发),完成任务的人员成本就增加了50%。这样,为了让完成任务的成本保持一致,用于完成任务的时间就必须削减1/3。为了真正赢得时间,还需要进一步削减,而自动化是节省这些时间的最常见方法。为了确定采用哪些DevOps过程以及如何采用,这是一个组织必须仔细研究的一类成本/收益分析。

具备现代技能集的开发人员供不应求,他们的工作量也很重。在他们的工作中增加更多的任务会加剧开发人员的短缺。

时间: 2024-12-21 04:38:07

DevOps:软件架构师行动指南1.7 障碍的相关文章

《DevOps:软件架构师行动指南.》导读

本节书摘来自华章出版社<DevOps:软件架构师行动指南.>一书中作者伦恩·拜斯(Len Bass) [澳]   英戈·韦伯(Ingo Weber)    著 朱黎明(Liming Zhu)   前言   多年以来,我们一直在探索研究运维中的问题.自然而然地,我们也一直在追踪DevOps运动.它正在沿着Gartner成熟度曲线向上发展.这种现象有着坚实的业务原因.我们能够找到从信息技术经理视角对DevOps的探讨(例如小说<凤凰项目:一个IT运维的传奇故事>),也能找到从项目经理视

DevOps:软件架构师行动指南1.1 概述

第一部分 背 景 这一部分为本书的后续章节提供了必要的背景知识.DevOps是一项运动,它设想在开发组和运维组之间没有冲突.DevOps的出现与云发展成为大小型组织的基本平台是同时发生的.第一部分有3章. 在第1章中,我们将定义DevOps,并且讨论DevOps的各种驱动力.DevOps是一个包罗万象的术语,它可以涵盖多个含义,包括让开发人员和运维人员互相沟通:允许开发团队自动化地部署到生产环境:当在生产环境中发现错误时,让开发团队成为第一个响应者.在这一章中,我们将梳理出各种关注点,并且关于D

DevOps:软件架构师行动指南1.2 为什么是DevOps

1.2 为什么是DevOps 从很多方面来讲,DevOps是对缓慢发布的问题做出的响应.发布投放到市场的时间越长,从中获得的功能或质量提升的收益就越低.理想情况下,我们希望持续发布.常常用术语持续交付或持续部署来表示.我们在第5章和第6章讨论这两个术语的细微差别.在本书中,我们使用术语持续部署,或部署.我们开始时先描述一个正式发布过程,然后深入探讨缓慢发布的一些原因. 1.2.1 发布过程 向客户发布新系统或现存系统的新版本是软件开发周期中最敏感的步骤.不论系统或版本是对外发布.直接由客户使用还

DevOps:软件架构师行动指南1.8 小结

1.8 小结 本章的主要知识点是:人们从不同的视角定义DevOps.例如,运维人员采用敏捷实践,开发人员承担运维责任,以及其他一些视角的定义.但共同目标是缩短一个功能或改进点从业务思路构想到最终部署给用户的时间. 由于文化及技术上的挑战,DevOps面临着障碍.它可能对团队架构.软件架构.运维的传统方式形成巨大的冲击.我们列出了一些常见的实践,让你对这种冲击有初步的了解.我们将在本书剩余部分详细讲述这些主题. DevOps涉及的一些权衡如下: 现在需要支持DevOps工具了.在对工具进行支持与缩

DevOps:软件架构师行动指南1.6 协作

1.6 协作 DevOps的一个目标是最大程度减少协作,以缩短推向市场的时间.需要协作的两个原因是,首先,不同团队开发的各部分能够在一起工作:其次,避免重复工作.<Oxford English Dictionary>(牛津英语词典)对协作的定义是:对复杂个体或活动的不同元素进行组织,以便能够有效地一起工作.本节深入讨论协作的概念与机制. 1.6.1 协作的形式 协作机制有不同的属性. 直接的--需要协作的人彼此认识(例如,团队成员). 间接的--协作机制的受众只能根据其特征识别(例如,系统管理

DevOps:软件架构师行动指南DevOps:软件架构师行动指南2.3 独特的云特性对DevOps的影响

2.3 独特的云特性对DevOps的影响 云影响DevOps的3个独特特性是简单地创建和切换环境的能力:轻松创建虚拟机的能力,以及数据库的管理.我们首先讨论环境. 2.3.1 环境 在我们的上下文中,环境是足够执行软件系统的一组计算资源,包括所有支持软件.数据集.网络通信,以及执行软件系统所需定义的外部实体. 这个定义的关键点是:除了明确定义的外部实体外,环境是自包含的.一个环境通常独立于其他环境.在第5章中,我们会看到一些环境,例如开发.集成.用户测试,以及生产环境.在第12章的案例研究中,环

DevOps:软件架构师行动指南1.9 更多阅读材料

1.9 更多阅读材料 通过下列资源可以阅读有关DevOps的不同定义: Gartner技术成熟度曲线[Gartner]把DevOps归为处于上升期:http://www.gartner.com/DisplayDocument?doc_cd=249070. AgileAdmins从敏捷角度解释了DevOps:http://theagileadmin.com/what-is-devops/. 从下面列出的最近调查及业界报告中,可以找到更多的内容: XebiaLabs对与DevOps相关的主题做了广泛

DevOps:软件架构师行动指南2.2 云的特性

2.2 云的特性 云最根本的推动者是构筑在成千上万通过因特网访问的主机之上的虚拟化技术.我们首先探讨以IaaS为中心的特性,即虚拟化和IP管理,接着是PaaS提供的一些特性.然后,我们探讨一些普遍的问题,例如数以万计的主机所带来的后果,以及云是如何支持弹性的. 2.2.1 虚拟化 在云计算中,虚拟机(Virtual Machine,VM)是物理机的模拟.一个虚拟机镜像就是一个文件,其中包含了可引导的操作系统和在其上安装的软件.虚拟机镜像提供了启动虚拟机(或者更准确一些,虚拟机实例)所需的信息.本

DevOps:软件架构师行动指南3.1 概述

第3章 运 维 在DevOps社区有一些核心思想家,他们知道IT管理是怎么回事,也意识到在DevOps情境下使用ITIL.也有一些人实际上是很宽松地把握这一点的-- --Rob England,http://www.itskeptic.org/devops-and-itil 3.1 概述 正像DevOps不只是简单包含开发那样,它也不只是简单包含运维.然而,要想理解DevOps,先理解这样一个情境是非常重要的--开发和运维的那些人是从哪里来的.在本章,我们将展示由IT运维组执行的活动.有多少活动