DevOps是敏捷开发的延续,它将敏捷的精神延伸至IT运营(IT Operation)阶段。敏捷开发的主要目的是响应变化,快速交付价值。以2001年的敏捷宣言发布这个里程碑为起点,开始几年内企业主要在软件的开发阶段推行敏捷,并没有覆盖到软件的运营阶段。随着互联网的不断发展,市场变化越来越快,2007年之后软件工程领域出现了新的变化,DevOps星星之火便开始出现。

萌芽阶段(2007-2008)

2007年,比利时的独立IT咨询师Patrick Debois开始注意开发团队(Dev)和运维团队(Ops)之间的问题。当时,他参与了比利时一个政府下属部门的大型数据中心迁移的项目,在这个项目中,他负责测试和验证工作,所以他不光要和Dev一起工作,也要和Ops一起工作。他第一天在开发团队跟随敏捷的节奏,第二天又要以传统的方式像消防队员那样维护这些系统,这种在两种工作氛围的切换令他十分沮丧。他意识到开发团队和运维团队的工作方式和思维方式有巨大的差异:开发团队和运维团队生活在两个不同的世界,而彼此又坚守着各自的利益,所以在这两者之间工作到处都是冲突。作为一个敏捷的拥趸,他渐渐的明白如何在这种状况下改进自己的工作。

2008年6月,在美国加州旧金山,O'Reilly出版公司举办了首届Velocity技术大会,这个大会的话题范围主要围绕Web应用程序的性能和运维展开,分享和交换构建和运维Web应用的性能、稳定性和可用性上的最佳实践。大会吸引了来自Austin的几个系统管理员和开发人员,他们对大会中分享的内容十分激动,于是记录下了所有的演讲内容,并决定新开一个博客分享这些内容和自己的经验,他们同样也意识到敏捷在系统管理工作中的重要性,于是,一个名为 theagileadmin.com博客诞生了。

同年8月,机缘巧合,Patrick也在加拿大多伦多的Agile Conference 2008 上遇到了知音Andrew Shafer,两人后来建立了一个叫Agile System Administration的Google 讨论组。

社区确立阶段(2009-2010)

2009年6月,第二届 Velocity大会在美国圣荷西召开,当时的Flickr技术运维资深副总裁John Allspaw和工程总监Paul Hammond一起在大会上做了一个题目为“10+ Deploys per Day: Dev and OpsCooperation at Flickr”的演讲,演讲后来轰动了业界,也有力地证明了Dev和Ops可以有效工作在一起提高软件部署的可能性。

Patrick在网上也看到这个演讲,非常激动,受此大会的启发,他在比利时也发起了名为DevOpsDays的自己的会议,最后大会出奇地成功, 以至于大家在twitter上的讨论热情不减,受限于twitter上字符的限制为了精简,大家就把twitter上的话题#DevOpsdays简写成 #DevOps了,于是,DevOps一词便在社区中慢慢确立了。

产业关注阶段(2011-2012)

在2010年之前,DevOps运动还主要停留在技术社区中讨论,探讨的一些开源工具上也很少受厂商和分析师们的关注。直到2011年,DevOps突然受到Gartner分析师CameronHaight和451 Research公司Jay Lyman等人的注意,他们便开始正式研究这个市场,同时,一些大厂商也开始进入DevOps领域。

DevOps的发展也离不开另外一个领袖人物的推动,那就是知名公司tripwire的创始人Gene Kim先生。2012年8月,Gene在他的博客上发表了“the three way”的DevOps实践原则,分别是:1)思考系统的端到端流程 2)增加了反馈回路 3)培养一种不断实验以及通过反复实践达到精通的文化,Gene为DevOps领域贡献了一个重要的理论基础。是年后(即2013年初),Gene与KevinBehr和 George Spafford三人合著的《凤凰项目》一书出版,一度被誉称为DevOps的圣经。

相关技术基础协同发展的阶段(2013- )

DevOps被业界快速接受离不开相关技术的同步发展,特别是云计算技术和基础设施的成熟,以及新的架构范式的出现。

2013 年,dotCloud公司(后更名为 Docker )推出 Docker 项目,在容器技术的基础上,引⼊分层式容器镜像模型、全局及本地容器注册表、精简化 REST。

同年,Google推出开源项目 Kubernetes ,提供了以容器为中⼼的部署、伸缩和运维平台。Kubernetes支持 Docker 、 rkt 以及 OCI 等容器标准,能够实现在各种云环境中快速部署kubernetes 集群。

2015年,基于Cloud-Native(云原生)概念的逐步成熟,Google联合其他20家公司宣布成立了开源组织CloudNative Computing Foundation(CNCF)。同年,O’REILLY出版了pivotal公司产品经理Matt Stine写的《Migratingto Cloud-Native Application Architecture》一书,其中,MattStine对Cloud-Native关键架构特征进行补充,也融入早在2012年由Heroku创始人AdamWiggins发布的“十二要素(The Twelve-Factor)”应用宣言等重要理念。此书较为完整地描述了Cloud-Native的落地方法和实践。

至2016年,随着DevOps应用的逐步深入,行业开始关注系统的安全和合规性,出现了DevSecOps等细分探讨领域,开始倡导Security as Code、Compliance as Code等新理念。

参考文献:

  • https://www.versionone.com/devops-101/what-is-devops/ 《what is devops》,Dennis Ehle

  • http://www.jianshu.com/p/f40209023006 《DevOps编年史》,顾宇

  • 《云计算开源产业发展白皮书第二部分:容器》

原文地址:《重新梳理 | DevOps发展的四个重要阶段

[转载]DevOps发展的四个重要阶段的更多相关文章

  1. devops发展历程

    第一阶段:只有 Dev ,没有 Ops ,Dev 是全栈工程师 如何理解?最初的时候,产品和业务形态都处于摸索期,业务复杂度不高,访问量不大,软件能够尽快跑起来推向市场是最重要的,所以架构上不设计的很 ...

  2. [转载] DevOps年中盘点:国外最受欢迎的10篇技术文章

    本文根据高效运维系列微信群的群友投稿整理而成.“高效运维”公众号作为本系列群的官方唯一公众号,原创并独家首发. 欢迎关注“高效运维”公众号,以免费参加「运维讲坛」每月一次的线下交流活动:并抢先赏阅干货 ...

  3. DevOps 发展融合运维可视化

    DevOps,是开发(Development)和运维(Operations)的组合,代表一种文化.运动或实践,旨在促进软件交付和基础设施变更软件开发人员(Dev)和 IT 运维技术人员(Ops)之间的 ...

  4. 技术转载:Jni学习四:如何编写jni方法

    转载:http://blog.chinaunix.net/u1/38994/showart_1099528.html 一.概述: 在这篇文章中将会简单介绍如何编制一些简单的JNI 方法.我们都知道JN ...

  5. 转载 DevOps的基本原则与介绍

    转载原地址:  http://www.cnblogs.com/wintersun/p/3339047.html DevOps的基本原则与介绍 DevOps这个术语是developer与operatio ...

  6. [转载]DevOps在传统企业的落地实践及案例分享

    内容来源:2017年6月10日,优维科技高级解决方案架构师黄星玲在“DevOps&SRE 超越传统运维之道”进行<DevOps在传统企业的落地实践及案例分享>演讲分享.IT 大咖说 ...

  7. CODING DevOps 系列第四课:DevOps 中的质量内建实践

    什么是质量内建 随着时间的推移,我们项目的开发效率会逐渐降低,直到几年之后整个项目可能就无法维护,只能推倒重来.具体的表现首先就是随着时间推移,我们会发现整个需求列表里面能做的需求越来越少,因为每当我 ...

  8. c++ Primer 第四版 第一阶段 const总结

    由于期末值考一门软件安全,所以果断看起c++Primer ,因为之前看谭浩强的c++感觉没什么用啊.所以这本书每阶段做个总结!!! 1.Const限定符作用: 在for循环中上限应该用一个固定变量来设 ...

  9. 【转载】Java的四种引用

    在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引 ...

随机推荐

  1. 【UI测试】--易用性

  2. echart 3 数据密集时,断点不显示问题

    如上图最开始标识的两点是不显示的,配置处理代码如下(series中配置symbolSize: 1,showAllSymbol: true): myChart.showLoading(); $.get( ...

  3. SQL Server 2008中的MERGE(不仅仅是合并)

    SQL Server 2008中的MERGE语句能做很多事情,它的功能是根据源表对目标表执行插入.更新或删除操作.最典型的应用就是进行两个表的同步. 下面通过一个简单示例来演示MERGE语句的使用方法 ...

  4. ajax from 提交

    $.ajax({                 cache: true,                 type: "POST",                 url:aj ...

  5. (8)What makes a good life? Lessons from the longest study on happiness

    https://www.ted.com/talks/robert_waldinger_what_makes_a_good_life_lessons_from_the_longest_study_on_ ...

  6. boost-使用format和lexical_cast实现数字和字符串之间的转换

    使用boost的format可以实现数字到string的格式化转换,boost的lexical_cast可以实现string到数值的转换,eg: #include "boost/format ...

  7. java常用设计模式十一:策略模式

    一.概述 定义:策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化.(概念不好理解,可以看第二节的合例子) 基本角色: 环境( ...

  8. Mybatis-Plus 实战完整学习笔记(二)------环境搭建

     第二章    使用实例   1.搭建测试数据库 -- 创建库 CREATE DATABASE mp; -- 使用库 USE mp; -- 创建表 CREATE TABLE tbl_employee( ...

  9. ng-repeat动态改变样式

    当我们使用AngularJs的ng-repeat时候动态绑定数据时,遇到遍历出来的标签样式都一样,这时候希望根据数组的下标分别对应不同的样式 解决:使用$index获取数组下标根据下标改变样式 < ...

  10. dom4j 通过 org.dom4j.DocumentFactory 设置命名空间来支持 带namespace 的 xpath

    测试文件 test.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...