DevOps发展的三个阶段
作者:陈鑫,阿里云云效产品技术负责人
首先我们简单看一下什么是DevOps,这个词从何而来。我在这里把DevOps发展历史分为三个阶段:诞生期、定义期和落地期。
DevOps的“祖师爷”是比利时一名独立IT咨询师Patrick Debois。2007年,他负责一个大型项目的测试和验证工作,一边和开发对接测试代码,一边和运维对接“发版”。他发现项目组里的开发和运维两个角色的思维方式差异巨大,一边希望“快快快”,一边希望“稳稳稳”,这让他有点崩溃。
在2008 Agile Conference大会上,Patrick遇到了Andrew,两个人一拍即合,开始琢磨如何改变这种Dev和Ops水火不容的现状。
2009 年 10月,Patrick 通过 Twitter 召集开发工程师和运维工程师在比利时根特市举办了首届“DevOpsDays”大会,开始大规模讨论Dev和Ops的协作话题。后来为了便于传播“DevOpsDays”被缩写为“DevOps”。
在2009年以后,DevOps开始火遍全球。2010 年,The Agile Admin博客发表文章《What is DevOps 》 ,详细阐述了DevOps的定义,包括一系列价值观、原则、方法、实践以及对应的工具。
同样是2010 年,《持续交付》的作者Jez Humble出席第二届的 DevOpsDays 大会,并做了 “持续交付”的演讲。这是非常重要的里程碑,可以说《持续交付》这本书就是DevOps的最佳实践,以至于国内搞研发效能的同学人手一本。也正是这本书,加速了业界对DevOps的理解以及落地。
但我认为业界真正开始大规模落地DevOps,还是不能离开容器化技术的功劳。“Docker”起到了决定性作用,通过编写Dockerfile,第一次可以让开发者轻松定义软件运行环境,并且能通过CI/CD标准化流程去交付它。不过这么多容器运维起来仍然麻烦,于是google在2014年开源“k8s”(Kubernetes);2015年CNCF(Cloud Native Computing Foundation 云原生计算基金会)成立,正式将“k8s”作为核心,建立了一个巨大的生态系统。有了“docker”和“k8s”技术上助力,加速了开发和运维角色的融合,于是DevOps不再是空中楼阁。
我距离DevOps有多远
回顾完历史,我们对照下自身,通过三个小问题来看看自己的团队是不是已经是“DevOps”了。
1、我每次写完代码都可以部署生产环境,不需要别人帮助。
2、有很多监控、运维工具可以任我使用,轻松处理线上各种问题和故障。
3、我直接为线上用户的体验负责,不管是代码缺陷还是运维故障,自己搞的自己背锅。
以上我三个问题,其实分别涉及到了DevOps最重要的三个方面,做法、工具、文化,这三者缺一不可。
什么是好的DevOps团队
什么是高效能研发团队呢?我们可以参考《2018 DevOps现状报告》里这张表格:能做到每小时1次或者每天1次部署,1天或1周能够上线1个版本,服务恢复时间小于1天,变更失败率小于15%。不过这个数字其实并不好看,以我们自己举例,阿里巴巴研发平台团队,可以轻松做到1天多次发布生产,可用性99.95%,变更失败率小于5%。
这些要求在阿里巴巴看起来稀疏平常,那阿里是怎么一步一步走过来的,我们其他企业应该如何复制这些经验。让我们进入下一节