持续交付和DevOps是一对好基友
现在很多人都在困惑持续交付和DevOps到底是什么关系,有什么区别,或许你也感觉傻傻分不清楚。那么今天,我就来和你聊聊持续交付和DevOps,以及它们到底是什么关系。
持续交付是什么?
我在专栏的第一篇文章中,已经跟你很详细地分享了持续交付是什么,为了加深你的印象,并与DevOps形成对比,我在这里再从另外一个角度给你总结一下:
持续交付是,提升软件交付速率的一套工程方法和一系列最佳实践的集合。
它的关注点可以概括为:持续集成构建、测试自动化和部署流水线。
那么,DevOps又是什么呢?其实一直以来,学术界、工业界都对DevOps没有明确的定义,所以造成了大家对它的看法也是众说纷纭,也难免片面。
在我给出我个人的认识之前,我先给你讲讲DevOps是怎么被发明的吧
DevOps的诞生
DevOps的故事,要从一个叫帕特里克·德博伊斯(PatrickDebois)的IT咨询师讲起。2007年,帕特里克参与了一个政府下属部门的大型数据中心迁移的项目。
在这个项目中,帕特里克发现开发团队(Dev)和运维团队(Ops)的工作方式和思维方式有巨大的差异:
Dev的工作是,为软件增加新功能和修复缺陷,这要通过频繁的变更来达到;
Ops的工作是,保证系统的高稳定性和高性能,这代表着变更越少越不容易出错。
因此,Dev和Ops长久以来,都处于对立和矛盾的状态。
2009年6月23日,Flickr公司的运维部门经理约翰·阿斯帕尔瓦(JohnAllspaw)和工程师保罗·哈蒙德在Velocity大会上做了一个轰动世界的演讲:《每天部署10次以上:Flickr公司的Dev与Ops的合作》(10+Deploys Per Day:Devand Ops Cooperation at Flickr)。
这个演讲中提出了DevOps的核心观点:Dev和Ops的矛盾可以通过技术升级和文化构建来解决,这标志着DevOps的诞生。
帕特里克也在网上看到了这个演讲,并且十分兴奋,因为这就是长久以来他所想解决的问题。于是,他开始筹备自己的Velocity大会。
2009年10月,帕特里克的Velocitv大会在比利时顺利召开,他把会议命名为DevOpsDays。他本来想用DOD作为DevOpsDays的缩写,以提醒自己“死在交付上”(DeadOn Delivery),但不知什么原因,他最后没有这么做。
这届大会出人意料的成功,许多开发工程师和运维工程师参加了这次大会,甚至还有各种IT管理人员参加。人们开始在Twitter上大量讨论DevOpsDays的内容。
由于Twitter对内容长度的限制是140个字符,所以大家在Twitter上讨论时去掉了“Days”,只保留了“DevOps”。于是,DevOps这个名称正式诞生。
持续交付的姗姗来迟
在DevOps的这段编年史里,持续交付又在哪里呢?
2006年,杰斯·亨布尔(JezHumble),克里斯·里德(ChrisRead)和丹·诺斯(Dan North)在Agile大会上发表了一篇名为《部署生产线》(DeploymentProductionLine)的文章,这也是第一篇描述持续部署核心内容的会议文章。
在后面的三年里,又有一系列“持续部署”的文章被发表。2009年,这一些系列的文章被编成为了一本叫作《持续交付:发布可靠软件的系统方法》的书,这一年也正是帕特里克举办 DevOpsDays的那一年。
2010年,《持续交付:发布可靠软件的系统方法》的作者之一杰斯参加了第二届的DevOpsDays,并做了关于“持续交付”的演讲,在这一年“DevOps”与“持续交付”终于有了交集。
从本质上说,帕特里克最初遇到的问题,在《持续交付:发布可靠软件的系统方法》一书中找到了最佳实践。如果这本书可以早两年问世,或许今天就不会有DevOps了。
然而,DevOps的概念一直在向外延伸,包括了:运营和用户,以及快速,良好,及时的反馈机制等内容,已经超出了“持续交付”本身所涵盖的范畴。而持续交付则一直被视作DevOps的核心实践之一被广泛谈及。
这么看来,持续交付真是打了一个大盹儿。
认识DevOps
DevOps这几年一直在不断地演化,那么它到底是什么呢?
目前,人们对DevOps的看法,可以大致概括为DevOps是一组技术,一个职能、一种文化和一种组织架构四种。
第一DevOps是一组技术,包括:自动化运维、持续交付、高频部署、Docker等内容。
但是,如果你仅仅将DevOps认为是一组技术的集合的话,就有一些片面。任何技术都是为了解决某些问题而被创造出来的。比如Docker,就是为了解决DevOps所提倡的“基础设施即代码”这个问题,而被创造出来的。
从这个角度来看的话,DevOps的范畴应该远远大于一组技术了。
其实,DevOps是一组技术这个观点,还是只站在了工程师角度去思考问题而得出的结论。虽然“DevOps”中“Dev”和“Ops”这两个角色都是工程师,但是其本质还是希望跳出工程师的惯性思维来看待问题。
第二,DevOps是一个职能,这也是我在各个场合最常听到的观点。
你的公司有没有或者正准备成立一个叫作DevOps的部门,并将这个部门的工程师命名为DevOps工程师?至少在各大招聘网站上,是随处可见这样的职位,而招聘要求往往就是:会 Ops技能的Dev或者会Dev技能的Ops或者干脆叫全栈工程师。
“DevOps是一个职能”这个观点,源于设施的日趋完善,云服务的流行,以及各类开源工具的广泛使用,使传统Ops的工作重心发生了变化,使企业产生了不再需要Ops的错觉。
但这个观点也是错误的,原因就是忽略了Dev与Ops本质上是不同的,也就是他们掌握的技能是不同。
虽然在DevOps看来,Dev和Ops的最终目标是一致的,都是为了快速向客户提供高质量的产品,但其达到目标的手段和方法是不一样的。比如,Ops往往需要更多的在线处理问题的经验,而这未必是Dev所具备的。
所以,简单地把DevOps看做是一个职能,是一个彻底错误的观点。
第三,DevOps是一种文化,推倒Dev与Ops之间的阻碍墙。
DevOps是通过充分的合作解决责任模糊、相互推诿的问题和矛盾。在著名的演讲《每天部署10次以上:Flickr公司的Dev与Ops的合作》中,就明确的指出工具和文化是他们成功的原因。
其实,DevOps通常想要告诉我们的是:什么行为是值得被鼓励的,而什么行为需要被惩罚通过这样的方法,DevOps可以促使我们形成良好的做事习惯,也就是DevOps文化。
所以,我们可以发现引入DevOps的组织,其实都是希望塑造这样的一种:信任、合作、沟通、学习、分享、共担等鼓励协作的文化。
第四,DevOps是一种组织架构,将Dev和Ops置于一个团队内,一同工作,同化目标,以达到DevOps文化地彻底贯彻。
这看起来确实没有什么问题,而且敏捷团队往往都是这么去做的。但是,从另一方面来看,Ops作为公司的公共研发资源,往往与Dev的配比是不成比例。所以,虽然我们希望每一个敏捷团队都有Ops,但这可能是一种奢求。
但是,敏捷团队也说了,不一定是要有一个专职Ops人员,只要有负担这个角色职责的成员存在即可。这当然也讲得通,但可能真正的执行效果就没有DevOps所设想的那么好了。
所以,DevOps是一种组织架构,这种说法,也对也不对,主要视组织的具体情况而定
总结
今天,我和你一起回顾了DevOps产生的历程。同时,也顺便带你回顾了一下爱打盹儿的持续交付。我希望通过这篇文章,你可以理清持续交付和DevOps的关系:
1.DevOps的本质其实是一种鼓励协作的研发文化;
2.持续交付与 DevOps 所追求的最终目标是一致的,即快速向用户交付高质量的软件产品
3.DevOps的概念比持续交付更宽泛,是持续交付的继续延伸;
4.持续交付更专注于技术与实践,是DevOps的工具及技术实现
持续交付和DevOps是一对好基友相关推荐
- 【转】持续交付和DevOps的前世今生
作者/分享人:乔梁,20年IT老兵,腾讯公司高级管理顾问,敏捷和精益开发专家,持续交付领域先行者.曾就职于百度,国内多个知名互联网公司的企业教练. 历年QCon技术大会的讲师和专题出品人. 这是一个新 ...
- 《六周玩转云原生》- 云原生下的DevOps与持续交付
六周玩转云原生 为了让开发者们在这个特殊的时期里可以学习到更多干货,京东智联云开发者特别策划了 <六周玩转云原生>系列课程,让我们的开发者可以迅速入门,持续充电. 时光倒流到本世纪初,&q ...
- DevOps —— 持续交付
DevOps – 持续交付 如果把DevOps的能力提升比作是登山的话,持续交付必然是为登山准备的最重要的工具包.虽然敏捷开发已经被大多数的软件企业所接受,但敏捷的实践必须能够和持续交付的能力结合起来 ...
- 云原生下的DevOps与持续交付
课程概要 2009年,一场演讲在O'Reilly Velocity大会上一炮而红,演讲中有一句话深得人心:"由于开发和运维需要在Flickr(一个图片存储和视频托管网站)上合作,这导致开发者 ...
- DevOps核心实践--持续交付
DevOps的核心是软件开发和交付理念,强调产品管理,软件开发和运营/系统管理员团队之间的沟通和协作,并与业务目标紧密结合.它通过建立一种文化(与相关实践)来自动化和监控软件集成,测试,部署和基础架构 ...
- 持续交付流水线的敏捷利器:环境配置管理与应用部署自动化
作者介绍 陈能技,DBAplus社群原创专家,新炬网络首席DevOps专家.14年开发测试与质量架构经验,擅长DevOps及APM.Docker.持续集成.持续交付在企业中的落地实施.著有<软件 ...
- 【Java架构:持续交付】一篇文章搞掂:持续交付理论
一.持续集成.持续交付.DevOps概念,关系等 持续集成(Continuous integration/CI) 持续交付(Continuous delivery/CD) 持续部署() 持续 (Con ...
- 基于Jenkins的持续交付全流程设计与实践
1 从理论开始 什么是DevOps? 近年来,随着DevOps理念的逐渐深入人心,企业逐渐意识到从看似重复的手工劳动中实现自动化流程处理,对于提高企业劳动生产力已经非常重要,尤其是面向互联网的开发者, ...
- 阿里巴巴1682亿背后的“企业级”高效持续交付
摘要: 在2017北京云栖大会上,阿里巴巴高级技术专家陈鑫(花名神秀),给大家带来了<1682亿背后的企业级高效持续交付>,引起强烈共鸣.神秀从技术负责人关心的研发流程混乱.质量无法保障. ...
- 微服务怎么部署到服务器的_微服务的部署与发布:持续交付与持续部署微服务...
持续交付与持续部署微服务 持续集成(Continuous Integration)与持续交付(Continuous Delivery ).持续部署(ContinuousDeployment)作为敏捷开 ...
最新文章
- mysql修改表、字段、库的字符集(转)
- 7.3 数字类型及内置方法
- 【OpenCV 例程200篇】80. 频率域图像滤波详细步骤
- 华为云新加坡峰会发布CloudAI创新实验室,四大核心优势助力智能化升级
- 终端模拟器大 PK,你 Pick 谁?
- Locally weighted linear regression
- 在OpenLava中探索Fairshare调度
- python-银行转账系统的简单实现及test
- 制作好的种子怎么上传服务器,用BT如何上传自己的文件?
- html field属性,field标签属性详解
- 短线起爆点(移动均线15种战法)
- 什么是代理IP(代理服务器)如何正确使用代理IP(代理服务器)
- 付临门商服宝 v1.0.5
- 父爱如山,催泪微电影感动全网
- 牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用
- java int格式转换文本_java 文件导出Excel 文本形式转数字格式解决,字段是int导出需求是数字解决方案...
- BufferedWriter使用write方法如何换行
- Chapter5 初始化(Initialization)
- OSChina 周二乱弹 ——找老婆身材重要还是脸蛋重要
- mybatis-日志工厂