DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。
DevOps的概念
DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps其实包含了三个部分:开发、测试和运维。
换句话说,DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。专家们总结出了下面这个DevOps能力图,良好的闭环可以大大增加整体的产出。
历史变革
由上所述,相信大家对DevOps有了一定的了解。但是除了触及工具链之外,作为文化和技术的方法论,DevOps还需要公司在组织文化上的变革。回顾软件行业的研发模式,可以发现大致有三个阶段:瀑布式开发、敏捷开发、DevOps。
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%。
相关推荐
DevOps 五大理念及其落地实践 研发运维一体化(DevOps)成熟度模型 中国DevOps现状调查报告及解读 构建企业DevOps的度量体系 DevOps实践指南精要 分布式敏捷和DevOps实践案例 AWS DevOps 助力爱乐奇大规模业务扩展 ...
DevOps 基础课程讲义 DevOps 是一种实践,旨在将开发和运维团队紧密合作,以提供高效、可靠的服务。它涵盖了从设计和开发过程一直到生产支持的整个服务生命周期。 DevOps 还要求运维人员在他们的系统工作中使用...
DEVOps成熟度模型是一系列旨在评估组织在软件开发和交付过程中实施DEVOps实践有效性的标准。本模型分为七个章节,每个章节关注DEVOps流程的一个方面,其主要目的是为组织提供一个明确的成熟度路径,帮助它们从初始级...
DevOps是一种旨在促进开发(Development)和运维(Operations)团队之间协作与沟通的软件工程实践。随着敏捷开发的普及,DevOps应运而生,它强调快速交付高质量的软件产品,通过自动化流程来提高效率,确保软件在...
devops主题系列演讲一共有14个部分,这是第11部分,每个部分里有10个大佬演讲的PPT,每个PPT都是独立的。 龙井-龙门阵之DevOps门外汉须知 罗伟-蘑菇街基于容器的全生命周期 DevOps 运营平台建设 牛晓玲&景韵-转型...
DEVOPS 概述 DEVOPS 的历史可以追溯到计算机刚刚出现的时期,当时软件开发还是少数人通过高学历才能够掌握的技能。那时只有程序(Program),但没有软件(Software),所以那个时候编写程序的人员被称为程序员...
《DevOps实践:驭DevOps之力强化技术栈并优化IT运行》是一本深入探讨DevOps理念、工具和技术的著作,旨在帮助企业提升IT运营效率,优化技术栈,促进开发与运维团队之间的协作。这本书中文高清版包含了完整的PDF内容...
DevOps Master认证考试是针对那些希望深入理解和实践DevOps理念的专业人士的一项专业资格认证。这份样题涵盖了DevOps的关键概念,包括精益管理、轻量级IT服务管理、知识体系以及团队多元性的价值。 1. 精益管理:在...
DevOps是一种旨在促进开发(Development)和运维(Operations)团队之间协作与沟通的软件工程实践,以实现更快、更高质量的软件交付。随着数字化转型的推进,DevOps已经成为企业提升IT效率、敏捷性和创新能力的关键...
DevOps 统一研发体系建设方案 本文档旨在介绍 DevOps 统一研发体系建设方案的整体架构和实施过程。该方案的目标是构建一个统一的研发平台,实现敏捷和 DevOps 的转型,提高应急管理能力和业务响应速度。 在 DevOps...
在“Go/Golang DevOps运维开发实战集训营”中,我们主要探讨的是如何利用Go语言,也称为Golang,进行DevOps实践以及与Kubernetes(k8s)的集成应用。这个集训营课程专注于2022年5月29日的最新技术趋势,旨在帮助...
在本“Python DevOps运维开发实战集训营【高级班】冲刺班”中,学员将深入学习Python在DevOps领域的应用,以及与之相关的k8s(Kubernetes)技术。这个课程面向的是已经有一定基础的开发者,旨在通过实战训练提升其在...
在2020年的中国DevOps现状调查报告中,我们可以看到DevOps在中国的落地实践现状,包括DevOps的成熟度、应用现状、企业对于DevOps工具和技术的选择、DevOps转型现状以及面临的问题和挑战。报告基于1858份有效问卷,并...
标题“07-DevOps开发运维一体化.pdf”和描述“DevOps开发运维一体化”所要传达的核心知识点涉及DevOps的概念、价值、工具链和流程,以及它在企业中实施的优势和挑战。这些知识点是当代IT行业特别是软件开发和运维...
当前DEVOPS的发展变化情况. The Accelerate State of DevOps Report is the largest and longestrunning research of its kind. It represents five years of work surveying over 30,000 technical professionals ...
### DevOps for Web Development #### 知识点一:DevOps 概念及核心原则 - **定义**:DevOps 是一种文化和实践方法,旨在通过自动化软件交付过程和基础设施变更来缩短系统变更从构建到生产的时间,同时保持高质量...
分享一套Python DevOps运维开发的视频教程——《Python DevOps运维开发实战集训营【中级班】》,2021年12月底结课,提供课程配套的全部文档代码资料下载! 课程一共12周: 第1周、开班仪式 第2周、第一阶段:Python...
DevOps开发运维一体化平台建设解决方案 随着信息技术的飞速发展,软件产品更新迭代的速度变得越来越快,企业面临的市场竞争也日趋激烈。为了在竞争中脱颖而出,企业必须寻求更高效的工作流程和管理策略。DevOps...