上海品茶

您的当前位置: 上海品茶 > 三个皮匠报告百科 > DevOps

DevOps

目录

DevOps是什么

DevOps一词的来自于Development和Operations的组合,重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布过程更加快捷、频繁和可靠。DevOps是一组流程、技术与工具的统称,用于促进开发、运维和质量保障部门之间的沟通、协作与整合

DevOps

全球四家头部IT企业对DevOps给出的定义

(1)亚马逊:DevOps是集文化哲学、实务与工具于一身的结合,可提升组织快速交付应用程式和服务的能力,能更快速地开发和改进产品。

(2)微软:DevOps是人员,流程和产品的结合,使以前孤立的角色(开发、IT运营、质量工程和安全)能够进行协调和协作,以生产更好、更可靠的产品。

(3)IBM:DevOps是—种敏捷软件开发方法,开发和运营团队用于快速、质量和控制地构建、测试、部署和监视应用程序。

(4)谷歌:DevOps是一项组织和文化运动,旨在加快软件交付速度,提高服务可靠性,并在软件利益相关方之间建立共享所有权。

DevOps

DevOps起源

在2008年加拿大多伦多的敏捷大会上,Patrick Debois和Andrew Clay Schafer主持了一场研讨,提倡将敏捷原则应用到基础设施而不是应用程序的代码上。在2009年的Velocity会议上,John Allspaw和Paul Hammond分享了题为“每日10次部署:Dev和Ops在Flickr的协作”的演讲,讲述了他们如何建立Dev和Ops共享的目标,并通过运用持续集成等实践,将部署变成了日常工作的一部分,以及如何促进Web环境中安全,快速的变化。虽然Patrick Debois并不在现场,但他对Allspaw和Hammond的想法产生了浓厚的兴趣,并于2009年在比利时的根特市发起了第一次DevOpsDays活动,DevOps这个术语也应运而生,DevOps从此在世界范围内迅速传播开来。

DevOps知识体系

DevOps对于不同的人来说意味着不同的概念,因为DevOps的讨论涵盖很多方面。人们谈论DevOps是“开发和运营协作”,或者是“将代码视为基础设施”,或则是“使用自动化”,“工具链方法”,“文化”,或者许多看似松散的内容。通过梳理DevOps的知识,对DevOps知识体系按五个层面进行结构。分别是价值观,原则,方法,实践和工具,从高层抽象演化到低层具体。

DevOps

DevOps的价值观

DevOps的价值观源于敏捷发开,但是敏捷开发只要关注于软件开发这一侧,而DevOps还要关注运维这一侧。DevOps在原则层面更多关注运维一侧,同时引入敏捷开发和丰田精益内容。

DevOps宣言有:个体互动高于流程和工具;工作的系统高于详尽的文档;客户以及程序员合作高于合同谈判;响应变化高于遵循计划[1]

精益思想的本质是为了实现产品的价值流交付,在DevOps中,技术价值流的定义为“把业务构想转化为向客户交付价值的、由技术驱动的服务所需要的流程”。在精益生产制造中,在生产车间首次引入看板等可视化方法。看板不仅仅是一种可视化的信息源,看板在精益生产过程中起到了一个及时的库存控制调度系统的作用,待生产的产品只有在收到来自其下游工序的工作获取信号时才转移到下一个工序。DevOps把精益中价值流和可视化方法的概念做了很好的继承,并作为其所倡导的主要实践。

2009年的丰田套路(ToyotaKata)运动是丰田一个最重要的实践,丰田之所以成功是因为把改进作为日常工作的一部分,一直保持着持续改进。所有企业都有日常的工作流程,而这些日常工作决定了最终的产出。通过设定目标,制订每周的详细计划,并持续改善日常工作,如此循序渐进,才能达到优化和改进的目的。

同年,持续交付由JezHumble和David Farley共同提出的,把持续集成做逻辑上的延展,形成持续交付的新方法。持续交付的核心概念是部署流水线,部署流水线可以确保代码和基础设施一直处于可部署的状态,所有签入到源码库的代码都可以在安全可用的环境里部署。

DevOps的原则

DevOps在原则层面更多关注运维一侧,同时引入敏捷开发和丰田精益内容。主要有:软件开发的目标是通过持续不断地及早交付有价值的功能是客户满意;基础设施是代码,应该同样进行开发和管理。经常交付可工作的功能,像个几个星期或一两个月,倾向于采用较短的周期;业务人员、开发人员必须相互合作,项目中的每一天都不例外;增强学习,软件开发是个持续学习的过程,最佳的改善软件开发环境的做法就是增强学习;尽快交付,交付周期对于学习至关重要:设计、实时、反馈、改进。这些周期越短,可以学到的越多;DevOps中可以使用敏捷方法,比如Scrum,XP,kanban等。

DevOps的实践

DevOps管理实践主要包括迭代式计划、站立会议、回顾、评审、短周期迭代、团队估算等。DevOps技术主要包括单元测试、持续交付、持续集成、代码标准、重构等。

云原生下DevOps实践面临的挑战

根据《宋兵兵-云原生下的DevOps实践分享》[2]原生下的DevOps实践面临的挑战有:

大规模微服务应用:开发、测试、运维的工作量激增

多环境的一致性:容器化的应用,如何在不同的环境之间进行自动化推进

云化的基础设施:如何应对大规模基础设施的不可变性和动态扩展维护

快速发布和恢复:如何提高微服务应用更快的部署时间和恢复时间

应用质量保证:针对微服务的特点,如何更加有效的保证质量

应用性能管控:微服务应用架构下,故障定位、复现、多应用之间的依赖、应用性能跟踪、日志和告警处理

安全与控制:如何分层管控应用在生产环境上的发布风险

微服务治理:分布式应用部署下大规模应用服务如何进行编排,服务之间的动态发现注册、负载均衡和路由控制。

DevOps的—般实践流程

根据艾瑞咨询《2020年中国DevOps应用发展研究——艾瑞云原生系列报告(二)[3],从DevOps的流程实践上看,其流程可以分为三个阶段,分别是需求对接和应用设计、敏捷开发和持续测试以及最终测试和上线运维等,其核心是由开发人员和测试人员主导的敏捷开发和持续测试阶段。借助Scrum或Kanban等工作流方法的指引和一系列持续构建、持续集成、持续测试以及持续发布工具,IT团队能够高效率地开发通过微服务架构解耦的程序模块并及时、持续地与用户方面进行对接,对各个模块的研发质量和成果进行实时把控。在通过最终的集成和测试之后软件得以部署上线,此后开发人员能够借助应用容器化封装带来的统一环境之便,与运维人员一起对软件的运行质量进行监控.为用户提供支持服务,并继续根据市场需求进行版本更迭的进一步开发工作。

DevOps

DevOps的工具

DevOps非常依赖工具的使用,常见的DevOps的工具如下:

(1) 源代码库。源代码库是开发人员检入并更改代码的地方,源代码库管理检入的代码的各种版本。源代码控制工具是持续集成的重要组成部分,流行的源代码库管理工具主要有Git、Subversion、Cloudforce、BitBucket、TFS等

(2) 构建服务器。构建服务器是将源代码库中的代码编译为可执行代码的自动化工具,主要有Jenkins、TeamCity、Bamboo等。

(3)配置管理。配置管理定义服务器或环境的配置,主要配置管理工具有Puppet、Chef。

(4)虚拟基础架构和容器。Amazon Web Services、Microsoft Azure、阿里云是常见的虚拟化基础设施。虚拟化基础架构由销售基础设施或平台(PaSS)的云供应商提供。这些基础设施具有API,允许开发者以编程方式创建具有配置管理工具的新机器。在私有云平台领域,如VMware的vCloud,私有虚拟基础架构是的开发和运维人员能够在数据中心的硬件抽象层运行云。虚拟基础设施与自动化工具结合,使组织能够灵活配置服务器来实施DevOps。

(5)测试自动化。测试自动化已经存在了很长时间。DevOps测试着重于构建流中的自动化测试,以确保自可部署构建的时候,有信心已经准备好部署。如果没有广泛的自动化测试策略,并且无需任何人工活动部署软件,是无法达到持续交付的目标的。当前流行的工具由Selenium和Water。

(6)管道编排。管道就像一个制造流水线,发生在开发人员已经完成之后到程序部署在生产或者预生产环境中[1]

devops

DevOps应用现状

根据《2020BCS-北京网络安全大会:中国DevOps现状调查报告(2020年) 解读》[4]DevOps应用现状如下

(1)应用设计:近半数企业的应用架构能做到由专业人士设计,但仍有少部分企业采用巨石架构,所有功能归于一个模块。应用故障修复缺乏统一平台,自动化、智能化处理能力较弱。

(2)敏捷开发管理:DevOps应用中敏捷管理实践选择主要以发布计划、看板/任务板、每日站会、Sprint迭代和用户故事为主;企业多采用实体化敏捷团队及分工协作的管理模式,并以独立交付更多的业务价值为发展方向。持续集成、持续部署、单元测试、自动构建和持续发布是企业应用最为广泛的敏捷工程实践。

(3)技术运营:在技术运营方面,多数企业的监控管理范围已覆盖至系统、应用与接口日志等,但距离智能化监控管理还存在一定差距;超六成企业支持全生命周期的容量和成本管理,但管控能力缺乏灵活性;六成以上的企业整体RTO能达到99.9%以上,需健全应急和危机处理能力。而市场已较为成熟,能够帮助企业高效率、高质量地完成监控、分析、流处理等工作。

(4)安全管理:超四成的企业引入了DevSecOps,安全工具应用情况呈多样性,但其中容器及网络安全相关工具的普及率有待提升。

(5)持续交付:在持续交付方面,实现集成平台自服务化的企业大多支持持续、按需集成,集成频率与平台成熟度总体呈正比;且超半数企业实现了单元测试与接口测试自动化,而集成测试、可靠性测试及可用性测试的自动化程度仍有较大提升空间。其中代码管理工具Gitlab、持续集成与流水线工具Jenkins和容器引擎 Docker是企业应用最普遍的三种持续交付工具。

企业实现DevOps落地的路径

一般而言,企业实现DevOps的落地需要经历五个阶段,首先要实现企业内部的资源整合,提高资产和任务的可见性;其次是构建统一、流畅的线上和线下工作环境及流程,接着要搭建能够有效合作的团队体系,加强资源的共享﹔然后借助一系列信息化的DevOps工具构建企业的自动化开发运维流水线,并生成相应的管理指标体系;当自动化水平发展到一定水平且累计了充足的服务经验后,运维侧即能以标准化的形式为用户提供更高效便捷的服务[3]

DevOps

参考资料:

[1]韩东.适用于Docker环境的DevOps平台的设计与实践

[2]宋兵兵-云原生下的DevOps实践分享.pdf

[3]艾瑞咨询:2020年中国DevOps应用发展研究——艾瑞云原生系列报告(二)(51页).pdf

[4]2020BCS-北京网络安全大会:《中国DevOps现状调查报告(2020年)》 解读.pdf

本文由@Y-L发布于三个皮匠报告网站,未经授权禁止转载。


分享到微信 分享到微博 分享到QQ空间
上一篇:三元生物
下一篇:人力资源外包

百科标签

会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部