DevOps简介

DevOps 是一个完整的面向IT运维的工做流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等全部环节。python

 

 

DevOps的概念ios

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

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

 

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

历史变革api

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

DevOps早在九年前就有人提出来,可是,为何这两年才开始受到愈来愈多的企业重视和实践呢?由于DevOps的发展是独木不成林的,如今有愈来愈多的技术支撑。微服务架构理念、容器技术使得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

  • 构建工具:Ant、Gradle、maven

  • 自动部署:Capistrano、CodeDeploy

  • 持续集成(CI):Bamboo、Hudson、Jenkins

  • 配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail

  • 容器:Docker、LXC、第三方厂商如AWS

  • 编排:Kubernetes、Core、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%。

 

相关文章
相关标签/搜索