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过程以及如何采用,这是一个组织必须仔细研究的一类成本/收益分析。

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

DevOps:软件架构师行动指南1.7 障碍相关推荐

  1. devops实践指南_开发DevOps的实用指南:减少八卦的步骤

    devops实践指南 我的一个软件开发的朋友最近问我,如果我可以告诉他,他可以做什么亲自来鼓励更多的合作与理解的工作环境-一个与更一致建议 从未来 的社区的DevOps . 我们之间的对话很长,他的情 ...

  2. 天旦发布DevOps实践应用指南,助力数字化转型

    上海2018年9月10日电 /美通社/ -- 近日,天旦就"数字化转型罗盘"的第三维度 -- "经营模式转型"发布 "DevOps 实践应用指南&qu ...

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

    第3章 运 维 在DevOps社区有一些核心思想家,他们知道IT管理是怎么回事,也意识到在DevOps情境下使用ITIL.也有一些人实际上是很宽松地把握这一点的-- --Rob England,htt ...

  4. DevOps:软件架构师行动指南(文摘)

    第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来 转载于:https://www.cnblogs.com/smileber ...

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

    2.2 云的特性 云最根本的推动者是构筑在成千上万通过因特网访问的主机之上的虚拟化技术.我们首先探讨以IaaS为中心的特性,即虚拟化和IP管理,接着是PaaS提供的一些特性.然后,我们探讨一些普遍的问 ...

  6. KubeSphere DevOps 流水线入门指南

    作者:赵海亮,浙江大学计算机专业四年级在读博士生,研究方向为云计算.边缘计算.分布式系统等. 虽然 KubeSphere 能够将我们从 yaml 文件的编写中解放出来,但是项目上云仍然十分繁琐. 此外 ...

  7. CloudNative时代践行DevOps躲坑指南

    戳蓝字"CSDN云计算"关注我们哦! 2015年,谷歌成立了原生云计算基金会,标志着CloudNative时代的来临.它以容器化封装.自动化管理.面向微服务等特点,向人们展示了应用 ...

  8. DevOps企业实践指南(1):DevOps能为我们带来什么

    帮助盈利/提升文化/加速效率是DevOps实践的三大目标,上世纪八十年代在制造业领域展开的那场如火如荼的精益实践的变革还历历在目,而DevOps在软件领域将要或者已经掀起的风浪也是如出一辙. Dev+ ...

  9. DevOps企业实践指南(5): 第三条原则:文化

    第一条原则体现了价值流的从左向右的流动,第二条原则是快速和日常的行为带来的从优向左的反馈.第三条原则聚焦于创造一个持续学习和持续实践的企业文化.而这些原则使得组织中的成员能够不断地积累知识和经验,而这 ...

最新文章

  1. Docker应用:Kubernetes(容器集群)
  2. 周鸿祎重做路由器,到底在做什么?
  3. 第32题 最长匹配括号
  4. 蓝桥杯:基础练习 特殊的数字
  5. node.js初步探究
  6. python构建字典查大写英文字母ascii编码_python – 字典中ISO短代码的国家名称,如何处理非ascii字符...
  7. 在开源UOJ的导航栏中添加新页面链接
  8. Navicat for MySQL_11.2.15破解版
  9. 渗透测试教程(基础篇)-2
  10. 领域迁移机器翻译方案总结
  11. cad打开卡死_AutoCAD程序启动就卡死的修复工具(解决CAD启动卡死不动)V2.00 修正版...
  12. zhu的Oracle数据库笔记
  13. 二极管介绍及参数选择
  14. numpy学习笔记1—ravel() 和 flatten()
  15. python 苹果笔记本电脑报价_千万别花冤枉钱!大学生买本得这么选!
  16. 提速20倍!谷歌AI发布TensorFlow 3D,智能汽车场景亲测好用
  17. oracle字符集增加生僻字,Oracle SQL一个“生僻字”的优化
  18. “{:02d}”.format(i)什么意思
  19. Git 常用基本操作
  20. Unity中UGUI小地图实现的原理

热门文章

  1. Santa Cruz 上手测试,动作控制器自由度惊人
  2. iOS应用开发入门(3)——点击button控制textview
  3. 开工快乐!AI内参邀你继续学习,并送上50元优惠券!
  4. 中国军团称霸KDD:华人博士斩获最佳论文,清华北大中科大华为等榜上有名
  5. 从深圳回武汉的面试感想以及一些面试题
  6. handlebars.js 用 br替换掉 内容的换行符
  7. 别再傻傻地用这些软件G转P了,修复后不稳定的真相在这里
  8. 勒索病毒一周记:它让我们得到了什么经验教训?
  9. 【深入剖析Tomcat笔记】第一篇 基础知识储备
  10. ie8恶心的bug--4个小时的教训