企业建立成功 DevOps 模式所需应对的5个挑战
【编者按】本文作者为 Kevin Goldberg,主要介绍要想成功部署 DevOps 模式,企业所需应对的5大挑战与问题。文章系国内 ITOM 管理平台 OneAPM 编译呈现。
要给 DevOps 下个简明、准确而又恰当的定义真不是件容易的事儿。不过,以前看到过一句话,似乎能较好地解释什么是 DevOps——“DevOps 是一种文化、运动或者实践,它强调软件开发人员和其他 IT 专业技术人员之间的沟通与协作,以共同促进软件交付流程和基础设施变更的自动化。”
现在,你明白了什么是 DevOps,什么不是 DevOps,那么你又要思考,为什么你的企业应该使用 DevOps?除了打破两个分散部门之间独立的工作模式,你还可以期待怎样的显著变化和成果?根据 Puppet 最新的《DevOps 现状报告》,他们发现“高效能的IT组织比低效能的IT组织经历的故障要少 60 倍,故障恢复速度要快 168 倍。而且,他们的部署时间要短 200 倍但部署频率却高出 30 倍。”简单地说就是,成功的 DevOps 组织能在更短的时间内实现更快的产品发布频率,而且出现的问题更少。
要实现更具有协作性的 DevOps 转变,在开始前,必须搞清楚公司可能会面临哪些潜在的挑战。
1. 切记不要由上而下发起
这是很多企业试图在内部实现 DevOps 时最常遇到的问题之一。在实际过程中,任何高管都不可能直接将一个成功的 DevOps 模式生搬硬套,一声令下就开始在整个公司内实施。因为这根本不可能由上而下地推行。
成功的 DevOps 运动应该由“草根”发起,然后演变成一场全公司的文化变革。最完美的情况是,几个开发和运维人员凑在一起,共同处理一些小事件,并在合作过程中建立起良好的默契。然后这种新式的团队氛围逐渐升温,自然而然地向双方部门渗透,最终形成步调一致的反馈流程和工作节奏。
2. 从正确的项目开始
很多大中型企业的员工和办事处遍布全球。毫无疑问,这给协作带来了巨大的挑战。因为无论是语言障碍还是时差问题,又或者只是因为各部门之间的分散独立,总之公司越大,就越难形成一个完善的 DevOps 模式。这就是为什么使用正确的工具促进协作至关重要(后面再详细讨论这个问题)。同样重要的是,开始部署 DevOps 时,必须选择正确的项目。
通过使用各种工具,如果你的 DevOps 团队一步一个脚印地向前迈进,虽然一路进展缓慢,但是确实取得了实质性的成果,那么全球的团队成员就会更加关注这个新的工作模式,并且迫切地想要加入其中。运维和开发团队通力合作完成的产品,其质量也会更好,而且所有的团队成员都会为此感到骄傲。尤其是看到了自己的工作成果以后,每个成员将会更有责任感,接下来的工作也会更加努力。
3. 策略、云和工具的革新
“遗留”,在这里指的是那些阻碍 DevOps 运动的策略性和工具性挑战。首先最重要的是有关团队氛围和文化的遗留问题。我们经常听到管理层说:“我们一直都是这样做的”。没错,这就是笔者为什么开篇就强调要从公司的技术层而不是管理层推动 DevOps 运动。因为下面的人既需要也想要向 DevOps 发展,一旦他们取得了成效,上面也就不会有太多的反对意见。
第二个遗留问题是关于现有的工具。如果你的团队还在使用一些发布缓慢且不敏捷的古董级工具,那么你可以借此开始讨论工具的迁移问题。越来越多的企业已经在云和集成产品上投入了大量的资金和信任。你在决定要购买哪些工具时,一定要考虑它们是否和应用程序的生命周期相匹配,以及它们和其他工具是否能共同发挥最大的效用。
4. 量化成果与影响
我们经常听到的另一个挑战是,企业里很多成功的 DevOps 团队很难得到管理层的支持,因为他们的成果难以量化。虽然Puppet的调查报告显示 DevOps 成绩斐然,但是公司的管理层未必这么认为。作为 DevOps 团队的领头羊,你需要考虑以下几个问题:
你的团队多久发布一次更新?
发布更新后,获得了多少支持票?
平均多久发布一个应用?
每次发布的应用带来了怎样的收益,以及/或者形成了怎样的品牌影响?
这些问题有助于评定你目前的发布流程和绩效,并发现哪些地方可以实现最大程度的改进。一旦明确了这些问题,你就可以拿着这份最适合公司情况的 KPI 数据去和管理团队谈你的成果。
5. 选择适用于整个生命周期的工具集
几个星期前,笔者写了一篇关于如何选择最好的工具以及如何将这些工具映射到应用程序生命周期的文章。其实这个策略怎么强调都不过分,因为我们经常看到有些团队选择工具只是因为它们看起来很酷,又或者是有些团队想要这些工具,最后却出于各种原因再也不用了。
如果你有兴趣了解更多关于 DevOps 工具包的内容,请点击此处阅读我们的免费电子书籍。
本文系 OneAPM 工程师编译整理。OneAPM Cloudinsight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客
原文地址:https://blog.appdynamics.com/devops/5-challenges-for-a-successful-enterprise-devops-model/
企业建立成功 DevOps 模式所需应对的5个挑战的更多相关文章
- 企业玩转DevOps转型:由弱到强,只需7步
[摘要] 在参考业界方法并总结客户成功故事的基础上,本文提出了“七步法”路线图,希望能帮助更多的企业顺利进行DevOps转型. 从2009年诞生,DevOps已经悄然走过了10多个年头.Gartner ...
- 搭建DevOps模式的项目
在后端的开发领域,各类开发框架都已经很多,在开发项目时可以根据不同的需要和需求选择合适的开发框架.然而在需要开发一个完善的工程化项目时,仅仅一个后端开发框架是不够的,还面临着在对开发项目的快速迭代中进 ...
- 企业建立私有云的N个理由
简而言之,私有云意味着高效.安全.可控(技术路线是否可控另说了),也意味着高成本.有限弹性.(政绩工程不在讨论范围) 全面回答这个问题,其实包括两个部分:为什么要上云计算,以及为什么要采用私有化部署模 ...
- 企业运营对 DevOps 的「傲慢与偏见」
摘要:出于各种原因,并非所有人都信任 DevOps .有些人觉得 DevOps 只不过给开发者改善产品提供了一个途径而已,还有的人觉得 DevOps 是一堆悦耳的空头支票,甚至有人认为 DevOps ...
- 利用SOLR搭建企业搜索平台 之——模式配置Schema.xml
来源:http://blog.csdn.net/awj3584/article/details/16963525 schema.xml这个配置文件可以在你下载solr包的安装解压目录的\solr\ex ...
- 与某军工背景软件企业分享Azure DevOps Server的经验
DevOps 是英文单词Development和Operations的组合词,是一种用于促进软件开发.运维实施和质量保障部门之间协同工作的过程和方法. 结合软件开发管理规范,应用自动化的构建.测试和发 ...
- 传统码头建设企业:Azure DevOps Server 流水线技术沟通
受某码头建设企业的邀请,与企业软件研发团队就如何利用Azure DevOps Server进行了沟通.结合企业当前技术框架和管理流程,探索利用微软Azure DevOps Server的技术能力,加强 ...
- 测试wss是否连接企业微信成功
企业微信考勤机有时候无法连接,可以使用下面代码来测试下网络情况 <html> <head> <title>测试wss</title> </hea ...
- 建立windows认证模式下的用户登录
第一步:点击控制面板-----管理工具------计算机管理 ,在操作系统的计算机管理界面下,展开本地用户和组,在用户下建立三个用户u1,u2,u3,密码与用户名相同,如图所示. 然后新建一个组叫QQ ...
随机推荐
- 【jQuery】(3)---Jquery操作Dom
1 内部插入节点 <body> <ul id="city"> <li id="bj" name=&qu ...
- java-vip介绍
大叔Springboot+微服务+持续集成和交付VIP(价格:5000元) springboot部分 微服务部分 持久集成和交付部分 springboot部分 视频课(10讲) 项目源代码(api r ...
- Spring的后处理器-BeanPostProcessor跟BeanFactoryPostProcessors
最近在重读spring源码(为什么要重读?因为不得不承认,去年跟着<深入解析sping源码>一书过了一遍spring的源码,除了满脑袋都是各种BeanFactory跟BeanDefinit ...
- HBase 在人工智能场景的使用
近几年来,人工智能逐渐火热起来,特别是和大数据一起结合使用.人工智能的主要场景又包括图像能力.语音能力.自然语言处理能力和用户画像能力等等.这些场景我们都需要处理海量的数据,处理完的数据一般都需要存储 ...
- secureCRT常见命令
一.ls 只列出文件名 (相当于dir,dir也可以使用) -A:列出所有文件,包含隐藏文件. -l:列表形式,包含文件的绝大部分属性. -R:递归显示. --help:此命令的帮助. 二.cd 改变 ...
- istio小结
一.概述 测试环境已经跑了很长时间的istio了,也更新到了最新的istio-1.1.性能相较之前提升很大,官方给出的测试数据说是延迟降低到了8ms,但是实际测试确实访问速度有很大的提升,但是确实还是 ...
- MySql的创建时间和修改时间
在创建时间字段的时候 DEFAULT CURRENT_TIMESTAMP表示当插入数据的时候,该字段默认值为当前时间 ON UPDATE CURRENT_TIMESTAMP表示每次更新这条数据的时 ...
- retry重试常见场景及实现
当我们的代码是有访问网络相关的操作时,比如http请求或者访问远程数据库,经常可能会发生一些错误,有些错误可能重新去发送请求就会成功,本文分析常见可能需要重试的场景,并最后给出python代码实现. ...
- [CF960G] Bandit Blues
题意 给你三个正整数 \(n,a,b\),定义 \(A\) 为一个排列中是前缀最大值的数的个数,定义 \(B\) 为一个排列中是后缀最大值的数的个数,求长度为 \(n\) 的排列中满足 \(A = a ...
- 总结下Mysql分表分库的策略及应用
上月前面试某公司,对于mysql分表的思路,当时简要的说了下hash算法分表,以及discuz分表的思路,但是对于新增数据自增id存放的设计思想回答的不是很好(笔试+面试整个过程算是OK过了,因与个人 ...