DevOps:快速可靠的协作式应用交付理念

分享

什么是 DevOps?

DevOps 是一种软件交付理念和方法,以协作测试、打包和部署软件为核心,目的是增强软件版本的发布规律和可靠性。越来越多的证据表明,精心设计的稳健 DevOps 实践可提高软件部署的速度和稳定性,同时还可缩短故障恢复时间和软件更新前导时间。DevOps 是软件驱动型企业在云时代取得成功的关键,可提高 IT 响应能力和客户满意度。因此,越来越多的行业领导者开始在工具方面大力投资并提倡协作式理念和团队动态化,以此来推行 DevOps。

DevOps 是以精益思维和敏捷开发为首的各项运动在更广泛范围内的应用和成就,其最终目标是快速交付高质量的软件。敏捷开发通常以软件工程师的角色为核心,侧重于以增量方式快速开发软件。在云时代,随着软件越来越多地作为服务使用,软件直到在生产环境中投入使用之后才被视为已交付。为了秉承敏捷理念,以持续、增量且快速的方式交付软件功能越来越受到重视。因此,“敏捷”的范围必须拓展,以将速度和质量纳为运维中需要考虑的因素,所谓运维,是指一系列能够将软件从“完成代码”状态转变为“在生产环境中受支持”状态的活动,例如,构建、测试、调配、配置、部署和日常管理。可以想像这样快速地交付软件,需要开发人员 (Dev) 和 IT 运维团队 (Ops) 联手合作。

DevOps 运动是对这一需求的确认和回应。因此,DevOps 是动态的,可通过更好地进行协作、沟通和共同承担责任来避免大多数传统的交接障碍以及产品开发(开发人员和 QA)和 IT 运维之间的延迟,从而成功交付软件。


Devops Cartoon

历史背景

DevOps 与传统的企业软件交付理念对比鲜明。大多数企业通常由独立工作的独立软件开发团队和 IT 运维团队组成,开发人员和 IT 运维团队之间相互孤立,在快速交付软件方面的表现差强人意。例如,大多数企业开发人员通常不能轻松地自行调配已配置的基础架构,所以无法启动可重复的标准化环境。因此,他们最终要在专用环境中借助可实现高效开发和测试的独特配置来开发他们的代码部分。然后,他们将代码交给 IT 运维团队,由其处理各种软件工件,并将这些工件运用到具有必要企业特性的运行中应用部署中。
View More

这通常是一个复杂、手动、缓慢且容易出错的流程,需要 IT 运维团队在没有开发团队支持的情况下完成。部署软件过程中遇到的问题通常会造成团队间的摩擦和不信任。这种摩擦在现代持续交付背景下愈演愈烈,因为在这种背景下,一边要激励开发人员快速交付功能特性,一边要激励 IT 运维人员确保稳定性,这样一来,唯一切实可行的方法就是限制变化。


基本要素

对于应如何实际践行 DevOps,并没有具体的标准。然而,效用强大的成功 DevOps 实践往往会具有一些共同的特点,并且会影响企业中的文化、流程和工具。

文化

重视集体成功、协作和共同承担责任的文化渗透在成功 DevOps 实践的方方面面。开发人员和 IT 专业人员共同负责成功完成应用交付。通过企业变革,可以促进成功完成应用交付,例如,为了将共同构建和运行服务的开发人员和运维人员集中在一起,企业应该改变之前混杂的人员编排方式,为各个团队安排所需要的人。
View More

DevOps 还强调共鸣,鼓励开发人员和 IT 运维人员更好地了解对方的角色,这样他们就能够调整自己的工作,轻松适应对方并更高效地进行协作。例如,了解生产部署环境将使开发人员能够更好地了解潜在的运维故障并围绕这些故障进行设计。另外,IT 运维团队可以更好地了解应用设计和目标,这有助于他们优化部署配置。

成功的 DevOps 实践可有效消除由于对不同团队要求不一致而引发的摩擦。例如,一边激励开发人员快速发布功能特性,一边激励 IT 运维团队最大限度地减少生产部署的变更,这就会在企业内部造成摩擦。而这样的摩擦,会通过 DevOps 消除。

流程

在实践中体现 DevOps 文化需要建立联合流程,以便开发人员和 IT 运维团队有一个交流和分享专业知识的论坛,以及一个定义明确的协作框架,从而快速而井然有序地进行软件交付和故障恢复。这样的框架可能会做出一些指定,例如,指定开发人员负责通过 API 自行调配容量,而 IT 运维团队负责实施并提供支持。或者它可能会规定一种协议/合同:不在开发环境、测试环境或生产环境之间区分 API,从而消除环境平等问题,也就是延迟和问题的重要来源。

再例如,联合流程还可能是就集中式存储软件依赖项达成一致意见并加以利用,目前通过共同开发的脚本维护这种集中式存储。随着时间的推移,这种协作可以让相关人员学到知识、实现迭代式改进,并能够将增量和频繁的软件更改部署到生产环境中,部署操作可重复进行,且停机风险很小。

自动化和共享工具

快速可靠的软件交付要求在各流程保持一致性和可重复性,这些流程已经过简化,目的是消除不必要的人工干预。例如,企业经常会因容量调配、开发和生产环境差异以及复杂的手动编译/测试阶段而需要放慢速度。

效果出色的 DevOps 实践利用共享工具帮助明确和简化协作流程,以便对整个软件交付流程有共同的了解。因此,它们能够促进一致性和自动化,帮助 DevOps 从业者提高交付速度,并避免在部署或生产故障恢复期间为临时的救急处理花费时间。许多企业供应商现在都提供用于持续集成或基础架构自动化和配置的工具。然而,集成这些分散的局部解决方案的操作十分复杂,会增加大量的开销,但对企业底线的影响很小。




“DevOps 已稳占当下的主流地位...DevOps 不再是一个可有可无的选择或一种独特行为,现在已成为在市场中有效进行竞争的关键。”

Ovum Research; Changes Within and Driven by DevOps; June 2016




Next Section
Why DevOps?