原文链接:https://www.xzbu.com/8/view-13303702.htm

备注:主要是这个网站

摘要:近年来,DevOps作为新兴软件开发管理范型,得到了广泛关注。它通过整合开发和运维,实现了软件产品和服务的持续交付,从而让企业提高效能,降低成本。本文先简述了DevOps概念及优势,其次从采用率、使用成效及工具几个方面研究了DevOps的发展现状,最后分析了DevOps未来发展趋势。 
  关键词:DevOps;开发与运维;持续交付;IT工作流 
  中图分类号:TP393.09 文献标识码:A 文章编号:1007-9416(2018)04-0074-03 
  1 引言 
  随着互联网信息技术的快速发展,软件和服务的生命周期迭代间隔不断缩短,用户都期望能够在第一时间获得最新产品及服务,也希望缺陷能够在最短时间内修复,快速交付能力成为企业的核心竞争力。DevOps提出将开发与运维结合,其持续部署、持续交付技术能够有效提高产品和服务交付能力,帮助企业提升效能,因而得到了广泛关注。随着这几年不断的探索与实践,DevOps已从最初的流行词转化为行业的焦点技术,DevOps正在给传统软件开发模式带来巨大的变革。 
  2 DevOps介绍 
  2.1 DevOps概念 
  DevOps(英文Development 和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合,如图1。 
  DevOps概念最早在2009年的欧洲被提出,它的出现是由于软件行业逐渐清晰的认识到,当前主流的敏捷开发带来的是持续测试的能力,这种开发模式并未消除开发与运维之间的隔阂,将开发团队与运维团队独立开的传统方式,已成为提高交付速度的障碍。为了填补开发和运维之间的信息鸿沟,改善团队之间的协作关系,DevOps应运而生,旨在促进开发和运维紧密合作,实现按时交付软件产品和服务的目标。 
  2.2 DevOps优势 
  在软件开发过程中,存在技术的价值流,它体现在从需求提出到开发、测试、部署、发布、运营整个流动过程。技术价值流关注从提出商业需求,到把设想利用技术转化为服务,最终交付价值给客户。在技术价值流中,缩短每个环节的时间,确保流程高效和高质量流动,有助于提高价值与效能。 
  而DevOps就是从软件交付的全局出发,构建的一��完整的IT工作流(如图2),以IT自动化及持续集成(CI,Continuous Integration)、持续交付、持续部署为基础,优化开发、测试、系统运维等所有环节。DevOps的核心原则是快速流动、快速反馈与持续学习,其主要优势表现在以下几方面: 
  (1)支持高效交付,缩短软件开发周期。传统的软件开发模式中,开发、测试、运营各部门分离,沟通较少,往往上游环节很大程度制约了下游环节的开展,造成开发流程推进缓慢,开发周期长问题。而DevOps开发管理模式中,开发、运维及质量部门紧密结合,通过利用完整的工具链实现最大程度自动化部署、测试,从而有效的缩短了开发周期,达到高效交付的目标。 
  (2)快速获取反馈,提升软件质量及稳定性。在软件开发过程中,出现问题是不可避免的,如何快速发现并解决问题是关键。传统的软件开发模式中,开发人员将产品开发完成后,交由测试部门人员进行部署测试,往往在工作周期的后期才发现问题,这种反馈是非常慢的。而DevOps使用持续集成、测试与持续交付的方式,代码提交几分钟后就可以得到反馈,如有问题,可快速发现并解决。这大大降低了投产过程中产生问题的可能性。另外,由于在之前环节各部门已紧密沟通,因此即使投产中出现问题,也可以一起快速定位并处理问题,从而提升软件的质量与稳定性。 
  (3)改善公司文化,促进持续学习与沟通。随着DevOps在各大组织的逐步实践,人们越发意识到DevOps不单单是一种模式,更是一种文化。DevOps成功与否在于公司组织是否善于协作沟通,这不仅仅指开发运维部门的协作,也是和最终产品相关的所有人的协作,以及领导层的支持。也就是说,DevOps的成功需要整个组织的合作参与。这对传统的公司文化是个巨大的变革,使用DevOps的公司已经采取了各种措施促进这种文化的建立,如建立共享平台,各部门员工可共享高质量和一致性的信息,促进知识复用与学习;开展全组织例会,加强员工之间的沟通,加快遇到问题时处理速度,提高工作效率等。协作的公司文化也有助于增加员工成就感和对工作的满足感,从而更好的投入工作。 
  3 DevOps的发展现状 
  3.1 DevOps采用率 
  在过去的几年里,DevOps采用率逐步增长。在国外,很多全球知名的公司如Google、Facebook、Amazon、LinkedIn、Netflix等都在采用DevOps或提供相关支持产品。在近3年由Puppet与DevOps研究与评估协会组织的DevOps调查中发现,使用DevOps的部门比例已从2014年的16%增长到2017年的27%,如图3。世界500强企业的DevOps员工比前三年更是增长了两倍之多。很多公司聘用专门的DevOps工程师协助团队使用超前的自动化工具做快速的交付。而在DevOps使用行业分布方面,也呈现出扩展趋势。几年前使用DevOps主要为科技行业,而现在DevOps已深入到包括金融、零售、电信和教育等众多行业。调查中还发现,未使用DevOps的人也有32%表示将计划部署仅有20%的人表示无意采用DevOps。可见,DevOps的采用率可能将继续增长。 
  目前,DevOps在国内还不算流行,虽然部分知名企业,如腾讯、华为、阿里巴巴等已经采用DevOps,但大部分传统行业还没有DevOps实践。在DevOps中国社区发布的《DevOps中国.2017年度调查报告》中显示,国内DevOps参与者主要集中在科技和互联网行业,其他行业对DevOps了解略显不足。另外,设立DevOps部门的比例为13%,与全球水平有一定差距。通过对比来看,目前DevOps在中国的发展还处于起步阶段,不过,有很多DevOps中国社区成员及其他DevOps从业者也正在通过努力促进DevOps在中国的认知和推广。   3.2 DevOps使用成效 
  DevOps旨在通过加强自动化,加快软件发布和部署速度,降低系统出错频率,更快地消除宕机和错误的影响,从而提高效能,降低成本。我们一般可以用软件交付力和系统稳定性来衡量IT效能。 
  2017年《DevOps现状调查报告》中显示,使用DevOps的组织现已经可以按需每日进行多次部署,每年可高效部署1400次以上,部署频率比未使用DevOps的组织高46倍。变更周期时间指标上,使用DevOps的组织部署变更到生产环境的前置时间已少于1小时,而未使用DevOps的组织使用时间为一周到一个月。而在稳定性方面,使用DevOps时,故障恢复时间(MTTR)可以达到1小时之内,变更失败的概率平均值是7.5%;而未使用DevOps时,故障恢复时间为1天到1周,变更失败的概率为38.5%。 
  可见,使用DevOps较大推动了工作流流动及反馈,提高了企业组织效率。众所周知,在IT行业竞争日益激烈的今天,延迟发布更新产品或停机所带来的损失是巨大的,有时会产生不可估量的影响。提高企业效能也意味着降低成本为企业带来收益。 
  3.3 DevOps工具 
  近几年DevOps的�l展实践也得益于配套工具的技术发展,目前DevOps的构建、部署、运维等各阶段都有多种不同的工具供支持。其中常用的构建工具有Ant、Maven、Rake、Gradle等,持续集成工具有Jenkins、TeamCity、Bamboo等,配置管理工具有Puppet、Chef、Ansible等,日志工具有Loggly、Graylog等,监控工具 有Nagios、New Relic、Cacti等,如图4。每个公司可以根据自己的项目情况搭建适用于自己的DevOps工具链。 
  据调查显示,Jenkins、Chef和Puppet依然是DevOps团队使用率最高的工具。随着容器技术的发展,Docker成为使用量增长最快的工具。而也有部分企业,在已有工具的基础上,开发使用适用于自己的自动化工具。 
  4 DevOps的发展趋势 
  (1)DevOps将出现在更多的行业领域。在当今瞬息万变、信息量巨大的时代,业务的灵活可靠高效是各企业追求的目标。DevOps实践显示,DevOps给企业的财务指标还有非财务指标都带来了价值。随着DevOps相关概念和技术不断的深入发展,更多行业领域将能找到自己关注的特性。因此DevOps渗入到更多行业是必然趋势,各行业都可以通过DevOps获取技术改进对组织效能的积极影响。 
  (2)自动化流程标准化。DevOps最直观的一个价值就是自动化,自动化构建、自动化测试、自动化部署等等。自动化的价值是清晰的,但目前自动化还处于各种工具、平台、语言相对独立的阶段。每个公司每个项目都在各自搭建自动化流程,这需要花费相当一部分时间与精力去配置、测试和管理。比如JAVA项目团队通过调研测试制定了一套可以很好实现自动化流程的机制,但其他项目很可能不能直接复用,还需重新构建自己的流程和规范,这就使自动化的价值没有发挥到最高。随着对DevOps不断的摸索反馈,未来一定会制定一套统一的自动化流程标准,让各项目更容易的去应用DevOps,从而释放更多时间精力去做更能产生价值的工作。 
  (3)将安全融入到DevOps工作流。在传统的开发模式中,开发人员通常在构建软件时认为功能需求优先于安全。虽然安全编码起着重要作用,但对于需赶在最后期限前构建应用的团队来讲,它往往被降到功能需求之后。但随着自动化安全在DevOps实践中提出,这种思维也逐渐发生改变。DevSecOps的新型理念将安全融入到DevOps工作流,通过在软件周期中加入安全测试技术,在持续整合平台中增加自动化安全分析等方式,来增强应用程序安全性,同时不拖累发布和部署周期。DevSecOps鼓励开发人员思考如何将应用程序的安全融入日常代码中,主动保证安全并打败攻击,这将对交付安全产生积极影响。 
  (4)架构松耦合化。在DevOps的实践过程中,人们越来越感受到系统架构与持续交付和IT性能的紧密关联。经调查发现,松耦合的架构和团队能够提高实施持续交付的能力。松耦合架构,更易于在不依赖关联组件或服务的变更下修改独立的组件或服务。就组织而言,团队 也可以不依赖其他团队完成工作。但是如何更好的解耦也一直是实践的难点之一。随着近年新型应用设施方式的出现(如微服务架构),更多新的架构技术将与DevOps实践结合,实现架构松耦合化,更好的促进持续交付与性能。 
  5 结语 
  DevOps作为一种新兴开发管理范型,实现了开发与运维的协同,它以一系列自动化为基础完成软件的持续交付与持续部署,从而提高产品和服务的交付效率与质量。近些年,凭借其优势,越来越多DevOps实践者从中受益。可以预见,随着DevOps的深入实践和技术的不断完善, DevOps将得到更广泛的应用,给软件开发及组织模式带来更大的变革与影响。同时也期待DevOps技术带来的更多机遇与挑战。 
  参考文献 
  [1]邹筱菁,科林.基于DevOps的软件开发管理模式[J].数字技术与应用,2016,(11):184-187. 
  [2]陈咏秋.面向云服务的DevOps知识获取与应用[J].计算机系统应用,2016,(12):221-226. 
  [3]丁海斌,崔隽,陆凯.基于Docker的DevOps系统设计与实现[J].指挥信息系统与技术,2017,(6):87-92.

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐