企业建立成功 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 ...
随机推荐
- java模式—装饰者模式
装饰者模式 1.意图: 动态地给一个对象添加一些额外的职责.就增加功能来说, Decorator模式相比生成子类更为灵活.该模式以对客 户端透明的方式扩展对象的功能. 2.适用环境 (1)在不影响其他 ...
- ArcMap中属性字段计算器(Field Calculator)的使用技巧
很多时候,我们在使用ArcGIS进行属性数据编辑时,需要批量修改某些字段值,这时候ArcGIS提供的属性字段计算器(Field Calculator)就是一把利器.下面我就Field C ...
- ③JSP经典回顾
jsp概述 jsp实际就是一个高级servlet,比servlet容易很多.jsp/servlet在jsp容器中运行.例如,Tomcat就是一个Servlet/jsp容器. 关于tomcat:[传送门 ...
- Java 容器源码分析之 LinkedHashMap
同 HashMap 一样,LinkedHashMap 也是对 Map 接口的一种基于链表和哈希表的实现.实际上, LinkedHashMap 是 HashMap 的子类,其扩展了 HashMap 增加 ...
- TensorFlow和深度学习-无需博士学位(TensorFlow and deep learning without a PhD)
1. 概述 原文地址: TensorFlow and deep learning,without a PhD Learn TensorFlow and deep learning, without a ...
- Go语言的map如何判断key是否存在
判断方式为value,ok := map[key], ok为true则存在 package main import "fmt" func main() { demo := map[ ...
- 视频人脸检测——Dlib版(六)
往期目录 视频人脸检测--Dlib版(六) OpenCV添加中文(五) 图片人脸检测--Dlib版(四) 视频人脸检测--OpenCV版(三) 图片人脸检测--OpenCV版(二) OpenCV环境搭 ...
- Go Web:数据存储(1)——内存存储
数据可以存储在内存中.文件中.按二进制序列化存储的文件中.数据库中等. 1.内存存储 2.CSV文件存储 3.gob序列化存储 内存存储 将数据存储到内存中.此处所指的内存是指应用程序自身的内存空间( ...
- c#等程序中的关于时间的最大值【DateTime.MaxValue】和最小值【DateTime.MinValue】
运行之后得到的结果 c# DateTime.MaxValue:// :: DateTime.MinValue:// :: Sql Server DateTime 类型必须介于 1/1/1753 12: ...
- linux磁盘管理增加,扩容
一.磁盘空间不足,添加新的磁盘 一般来说,当我们在服务上插入新的磁盘时,服务器是会对磁盘进行识别的.但是,有的时候服务器并没有对这些新插入的磁盘进行识别.这时,我们可以通过重启服务器,来使服务器重新加 ...