什么是 DevOps?

了解 DevOps 如何统一人员、流程和技术,更快地向客户提供更上乘的产品

DevOps 定义

DevOps 是开发 (Dev) 和运营 (Ops) 的复合词,它将人、流程和技术结合起来,不断地为客户提供价值。

DevOps 对团队意味着什么?DevOps 使以前孤立的角色(开发、IT 运营、质量工程和安全)可以协调和协作,以生产更好、更可靠的产品。通过采用 DevOps 文化、做法和工具,团队能够更好地响应客户需求,增强对所构建应用程序的信心,更快地实现业务目标。

DevOps 的好处

采用 DevOps 的文化、做法和工具的团队将获得高绩效,可以用更快的速度构建更好的产品以获得更高的客户满意度。若要实现以下业务目标,这种改进的协作方式和生产能力不可或缺:

缩短上市时间

适应市场和竞争

保持系统稳定性和可靠性

缩短平均恢复时间

DevOps 和应用程序生命周期

DevOps 影响应用程序生命周期的规划、开发、交付和运营阶段。每个阶段都依赖于其他阶段,并且这些阶段并非特定于角色。在真正的 DevOps 文化中,每个角色在某种程度上都涉及到每个阶段。

套餐

在规划阶段,DevOps 团队构思、定义和描述他们即将构建的应用程序和系统的特性和功能。他们在低粒度和高粒度级别上跟踪从单个产品任务到跨多个产品组合的任务进展。DevOps 团队以敏捷和直观地方式进行规划的一些方法包括创建积压工作 (backlog)、跟踪 bug、使用 scrum 管理敏捷软件开发、使用看板以及使用仪表板直观呈现进度。

开发

开发阶段包括编码的各个方面(编写、测试、评审)、团队成员集成代码,以及将代码构建为可部署到各种环境中的生成工件。DevOps 团队寻求在不牺牲质量、稳定性和生产效率的情况下快速创新。为此,他们使用高效的工具、自动化单调和手动步骤,并通过自动化测试和持续集成以小增量迭代。

传送

交付是以一致且可靠的方式将应用程序部署到生产环境中的过程。交付阶段还包括部署和配置构成这些环境的基础结构,该基础机构受到完全治理。

在交付阶段,团队定义了具有明确手动批准阶段的发布管理流程。他们还设置了自动入口,用于推动应用程序经历各个阶段,直到提供给客户。这些流程的自动化使这些流程可伸缩、可重复并且可控制。这样,使用 DevOps 的团队就可以轻松、自信、放心地频繁交付。

运营

运营阶段包括维护、监视和对生产环境中的应用程序进行故障排除。在采用 DevOps 做法时,团队致力于确保系统的可靠性、高可用性,并在加强安全性和治理的同时实现零停机的目标。DevOps 团队希望在问题影响客户体验之前发现问题,并在问题发生时迅速解决问题。保持这种警惕性需要丰富的遥测、可操作的警报以及全面了解程序和基础系统。

DevOps 文化

虽然采用 DevOps 做法可以通过技术自动化和优化流程,但这一切都是从组织内部的文化和参与的人员开始的。培养 DevOps 文化的挑战在于需要深入改变人们的工作和协作方式。但是,当组织致力于 DevOps 文化时,可以创造一个让高绩效团队培养文化的环境。

协作、可见性和一致性

健康的 DevOps 文化的一个标志是团队间能够协作,首要的便是可见性。开发和 IT 运营等不同团队必须能够相互分享 DevOps 流程、优先级和关注点。这些团队还必须能够共同规划工作,并统一与业务相关的成功目标和衡量标准。

范围和责任的转变

当团队统一时,他们拥有所有权并参与其他生命周期阶段,而不仅仅是他们的角色对应的阶段。例如,开发人员不仅要对开发阶段的创新和质量负责,还要对他们的改变在运营阶段带来的性能和稳定性负责。同时,IT 操作员一定要在规划和开发阶段中包括治理、安全性和符合性。

缩短发布周期

DevOps 团队通过短周期发布软件保持敏捷。因为进度是渐进式的,缩短发布周期可以让计划和风险管理更容易,同时也减少了对系统稳定性的影响。缩短发布周期还可以让组织适应和应对不断变化的客户需求和竞争压力。

持续学习

高绩效的 DevOps 团队形成了一种成长思维。他们快速失败,然后将经验教训融入到他们的流程中,不断改进,提高客户满意度,加速创新和适应市场。DevOps 是一个旅程,所以总有成长的空间。

了解 Microsoft 团队如何采用 DevOps 文化

了解更多

DevOps 做法

除了形成 DevOps 文化之外,团队还通过在整个应用程序生命周期中实施特定做法,以充分利用 DevOps。其中一些做法有助于加速、自动化和改进特定阶段。其他的跨越几个阶段,帮助团队创建可帮助提高生产效率的无缝进程。

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

持续集成是一种软件开发做法,在这种做法中,开发人员经常将代码更改合并到主代码分支中。持续集成采用自动测试,每次提交新代码时都会运行该测试,因此主分支中的代码总是稳定的。

持续交付是将新的应用程序版本频繁自动化地部署到生产环境中。通过自动化部署所需的步骤,团队可以减少部署时可能出现的问题,并实现更频繁的更新。

当同时采用这两种做法时,该过程称为 CI/CD,包括完全自动化代码提交到生产部署之间的所有步骤。使用 CI/CD 可以让团队能够专注于构建代码,并消除手动和单调的步骤中的开销和潜在的人为错误。CI/CD 还可以加快部署新代码过程的速度并降低风险。这样就能够以更频繁的频率和更小的增量进行部署,帮助团队变得更敏捷、更高效,并对其运行的代码更有信心。

版本控制

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

使用版本控制是一个基本的 DevOps 做法,可帮助开发团队协同工作,在团队成员之间划分编码任务,并存储所有代码,以便在需要时轻松恢复。

版本控制也是其他做法(如持续集成和基础结构即代码)中的必要元素。

详细了解 Git

敏捷软件开发

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

看板和 Scrum 是两种与 Agile 相关的热门框架。

基础结构即代码

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

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

配置管理

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

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

持续监视

持续监视意味着能够全面、实时地了解整个应用程序堆栈(从运行应用程序的基础结构到更高级别的软件组件)的性能和运行状况。可查看的内容包括遥测和元数据集合,以及需要引起操作员注意的预定义条件警报的设置。遥测包括从系统各个部分收集的事件数据和日志,这些数据和日志存储在可以分析和查询的地方。

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

DevOps 工具

团队有许多 DevOps 工具来帮助他们促进组织中的 DevOps 文化。大多数团队依赖于多种工具,构建自定义工具链,以满足应用程序生命周期中每个阶段的需求。虽然采用某个特定工具或技术与采用 DevOps 不同,但当 DevOps 文化存在并定义了流程时,如果人们选择了适当的工具,就可以实现和简化 DevOps 做法。获取工具使用 DevOps:

DevOps 和云

云的采用从根本上改变了团队生成、部署和操作应用程序的方式。再加上采用 DevOps,团队现在有更多的机会改进他们的做法,更好地为客户服务。

云敏捷性

由于能够使用无限资源快速预配和配置多区域云环境,因此团队可以敏捷地部署应用。现在,团队不必购买、配置和维护物理服务器,而是在几分钟内创建复杂的云环境,当不再需要时关闭它们。

Kubernetes

随着越来越多的应用程序使用容器技术,Kubernetes 正在成为大规模编排容器的行业解决方案。在 Kubernetes 时代,将通过 CI/CD 管道构建和部署容器并且在生产环境中监视这些容器的过程自动化正在成为基本做法。

无服务器计算

随着管理基础结构的大部分开销转移到云提供商,团队可以专注于应用,而不是基础结构。利用无服务器计算可以在不配置和维护服务器的情况下运行应用程序。一些选项降低了部署和操作的复杂度和风险。

开始 DevOps 之旅

随着各种各样的做法和解决方案的出现,DevOps 起初看起来似乎势不可挡。关键是从小处着手,并向他人学习。

常见问题

  • 组织中的不同角色都会使用 DevOps,并且其中几个角色还需要密切协作。在大多数情况下,DevOps 角色包括开发、IT、运营、安全和支持。
  • DevOps 不限于单个角色。参与应用程序生命周期各阶段的每个人都必须接受 DevOps 文化。然而,在一些组织中,一些人员或团队仅关注实现自动化、定义做法和实施 CI/CD 管道。有时,这些角色的官方头衔是 DevOps 工程师或 DevOps 专家。
  • 在大型组织中采用 DevOps 可能极具挑战。改变大型组织的文化以及标准化流程和工具需要耐心和毅力。在大多数大型组织中,都有 DevOps 做法的早期采用者。随着这些做法走向成熟并产生积极的结果,其他团队通常会跟着开始他们的 DevOps 之旅。

    了解 Microsoft 团队如何采用 DevOps 文化

  • DevOps 的真正意义是为客户提供持续的价值。衡量采用 DevOps 的结果时必须考虑业务目标。DevOps 团队围绕这些目标进行调整,并使用短发布周期实现这些目标。周期非常短,因此可以对市场做出敏捷的反应,并通过客户反馈不断吸取经验。
  • DevOps 和 Agile 都是用于生产产品、进行发布或发行的现代软件开发框架。DevOps 是一种文化,促进软件开发和维护中所有角色之间的协作。Agile 是一种开发方法,在需求不断变化的常见现实中保持工作效率和促进发布。DevOps 和 Agile 并不是相互排斥的,而是经常搭配使用。
  • 持续集成与持续交付和持续部署都是自动化软件交付阶段的做法。