DevOps的故事(如何整合开发和运维?)
在一个与我们平行的世界中,有一个软件开发公司。这个公司所做的产品用户量近期增长的十分迅猛,但是令CTO头疼的是公司的两大部门:开发部和运维部近期也是“掐”得厉害。为解决这个问题,CTO决定倒入现在十分流行的DevOps,并且CTO还请来了Gary来当顾问。项目管理者联盟
听到这个消息,开发部经理 “小D” 在部门会上长长舒了一口气,说:终于可以解脱“猪队友”的问题了,维护人员什么也不懂,就会摆弄那些死机器,有点小问题都让我们来解决。DevOps 我了解,就是让那帮运维人员用开发人员的思维去做运维工作,这个问题终于可以解决了!”项目管理者联盟
于此同时,运维部经理“大O”也兴奋地对运维团队说:“太好了,开发团队开发的产品就是一滩屎,总是让我们擦屁股,有什么技术他们还捂着、掖着不告诉我们。DevOps要求产品质量前移,好好整整开发部,那样我们就会轻松很多了!”项目管理论坛
很快CTO组织了一次会议,这次参会的只有四人:CTO、“小D”、“大O”还有顾问gary。在相互介绍后,CTO宣布了要推行DevOps的决定,并让“小D”和“大O”谈谈看法。项目管理者联盟
“小D”首先发言:项目管理者联盟
1. 我们开发能力通过持续改进已经很强了。现在我们敏捷开发,自动化测试、集成和部署,可以每天集成,每周进行对外发布。www.mypm.net
2. 至于运维人员我不敢恭维,水平太差。现场问题基本都透传给开发,严重影响到了我们的开发进度。那么多人都不知道在干什么?!training.mypm.net
接着是“大O”的反击:项目管理者联盟
1. 你们每周都发布,我们每周都要维护新东西,都要现学现卖,运维要的是产品稳定,你知道我们有多大压力吗?项目管理者联盟
2. 我们运维人多是因为你们产品开发质量差、问题多,而且问题一出现就是大问题,都要修改代码,这不是我们能解决的。项目管理者联盟
3. 我们运维人多,但是工资低,而且还不被重视,工作也很累,要7*24小时盯着。service.mypm.net
4. 你说我们什么都不会,那是因为开发什么也不教我们运维,我们怎么会?项目管理者联盟
“小D”毕竟年纪青,有些被气疯了,指着“大O”的鼻子说:“我们开发任务那么忙,哪有时间教你们。而且,从去年起我们进行的BSC分解中,运维被定义为开发的内部客户,你们对我们有考核权,从此我们这块的KPI就没高过,你还想怎么样?!”PgMp.mypm.net
CTO看两人快动手了就急忙拉架,并顺势打开了去年KPI说:“来,大家都看看,去年的KPI是这个吧?”项目管理者联盟
表一开发部KPI(部分):项目管理者联盟
项目管理者联盟
表二 运维部KPI(部分):项目管理者联盟
项目管理者联盟
“大O”指着表二说:“看到了吧,我们运维部也背着市场和销售部门的内部满意度KPI呢!”项目管理者联盟
这时Gary觉得该是他出面的时候了,他稳定下情绪,心平气和地对CTO说:“你们公司的目标应该是让客户满意度提升,而不是只让你们把内部责任分解得很清楚,现在的KPI您也看到会激化部门间矛盾,所以我建议应整合两个部门,让开发和运维部共同承担对客户满意度的KPI。”项目管理论坛
CTO想了下说:“你的意思是将开发和运维合成一个部门?”此言一出“小D”和“大O”各自惊出了一身冷汗。Gary有深意地扫了一下他们俩,对CTO说:“不,我不是这个意思。如果单纯地整合了两个部门,实际上只是将矛盾藏在了一个部门内部,没有彻底解决问题,而且弄不好新合并的部门将成为一堆烂泥,分不清楚了。而且即使合成一个部门,开发和运维的人员还是要分开的,否则开发和运维工作都搞不好。” CTO有点晕了:“那你到底想要干啥?” Gary说:“好,让我们简单地梳理一下,我通过你们的讨论而想到的几点解决办法吧!”项目管理者联盟
1. 以后客户对产品的满意度由开发、运维两个部门应共同承担。这个满意度部分开发还是运维阶段,而是整体的满意度。我们要改变一些观念,比如:去掉“完成”概念。不要有发布了就算开发完成了和开发无关了;运维通知开发处理问题了就和运维人员无关了等等的想法。项目管理者联盟
2. 我们不光是开发质量迁移,还要运维需求“前移”。运维人员可以根据现场运维情况,提出对运维的需求,比如:对哪些常见问题的自动化监测、报警值、报警方式等等,这样会让产品可运维性大大提升。项目管理者联盟
3. 建立产品问题库,对于产品运营阶段不管是开发还是运维人员发现、处理的问题大家都可以看到,这样我们既可以及时分享处理问题方法还可以让不同的人了解大家的工作现状。
4. 开发部应加强对运维人员的培训工作,只有提升了运维人员能力,才能让他们解决更多类型的问题,这样才能减轻开发人员压力,磨刀不误砍柴工嘛!项目管理者联盟
5. 对于经常出现的问题,运维可以整理出来由开发部先开发些成熟的自动化工具,提升问题解决效率。后期,运维人员应加强编程能力,最终做到用80%时间编制一些运维自动化工具,从而减轻运维成本。项目管理者联盟
这些只是我的初步想法,后续我们在实施DevOps的时候再详细地讨论吧,包括开发时使用什么样的新技术和新工具。“小D”听到这眼睛明亮了许多。项目管理者联盟
CTO想了想,一拍桌子说:“好,就这样决定了,我们现在就制定DevOps实施计划。”
DevOps的故事(如何整合开发和运维?)的更多相关文章
- 通过 DevOps 整合开发和应用安全管道
[编者按]作者 Aaron Volkmann 是 CERT Division 高级研究员,通过提出了一种集成安全系统到 CI/CD 的方法,让机构保持快速部署到生产环境能力的同时,也大幅度降低安全隐患 ...
- DevOps是云计算时代的开发与运营
DevOps(英文Development和Operations的组合)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的沟通.协作与整合.[1] 它 ...
- 深入解读DevOps 开发-运维
历史回顾 为了能够更好的理解什么是DevOps,我们很有必要对当时还只有程序员(此前还没有派生出开发者,前台工程师,后台工程师之类)这个称号存在的历史进行一下回顾. 如编程之道中所言: 老一辈的程序员 ...
- centos7系统管理和运维实战
centos7系统管理和运维实战 centos7安装配置 yum install -y net-tools >/etc/hostname echo "sqlserver01" ...
- Android NDK 和 OpenCV 整合开发总结(3)
Android NDK 和 OpenCV 整合开发总结(3) http://hujiaweibujidao.github.io/blog/2013/11/18/android-ndk-and-open ...
- 《DevOps故障排除:Linux服务器运维最佳实践》读书笔记
首先,这本书是Linux.CN赠送的,多谢啦~ http://linux.cn/thread-12733-1-1.html http://linux.cn/thread-12754-1-1.html ...
- dba和运维专家们说有丰富的大型分布式系统架构设计经验纯属扯淡
如果,一开始就从事dba和运维的专家们说他们有丰富的大型分布式系统架构设计经验,那纯属扯淡.除非,他们从是从开发专家或者架构师转型而来,那么他们才有资格说自己有丰富的大型分布式系统架构设计经验. 运维 ...
- Harbor实现容器镜像仓库的管理和运维
本次分享主要讲述了在开发运维中的管理容器镜像方法.为了便于说明原理,较多地使用Harbor作为例子. 内容主要包括: 开发和生产环境中镜像仓库的权限控制: 镜像远程同步(复制)的原理: 大规模应用镜像 ...
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
随机推荐
- 【Zookeeper系列】ZooKeeper管理分布式环境中的数据(转)
原文地址:https://www.cnblogs.com/sunddenly/p/4092654.html 引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它 ...
- golang 多个worker正常关闭的示例
代码如下,如有问题请联系 baibaibai_000@163.com package work_test import ( "math/rand" "runtime&qu ...
- nw.js---创建一个hello word的方法
一.如果用nw.js 来开发桌面应用 首先到Nw.js中文网下载软件: https://nwjs.org.cn/download.html 下载下来进行解压就可以了,绿色的免安装的,整个目录结果是这样 ...
- 11.14 luffycity项目(6)
2018-11-14 21:26:45 实现了购物车功能! 涉及到了redis的使用 需要在pycharm中下载 django_redis 其他的看一下笔记,有购物车里面数据存储的结构才发现数据 ...
- poj 1269
水题.判断两条直线位置关系. 考虑平行的情况,那么 四边形的面积会相等,重合的话,四边形的面积相等且为0. 除去这两种就一定有交点. #include <cstdio> #include ...
- Nestjs 序列化(Serialization)
文档 在发送实际响应之前,Serializers为数据操作提供了干净的抽象层.例如,应始终从最终响应中排除敏感数据(如用户密码) λ yarn add class-transformer cats.e ...
- 浅谈编码Base64、Hex、UTF-8、Unicode、GBK等
网络上大多精彩的回答,该随笔用作自我总结: 首先计算机只认得二进制,0和1,所以我们现在看到的字都是经过二进制数据编码后的:计算机能针对0和1的组合做很多事情,这些规则都是人定义的:然后有了字节的概念 ...
- 小Q系列故事——屌丝的逆袭
小Q系列故事——屌丝的逆袭 Problem Description 毕业于普通本科的小Q一直自称是资深屌丝,不仅学校不知名,甚至他自己在这个普通学校也是默默无闻——直到临近毕业的时候,班里5朵金花中的 ...
- python全栈开发 * 11知识点汇总 * 1806011
一.函数名的运⽤, 第⼀类对象 函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 1. 函数名的内存地址def func(fn): print(fn)print(func) # ...
- 执行效率做比较,Go、python、java、c#、delphi、易语言等
比较环境,在win7 64位,比较各种语言的整数型运算,下面的比较只作为单项比较.具体方式,40000*40000遍历相加.为了防止编译器优化,生成一个随机数. 1:c#,在NET2.0框架下作为 ...