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. go语言练习

    // main package main import ( "fmt" "runtime" "sync" ) func main() { f ...

  2. Ionic学习

    1. 原来Http不能直接加在普通类里,下面的报错 import { Component } from '@angular/core'; import { NavController } from ' ...

  3. 【转载】为什么任何随便输入的账号使用SYSDBA权限都能登陆oracle

    其实简单点就是检查一下你的机器有没有一个ora_dba用户组,而且你登陆os的用户是否在这个组里,有的话问题的原因就找到了,下面是转的高手的介绍 本文环境配置:Oracle10gR2,Windows ...

  4. AJAX-DOM事件

    1.DOM事件 1.select的onchange事件 当选项框中的内容发生改变时需要出发的事件.2.Ajax 1.名词解释 1.同步 在一个任务进行中,不能开启其它的任务. 同步访问:浏览器在向服务 ...

  5. MVC 开发模式

    1.M:Model  模型:实体类和业务和dao 2.V:view  视图:JSP 3.C:Controller  控制器:servlet 3.1 作用:视图和逻辑分离 4.MVC适用场景:大型项目开 ...

  6. 使用Hadoop API 压缩HDFS文件

    下篇解压缩:使用Hadoop API 解压缩 HDFS文件 起因: 集群磁盘剩余空间不足. 删除了存储在HDFS上的,一定时间之前的中间结果,发现并不能释放太多空间,查看计算业务,发现,每天的日志存在 ...

  7. floor函数

    C++中 可以用floor函数来截断小数部分 floor(x)返回一个不大于x的整数,有点像取整函数

  8. jquery遍历之parent()与parents()的区别 及 parentsUntil() 方法

    来自:http://blog.csdn.net/zm2714/article/details/8117746 .parent(selector) 获得当前匹配元素集合中每个元素的父元素,由选择器筛选( ...

  9. 高性能Java RPC框架Dubbo与zookeeper的使用

    https://blog.csdn.net/qq_38982845/article/details/83795295

  10. shell脚本之正则表达式

    具体参考: www.jb51.net/tools/shell_regex.html 正则表达式常用于grep AWK 等工具中