什么是DevOps

什么是DevOps

2018/5/25编程

前言:aws 这份定义清晰明了,值得回顾。安全

DevOps 模式定义

DevOps 集文化理念、实践和工具于一身,能够提升组织高速交付应用程序和服务的能力,与使用传统软件开发和基础设施管理流程相比,可以帮助组织更快地发展和改进产品。这种速度使组织可以更好地服务其客户,并在市场上更高效地参与竞争。服务器

DevOps 的工做原理

在 DevOps 模式下,开发团队和运营团队都再也不是“孤立”的团队。有时,这两个团队会合为一个团队,他们的工程师会在应用程序的整个生命周期(从开发测试到部署再到运营)内相互协做,开发出一系列不限于单一职能的技能。架构

在一些 DevOps 模式下,质保和安全团队也会与开发和运营团队更紧密地结合在一块儿,贯穿应用程序的整个生命周期。当安全是全部 DevOps 团队成员的工做重心时,这有时被称为“DevSecOps”。
这些团队会使用实践经验自动执行以前手动操做的缓慢流程。他们使用可以帮助其快速可靠地操做和发展应用程序的技术体系和工具。这些工具还能够帮助工程师独立完成一般须要其余团队协做才能完成的任务(例如部署代码或预置基础设施),从而进一步提升团队的工做速度。框架

DevOps 的优点

速度

高速运转,让您能够更快速地针对客户进行创新、更好地适应不断变化的市场,同时更有效地推进业务成果。DevOps 模式可以帮助您的开发人员和运营团队实现这些目标。例如,微服务和持续交付可以让团队充分掌控服务,而后更快速地发布更新。编程语言

快速交付

提升发布的频率和速度,以便您可以更快速地进行创新并完善产品。您发布新功能和修复错误的速度越快,就越能快速地响应客户需求并创建竞争优点。持续集成和持续交付是自动执行软件发布流程(从构建到部署)的两项实践经验。分布式

可靠性

确保应用程序更新和基础设施变动的品质,以便您可以在保持最终用户优质体验的同时,更加快速可靠地进行交付。使用持续集成和持续交付等实践经验来测试每次变动是否安全以及可以正常运行。进行监控和记录实践经验可以帮助您实时了解当前的性能。ide

规模

大规模运行和管理您的基础设施及开发流程。自动化和一致性可在下降风险的同时,帮助您有效管理复杂或不断变化的系统。例如,基础设施即代码可以帮助您以一种可重复且更有效的方式来管理部署、测试和生产环境。微服务

加强合做

创建一个适应 DevOps 文化模式的更高效的团队,强调主人翁精神和责任感。开发人员和运营团队密切合做,共同承担诸多责任,并将各自的工做流程相互融合。这有助于减小效率低下的工做,同时节约你们的时间(例如,缩短开发人员和运营团队之间的交接时间,编写将运行环境考虑在内的代码)。工具

安全性

在快速运转的同时保持控制力和合规性。利用自动实施的合规性策略、精细控制和配置管理技术,您能够在不牺牲安全性的前提下采用 DevOps 模式。例如,利用基础设施即代码和策略即代码,您能够大规模定义并追踪合规性。

DevOps 为何很重要

软件和 Internet 改变了咱们身处的世界,同时也改变了购物、娱乐、银行等行业的运营方式。软件再也不仅仅是为业务提供支持,而是成为业务的方方面面都不可或缺的组成部分。当前,公司经过采用在线服务或应用程序交付的软件,在各类设备上与客户进行互动。他们还使用软件改变了价值链的各个部分(例如物流、通讯和运营),从而提升运营效率。在整个 20 世纪,生产实体产品的公司经过工业自动化改变了其设计、构建和交付产品的方式,而在当今的环境中,公司必须以一样的方式来改变其构建和交付软件的方式。

如何采用 DevOps 模式

DevOps 的文化理念

向 DevOps 的过渡须要文化理念和心态上的转变。简单来讲,DevOps 的宗旨就是消除两个传统上孤立的团队(开发团队和运营团队)之间的壁垒。有些组织甚至没有独立的开发团队和运营团队,工程师可能身兼两职。利用 DevOps,这两个团队能够携手合做,共同提升开发人员的生产力,同时加强运营的可靠性。他们力求频繁沟通、提升效率,并改善客户服务的质量。他们可以彻底掌控本身的服务,而且常常越过本身的既定角色或职能的传统工做范畴,思考最终用户的需求以及解决这些需求。质保和安全团队也能够与这两个团队紧密协做。凡是采用 DevOps 模式的组织,不管组织结构如何,参与团队都会将整个开发和基础设施生命周期视为己任。

DevOps 实践说明

有一些重要的实践经验可以经过自动实施和简化软件开发与基础设施管理流程,帮助组织加快创新速度。这些实践经验有大部分须要经过适当的工具来完成。

其中一个基本实践经验就是要频繁地进行小规模更新。这是组织能为客户快速提供创新的有效方式。与传统发布实践中偶尔的更新相比,这种更新一般更具渐进性质。频繁的小规模更新可以下降每次部署的风险。它们能够帮助团队更快速地处理错误,由于团队可以肯定引起错误的最近一次部署。虽然更新的节奏和规模可能有所不一样,但使用 DevOps 模式的组织与使用传统软件部署实践的组织相比,会更频繁更新。

此外,组织还可使用微服务架构来提高应用程序的灵活性,从而加快创新步伐。微服务架构将大型的复杂系统拆分为简单的独立项目。应用程序被拆分为许多单个组件(服务),每一个服务限定到单个目的或功能,这些服务既能够与其同级服务相互独立运行,也能够与应用程序一块儿做为总体运行。这种架构下降了更新应用程序的协调开销,当每一个服务都与掌控各项服务的敏捷小型团队一一对应时,组织就能够实现更快的发展。

可是,微服务与较高的发布频率相结合会致使部署量大幅度增长,可能会带来运营挑战。所以,持续集成和持续交付等 DevOps 实践经验有助于解决这些问题,让组织可以以安全可靠的方式快速交付。与基础设施即代码和配置管理同样,基础设施自动化实践经验也有助于维持计算资源的弹性和对频繁变动的适应性。此外,进行监控和记录这一实践经验可帮助工程师追踪应用程序和基础设施的性能,以便他们快速应对出现的问题。

综合采用上述实践经验,能够帮助组织向客户更快交付更可靠的更新。对重要 DevOps 实践经验的简要介绍以下。

DevOps 实践经验

如下列举了一些 DevOps 最佳实践:

  • 持续集成
  • 持续交付
  • 微服务
  • 基础设施即代码
  • 监控和日志记录
  • 沟通与合做

您能够从下文中了解每种实践的详细信息。

持续集成
持续集成是一种软件开发实践经验,采用持续集成时,开发人员会按期将他们的代码变动合并到一个中央存储库中,以后系统会自动运行构建和测试操做。持续集成的主要目标是更快发现并解决错误,提升软件质量,并缩短验证和发布新软件更新所需的时间。

持续交付
持续交付是一种软件开发实践经验,采用持续交付时,系统会对代码变动自动进行构建和测试,并为发布到生产环境作好准备。持续交付能够在构建阶段后将全部代码变动都部署到测试环境和/或生产环境中,从而实现对持续集成的扩展。当持续交付得以正确实施时,开发人员将始终可以得到一个已经过标准化测试流程的部署就绪型构建工件。

微服务
微服务架构是一种将单个应用程序构建为一系列小服务的设计方法。其中每一个服务均按各自的流程运行,并利用一种轻型机制(一般为基于 HTTP 的应用程序编程接口 (API))经过一个明肯定义的接口与其余服务进行通讯。微服务围绕着业务能力进行构建,每项服务均限定到单个目的。您可使用不一样的框架或编程语言来编写微服务,并将其做为单个服务或一组服务进行独立部署。

基础设施即代码
基础设施即代码是一种实践经验,其中基础设施经过代码和软件部署技术(例如版本控制和持续集成)得以预置和管理。借助云的 API 驱动型模式,开发人员和系统管理员可以以编程方式与基础设施进行大规模互动,而无需手动设置和配置资源。所以,工程师可使用基于代码的工具来链接基础设施,而且可以以处理应用程序代码的方式来处理基础设施。基础设施和服务器由代码进行定义,所以可使用标准化模式进行快速部署、使用最新补丁和版本进行更新,或者以可重复的方式进行复制。

配置管理
开发人员和系统管理员使用代码将操做系统和主机配置、操做性任务等自动化。代码的使用实现了配置变动的可重复性和标准化。它将开发人员和系统管理员从手动配置操做系统、系统应用程序或服务器软件的任务中解放出来。

策略即代码
因为基础设施及其配置全都经过云进行代码编写,因此组织能够动态地大规模监控与实现合规性。所以,组织能够自动跟踪、验证和从新配置由代码描述的基础设施。这样一来,组织可以更加轻松地掌控资源变动,并确保安全措施以分布式方式获得妥善执行(例如,采用 PCI-DSS 或 HIPAA 确保信息安全性或合规性)。这使组织内部的团队可以更快速地运做,由于不合规的资源可能被自动标记为须要进一步调查,甚至被自动纠正为合规资源。

监控和日志记录
组织对各项指标和日志进行监控,以了解应用程序和基础设施性能如何影响其产品的最终用户体验。经过对应用程序和基础设施生成的数据进行采集、分类和分析,组织能够了解变动或更新如何影响用户,同时深刻了解出现问题或意外变故的根本缘由。因为服务必须全天候持续可用,并且应用程序和基础设施的更新频率不断提升,所以主动监控变得日益重要。此外,建立警报或对这些数据执行实时分析也能帮助组织更主动地监控其服务。

沟通与合做
加强组织内部的沟通与合做是 DevOps 文化的一个重要方面。DevOps 工具的使用和软件交付流程的自动化可以以物理方式将开发和运行的工做流程及职责结合起来,从而创建团队之间的相互协做。在此基础上,这些团队树立了强大的文化规范,提倡信息共享和经过聊天应用程序、问题或项目追踪系统以及 Wikis 来促进沟通。这有助于加快开发人员、运营团队甚至其余团队(如营销团队或销售团队)之间的沟通,从而使组织的各个部门围绕共同的目标和项目更紧密地结合在一块儿。

ZYXW、参考

  1. 什么是 DevOps?
相关文章
相关标签/搜索