从概念、关键问题、兴起到实现需求多角度了解DevOps


1、DevOps是什么?从哪里来?
2、DevOps的几个关键问题
3、为什么DevOps会兴起?为什么会继续火下去?
4、实现DevOps需要什么?
5、DevOps的采用现状

1

DevOps是什么?从哪里来?

DevOps的概念

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

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

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

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


历史变革

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

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

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

2

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行业,这反而可能错失了软件的发布时机。

3

为什么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)

4

实现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 SNSHTTP

加速器:Varnish

消息总线:ActiveMQ、SQS

应用服务器:Tomcat、JBossWeb

服务器: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对工程师个人的要求也提高了,很多专家也认为招募到优秀的人才也是一个挑战。

5

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行业现状。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DevOps 是一种提高软件开发效率的方法论,它将软件开发(Dev)与运维(Ops)的活动结合起来,通过自动化过程和工具的使用来提高效率。 要实现 DevOps,需要遵循以下几个步骤: 1. 建立良好的沟通机制:DevOps 需要开发和运维团队之间的密切合作,所以需要建立良好的沟通机制。 2. 自动化流程:通过自动化流程和工具,可以提高软件开发和部署的效率。 3. 建立持续交付(Continuous Delivery)和部署(Continuous Deployment)流程:通过持续交付和部署流程,可以快速将软件更新发布到生产环境。 4. 实施监控和诊断:在生产环境中,通过监控和诊断工具来检测和解决问题,保证系统的稳定运行。 5. 强调文化的重要性:DevOps 的成功离不开团队的文化建设,需要建立一个学习型、分享型、协作型的团队文化。 ### 回答2: 实现DevOps需要从组织文化、工具和流程三个方面入手。 首先,组织文化方面,建立共享的目标和愿景是关键。要鼓励开放的沟通和合作,打破各个部门之间的壁垒。组织需要鼓励团队成员互相信任、尊重和支持,培养个人的责任感和自主性。此外,要建立一个持续学习和创新的文化,鼓励员工不断提升技能,并尝试新的工作方法。 其次,工具方面,选择适合自己业务需求的DevOps工具和平台是重要的。常见的工具有版本控制工具、自动化构建工具、容器化技术、自动化测试工具、部署工具等。选择合适的工具要考虑团队的技术能力和需求,确保能够实现持续集成、持续交付和持续部署。 最后,流程方面,需要将软件开发和运维流程整合起来,形成一个无缝的流程。可以采用敏捷开发方法,将需求、设计、开发、测试和部署等环节衔接起来,减少交付周期和风险。关键是实现持续集成和持续交付,通过自动化流程和工具来实现快速、可靠的软件发布。 综上所述,实现DevOps需要在组织文化、工具和流程三个方面进行改进。不同的组织情况有所差异,可以根据实际情况逐步推进,持续改进和学习,最终实现高效的软件开发和运维。 ### 回答3: 实现DevOps的关键在于将开发和运维的工作流程整合起来,通过持续交付、自动化以及跨功能合作等方式,实现软件开发和部署的高效性和质量。以下是一些实现DevOps的关键步骤: 1. 文化转变:DevOps不仅仅是一种工具或方法,更是一种文化和理念的转变。公司需要培养一个团队合作、互相尊重和信任的环境,鼓励开发人员和运维人员之间的合作和沟通。 2. 自动化:通过自动化工具和流程,提高软件开发和部署的效率和质量。包括自动化测试、持续集成、持续交付等,以及自动化部署和配置管理等。 3. 效能监测与反馈:通过实时监测系统运行状况、性能指标和用户反馈等数据,及时发现和解决问题,持续改进和优化系统。 4. 跨功能团队协作:打破传统的开发和运维之间的壁垒,建立跨功能的开发团队,促进团队成员之间的合作和沟通,共同追求软件的交付和运维的目标。 5. 持续学习和改进:通过定期的回顾和反思,总结经验教训,不断学习和改进工作流程和技术实践,以适应不断变化的市场需求和技术发展。 6. 工具和技术支持:选择适合的工具和技术,以支持DevOps的实施。包括版本控制、自动化部署工具、集成开发环境等。 总之,实现DevOps需要公司的全面支持和文化转变,同时也需要团队成员之间的紧密合作和持续改进。只有通过持续的努力和实践,才能建立一个高效、协作和灵活的软件开发和部署流程,从而实现DevOps的目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值