什么是 DevOps?

DevOps 将开发 (Dev) 和运营 (Ops) 相结合,从而在应用程序规划、开发、交付和运营中统一人员、流程和技术。 DevOps 支持以前孤立角色(如开发、IT 运营、质量工程和安全)之间的协调和协作。

团队采用 DevOps 文化、实践和工具来增强对所构建应用程序的置信度、更好地响应客户需求并更快地实现业务目标。 DevOps 通过生成更优质、更可靠的产品,帮助团队不断为客户提供价值。

DevOps 和应用程序生命周期

DevOps 通过其规划部署交付运营阶段来影响应用程序生命周期。 每个阶段都依赖其他阶段,且各阶段并非特定于角色。 DevOps 文化在某种程度上涉及每个阶段中的所有角色。

下图说明了 DevOps 应用程序生命周期的各个阶段:

Conceptual diagram that illustrates the DevOps application lifecycle.

DevOps 目标和优势

当团队采用 DevOps 文化、实践和工具时,他们可以实现惊人的成就:

加速上市时间

通过提高效率、改进团队协作、自动化工具和持续部署,团队能快速减少从产品启动到市场推出的时间。

适应市场和竞争

DevOps 文化要求团队具备客户优先的焦点。 通过实现敏捷性、团队协作并专注于客户体验,团队可持续为客户提供价值,并提高其在市场中的竞争力。

保持系统稳定性和可靠性

通过采用持续改进做法,团队能增强所部署产品和服务的稳定性和可靠性。 这些做法有助于减少故障和风险。

缩短平均恢复时间

平均恢复时间指标表示从故障或漏洞中恢复所用的时间。 若要管理软件故障、安全漏洞和持续改进计划,团队应度量并努力改进此指标。

采用 DevOps 文化

若要完全实现 DevOps,必须采用 DevOps 文化。 培养 DevOps 文化需要深入改变人们的工作和协作方式。 当组织践行 DevOps 文化时,可创造一个有利于高绩效团队不断成长的环境。 虽然采用 DevOps 做法可通过技术来自动执行和优化流程,但若无法在组织和人员中实现 DevOps 文化转型,就无法享受到 DevOps 的全部优势。

下图捕获了 Microsoft 实时现场文化的关键方面。

Diagram of Microsoft's live site culture.

以下做法是 DevOps 文化的关键组成部分:

  • 协作、可见性和一致性:健康 DevOps 文化的标志体现在团队之间的协作。 协作从可见性开始。 开发、IT 和其他团队应相互共享其 DevOps 流程、优先事项和关注点。 通过共同规划工作,他们能更好地在与业务相关的目标和成功措施上保持一致。
  • 范围和问责方面的转变:当各个团队保持一致时,他们会掌握所有权并参与其他生命周期阶段,而不仅仅是与他们的角色对应的阶段。 例如,开发人员不仅要对开发阶段的创新和质量负责,还要对他们的改变在运营阶段带来的性能和稳定性负责。 同时,IT 操作员一定要在规划和开发阶段中包括治理、安全性和符合性。
  • 更短的发布周期:DevOps 团队通过短周期发布软件来保持敏捷。 因为进度是渐进式的,缩短发布周期可以让计划和风险管理更容易,同时也减少了对系统稳定性的影响。 缩短发布周期还可以让组织适应和应对不断变化的客户需求和竞争压力。
  • 持续学习:高绩效的 DevOps 团队会形成一种成长思维。 他们会快速失败并将学习融入其流程中。 他们会努力不断提高、提升客户满意度,同时加快创新和市场适应能力。

实现 DevOps 做法

在整个应用程序生命周期中,通过遵循 DevOps 做法(以下各节中所述)来实现 DevOps。 其中一些做法有助于加速、自动化和改进特定阶段。 其他的跨越几个阶段,帮助团队创建可帮助提高生产效率的无缝进程。

持续集成和持续交付 (CI/CD)

持续集成 (CI) 是开发团队用于自动执行、合并和测试代码的做法。 CI 有助于在开发周期的早期发现 bug,从而降低 bug 修复成本。 自动测试作为 CI 过程的一部分执行以确保质量。 CI 系统生成工件并将其馈送给发布过程,以驱动频繁部署。

持续交付 (CD) 是生成、测试代码并将其部署到一个或多个测试和生产环境的过程。 在多个环境中进行部署和测试可提高质量。 CD 系统生成可部署的工件,包括基础结构和应用。 自动发布过程使用这些工件将新版本和修补程序发布到现有系统。 监视和发送警报的系统持续运行,以提高整个 CD 过程的可见性。

版本控制

版本控制是管理各版本中代码的做法,用于跟踪修订和更改历史记录,使代码易于评审和恢复。 通常使用版本控制系统(比如 Git)来实现此做法,而这些系统允许多个开发人员协作编写代码。 有关合并在相同文件中发生的代码更改、处理冲突以及将更改回滚到早期状态,这些系统具有一个清楚的流程。

使用版本控制是一个基本的 DevOps 做法,可帮助开发团队协同工作,在团队成员之间划分编码任务,并存储所有代码,以便在需要时轻松恢复。 版本控制也是其他做法(如持续集成和基础结构即代码)中的必要元素。

敏捷软件开发

敏捷是一种软件开发方法,它强调团队协作、客户和用户反馈,以及凭借短发布周期实现对变化的高度适应性。 采用 Agile 的团队向客户提供持续的更改和改进,收集他们的反馈,然后吸取经验并根据客户的需求和需要进行调整。 Agile 与其他更传统的框架(如瀑布框架)有本质的不同,瀑布框架包括由顺序阶段定义的较长的发布周期。 看板和 Scrum 是两种与 Agile 相关的热门框架。

基础结构即代码

基础结构即代码以一种描述性的方式定义系统资源和拓扑,团队可以像编码一样管理这些资源。 这些定义也可以存储并在版本控制系统中进行版本控制以及像代码一样进行评审和还原。

使用基础设施即代码有助于团队以可靠、可重复和可控的方式部署系统资源。 基础设施即代码也有助于自动化部署并降低人为错误的风险,特别是对于复杂的大型环境。 这种可重复、可靠的环境部署解决方案允许团队维护与生产环境相同的开发和测试环境。 将环境复制到不同的数据中心和云平台同样变得更加简单和高效。

配置管理

配置管理是指管理系统中资源的状态,包括服务器、虚拟机和数据库。 使用配置管理工具,团队能够以一种可控和系统的方式进行更改,因此降低了修改系统配置的风险。 团队使用配置管理工具来跟踪系统状态并帮助避免配置漂移,即避免系统资源的配置随时间偏离为其定义的目标状态。

通过与基础设施即代码结合使用,很容易对系统定义和配置进行模板化和自动化,从而帮助团队大规模地操作复杂的环境。

持续监视

持续监控意味着全面、实时地了解整个应用程序堆栈的性能和运行状况。 此可见性的范围涵盖从运行应用程序的基础基础结构到更高级别的软件组件。 可见性是通过收集遥测和元数据以及对需引起操作员注意的预定义条件的对应警报进行设置来实现的。 遥测包括从系统各个部分收集的事件数据和日志,这些数据和日志存储在可以分析和查询的地方。

高绩效的 DevOps 团队会确保他们设置了可操作且有意义的警报,并收集了丰富的遥测数据,以便能够从大量数据中获得见解。 这些见解有助于团队实时解决问题,并了解如何在未来的开发周期中改进应用程序。

规划

在规划阶段,DevOps 团队会构思、定义和描述他们计划构建的应用程序和系统的特性和功能。 团队会以低粒度和高粒度级别跟踪任务进度(从单一产品到多个产品组合)。 团队使用以下 DevOps 做法来规划敏捷性和可见性:

有关 Microsoft 在公司软件团队中为支持 DevOps 规划而采用的若干教训和做法的概述,请参阅 Microsoft 如何使用 DevOps 进行规划

开发

开发阶段包括开发软件代码的所有方面。 在此阶段,DevOps 团队会执行以下任务:

  • 选择开发环境
  • 编写、测试、审查和集成代码。
  • 将代码构建到项目中,从而部署到各种环境。
  • 使用版本控制(通常为 Git)协作处理代码以及并行工作。

若要在不牺牲质量、稳定性和生产效率的情况下快速创新,DevOps 团队需:

有关 Microsoft 为支持其转向 DevOps 所用开发做法的概述,请参阅 Microsoft 如何使用 DevOps 进行开发

交付

交付是指:理想情况下,通过持续交付 (CD) 将应用程序一致且稳定地部署到生产环境的流程。

在交付阶段,DevOps 团队需:

  • 定义具有明确手动审批阶段的发布管理流程。
  • 设置自动入口,以便在各阶段之间移动应用程序,直到最终发布给客户。
  • 自动执行交付流程,使其可缩放、可重复、受控且经过良好测试

交付还包括部署和配置交付环境的基本基础结构。 DevOps 团队使用基础结构即代码 (IaC)容器微服务技术来提供完全受控的基础结构环境。

在影响客户体验之前,安全部署做法可识别问题。 这些做法可帮助 DevOps 团队轻松、自信、放心地频繁交付。

有关 Microsoft 为提供高效的交付系统而不断发展的核心 DevOps 原则及流程的信息,请参阅 Microsoft 如何使用 DevOps 交付软件

操作

运营阶段涉及在生产环境(包括混合云或公有云,例如 Azure)中维护、监视和排查应用程序。 DevOps 团队旨在实现系统可靠性、高可用性、出色的安全性零停机时间

自动化交付和安全部署做法可帮助团队在出现问题时快速识别和缓解问题。 保持警惕性需要丰富的遥测、可操作的警报以及全面了解应用程序和底层系统。

有关 Microsoft 用于运营复杂联机平台的做法,请参阅 Microsoft 如何使用 DevOps 运营可靠的系统

后续步骤

其他资源

培训和认证