免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

DevOps 的前世今生

  • 2016-09-18
  • 本文字数:4168 字

    阅读完需:约 14 分钟

目前在国外,互联网巨头如 Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb,传统软件公司如 Adobe、IBM、Microsoft、SAP 等,亦或是网络业务非核心企业如苹果、沃尔玛、索尼影视娱乐、星巴克等都在采用 DevOps 或提供相关支持产品。那么 DevOps 究竟是怎样一回事?在 Puppet、RightScale 分别 DevOps 出版的调查报告基础上,整理本文,以期为读者理清思路。另外,中国正在开展了一份自己的调查问卷,由南京大学发起,欢迎大家投票参与

DevOps 是什么?从哪里来?

DevOps 的概念

DevOps 一词的来自于 Development 和 Operations 的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。

DevOps 概念早先升温于 2009 年的欧洲,因传统模式的运维之痛而生。

DevOps 是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps 其实包含了三个部分:开发、测试和运维。

换句话说,DevOps 希望做到的是软件产品交付过程中 IT 工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。专家们总结出了下面这个 DevOps 能力图,良好的闭环可以大大增加整体的产出。

历史变革

由上所述,相信大家对 DevOps 有了一定的了解。但是除了触及工具链之外,作为文化和技术的方法论,DevOps 还需要公司在组织文化上的变革。回顾软件行业的研发模式,可以发现大致有三个阶段:瀑布式开发、敏捷开发、DevOps。

DevOps 早在九年前就有人提出来,但是,为什么这两年才开始受到越来越多的企业重视和实践呢?因为 DevOps 的发展是独木不成林的,现在有越来越多的技术支撑。微服务架构理念、容器技术使得 DevOps 的实施变得更加容易,计算能力提升和云环境的发展使得快速开发的产品可以立刻获得更广泛的使用。

(注:上图摘自上月红帽副总裁 Ashesh Badani 的一次新闻分享会)

DevOps 的几个关键问题

好处是什么?

DevOps 的一个巨大好处就是可以高效交付,这也正好是它的初衷。Puppet 和 DevOps Research and Assessment (DORA) 主办了 2016 年 DevOps 调查报告,根据全球 4600 位各 IT 公司的技术工作者的提交数据统计,得出高效公司平均每年可以完成 1460 次部署。与低效组织相比,高效组织的部署频繁 200 倍,产品投入使用速度快 2555 倍,服务恢复速度快 24 倍。在工作内容的时间分配上,低效者要多花 22% 的时间用在为规划好或者重复工作上,而高效者却可以多花 29% 的时间用在新的工作上。所以这里的高效不仅仅指公司产出的效率提高,还指员工的工作质量得到提升。

DevOps 另外一个好处就是会改善公司组织文化、提高员工的参与感。员工们变得更高效,也更有满足和成就感;调查显示高效员工的雇员净推荐值(eNPS:employee Net Promoter Score)更高,即对公司更加认同。

快速部署同时提高 IT 稳定性。这难道不矛盾吗?

快速的部署其实可以帮助更快地发现问题,产品被更快地交付到用户手中,团队可以更快地得到用户的反馈,从而进行更快地响应。而且,DevOps 小步快跑的形式带来的变化是比较小的,出现问题的偏差每次都不会太大,修复起来也会相对容易一些。

因此,认为速度就意味着危险是一种偏见。此外,滞后软件服务的发布也并不一定会完全地避免问题,在竞争日益激烈的 IT 行业,这反而可能错失了软件的发布时机。

为什么 DevOps 会兴起?为什么会继续火下去?

条件成熟:技术配套发展

技术的发展使得 DevOps 有了更多的配合。早期时,大家虽然意识到了这个问题的,但是苦于当时没有完善丰富的技术工具,是一种“理想很丰满,但是现实很骨感”的情况。DevOps 的实现可以基于新兴的容器技术;也可以在自动化运维工具 Puppet、SaltStack、Ansible 之后的延伸;还可以构建在传统的 Cloud Foundry、OpenShift 等 PaaS 厂商之上。

来自市场的外部需求:这世界变化太快

IT 行业已经越来越与市场的经济发展紧密挂钩,专家们认为 IT 将会有支持中心变成利润驱动中心。事实上,这个变化已经开始了,这不仅体现在 Google、苹果这些大企业中,而且也发生在传统行业中,比如出租车业务中的 Uber、酒店连锁行业中的 Airbnb、图书经销商 Amazon 等等。能否让公司的 IT 配套方案及时跟上市场需求的步伐,在今天显得至关重要。

DevOps 2016 年度报告给出了一个运维成本的计算公式:
停机费用成本 = 部署频率 * 版本迭代失败概率 * 平均修复时间 * 断电的金钱损失

来自团队的内在动力:工程师也需要

对于工程师而言,他们也是 DevOps 的受益者。微软资深工程师 Scott Hanselman 说过“对于开发者而言,最有力的工具就是自动化工具”(The most powerful tool we have as developers is automation)。工具链的打通使得开发者们在交付软件时可以完成生产环境的构建、测试和运行;正如 Amazon 的 VP 兼 CTO Werner Vogels 那句让人印象深刻的话:“谁开发谁运行”。(You build it, you run it)

实现 DevOps 需要什么?

硬性要求:工具上的准备

上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下:

  • 代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion、TFS
  • 构建工具:Ant、Gradle、maven
  • 自动部署:Capistrano、CodeDeploy
  • 持续集成(CI):Bamboo、Hudson、Jenkins
  • 配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
  • 容器:Docker、LXC、Rkt、第三方厂商如 AWS
  • 编排:Kubernetes、Apache Mesos、DC/OS
  • 服务注册与发现:Zookeeper、etcd、Consul
  • 脚本语言:python、ruby、shell
  • 日志管理:ELK、Logentries
  • 系统监控:Datadog、Graphite、Icinga、Nagios
  • 性能监控:AppDynamics、New Relic、Splunk
  • 压力测试:JMeter、Blaze Meter、loader.io
  • 预警:PagerDuty、pingdom、厂商自带如 AWS SNS
  • HTTP 加速器:Varnish
  • 消息总线:ActiveMQ、SQS
  • 应用服务器:Tomcat、JBoss
  • Web 服务器:Apache、Nginx、IIS
  • 数据库:MySQL、Oracle、PostgreSQL 等关系型数据库;cassandra、mongoDB、redis 等 NoSQL 数据库
  • 项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker

在工具的选择上,需要结合公司业务需求和技术团队情况而定。(注:更多关于工具的详细介绍可以参见此文: 51 Best DevOps Tools for #DevOps Engineers

软性需求:文化和人

DevOps 成功与否,公司组织是否利于协作是关键。开发人员和运维人员可以良好沟通互相学习,从而拥有高生产力。并且协作也存在于业务人员与开发人员之间。出席了 2016 年伦敦企业级 DevOps 峰会的 ITV 公司在 2012 年就开始落地 DevOps,其通用平台主管 Clark 在接受了 InfoQ 的采访,在谈及成功时表示,业务人员非常清楚他们希望在最小化可行产品中实现什么,工程师们就按需交付,不做多余工作。这样,工程师们使用通用的平台(即打通的工具链)得到更好的一致性和更高的质量。此外,DevOps 对工程师个人的要求也提高了,很多专家也认为招募到优秀的人才也是一个挑战。

DevOps 的采用现状

哪些公司在用?

DevOps 正在增长,尤其是在大企业中:调查发现,DevOps 的接受度有了显著提高。74% 的受访者已经接受了 DevOps,而去年这一比例为 66%。目前,在 81% 的大企业开始接受 DevOps,中小企业的接受度仅为 70%。

那么具体而言都有些公司在采用 DevOps 呢?Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Target(泛欧实时全额自动清算系统)、Walmart、Sony 等等。

他们怎么实施的?

首先,大企业正在自下而上接受 DevOps,其中业务单位或部门(31%)以及项目和团队(29%)已经实施 DevOps。不过,只有 21% 的大企业在整个公司范围内采用了 DevOps。
其次,在工具层面上,DevOps 工具的用量大幅激增。Chef 和 Puppet 依然是最常用的 DevOps 工具,使用率均为 32%。Docker 是年增长率最快的工具,用量增长一倍以上。Ansible 的用量也有显著增加,使用率从 10% 翻倍至 20%。

并且调查还发现不到半数(43%)的公司在使用诸如 Chef、Puppet、Ansible 或 Salt 等配置工具;然而使用配置工具的公司更有可能同时使用多个工具。25% 的受访者使用两种或更多配置工具,只使用一种工具的比例为 18%。其中 Chef 和 Puppet 是最常用的组合:使用 Chef 的组织中有 67% 同时也使用 Puppet,类似的,使用 Puppet 的组织中也有 67% 同时使用了 Chef。

中国也在准备一份 DevOps 的报告

文中的统计数据来自于国外的 DevOps 调研报告。其中由 Puppet 发起的 DevOps 年度国际调查报告已经连续出版五年,先后收集了 2.5 万技术人员的答卷;2016 年收集的有效答卷为 4600 份,不过仅有 10% 来自于亚洲。我们并不认为这样的采样率和采样数量可以充分地反映中国的 DevOps 行业现状。

目前,依托 DevOps 中国社区成员的积极参与支持,由南京大学发起开展《DevOps 中国 2016 年度调查》活动。期望通过本次问卷调查,收集 DevOps 的率先实践者们关于 DevOps 实践及经验的相关信息,从而了解 DevOps 在中国推广应用的状况,并汇总在 DevOps 实践中可能遇到的障碍、挑战和最佳实践,最终通过调查报告进一步促进 DevOps 在中国的认知和推广,同时为 DevOps 的每一位实践者提供有价值的参考信息和帮助。

调查问卷的设计主要参考了国际上 2014-2016 年度的《State of DevOps Report》及《State of Agile Report》的调查问卷设计,以实现信息数据在国内和国际之间的可比性,并根据业内专家意见经过多轮修改。目前问卷中英文版已上线,点此可进行中文版调查。本次问卷调查为学术公益性质,所形成的年度调查报告将免费公开。

期待大家能填写调查问卷,支持中国DevOps 的发展!

参考文章:

http://www.infoq.com/cn/news/2016/08/essence-enterprise-accelerate-op http://www.infoq.com/cn/news/2016/09/devops-enterprise-ITV https://devup.co/a-look-at-devops-tools-landscape-7220099c6b81#.oehabi9xp https://en.wikipedia.org/wiki/DevOps https://puppet.com/resources/white-paper/2016-state-of-devops-report http://www.rightscale.com/lp/devops-trends-report

关注高效开发运维长期领取优质文章补给~


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-09-18 19:0013149
用户头像

发布了 58 篇内容, 共 43.7 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

行车数据上链,国产汽车很上道

CECBC

架构实战训练营 - 模块4 - 作业

Presley

学会这12个Java开发框架轻松拿到30K+

北游学Java

Java spring Netty mybatis 框架

架构师实战营 模块四作业(设计千万级学生管理系统的考试试卷存储方案)

代廉洁

架构实战营

10年后,区块链的世界将会变成什么样子?

CECBC

用 Python 打印九九乘法表 - DAY7

Qien Z.

Python 5月日更

这5个浏览器工具,让你的上网舒适度提升150%

彭宏豪95

效率 工具 浏览器 脚本 5月日更

想要做网页游戏怎么办 ?PixiJs 篇(四)

空城机

JavaScript 大前端 游戏 pixi 5月日更

架构实战营模块4作业

En wei

架构实战营

重学Scrum三大支柱 《Scrum指南》重读有感(1)

Bruce Talk

Scrum 敏捷 随笔 Agile

大数据中的工作流调度

五分钟学大数据

大数据 5月日更

模块4作业

Geek_2e7dd7

架构训练

我的Serverless实战—玩转腾讯云Wordpress

liuzhen007

Serverless 5月日更

SaaS的前世、今生与未来[下篇]

LigaAI

SaaS

perf + 火焰图用法 小结

hashyong

程序员 架构 5月日更 perf

架构师实战营 模块四总结

代廉洁

架构实战营

数据挖掘从入门到放弃(三):朴素贝叶斯

数据社

机器学习 5月日更

<精益创业>读后感

Bruce Talk

敏捷 随笔 Agile

没有发生GC也进入了安全点?这段关于安全点的JVM源码有点意思!

CoderW

Java 源码分析 JVM GC

高耦合:为何代码一直被绑架?

Jxin

小谈音视频质量检测

箭上有毒

音视频 5月日更

架构师实战营 模块四作业(设计千万级学生管理系统的考试试卷存储方案)

代廉洁

架构实战营

Python 之父爆料:明年至少令 Python 提速 1 倍!

Python猫

Python

zstd c++ string 压缩&解压

hashyong

c++ 程序员 架构 5月日更 zstd

【LeetCode】数组中两个数的最大异或值Java题解

Albert

算法 LeetCode 5月日更

《Redis入门指南(第 2 版)》读后感

codists

redis

利用Nginx流量镜像,优雅的接入waf

运维研习社

nginx WEB安全 waf 5月日更

cri-o技术探秘3

xumc

Docker 容器 cri-o pinns

一文看懂 slice

Rayjun

Go 语言

Impala架构剖析

大数据技术指南

大数据 5月日更

架構實戰營 - 模塊 4 作業

Frank Yang

架构实战营

DevOps的前世今生_语言 & 开发_木环_InfoQ精选文章