什么是 DevOps?

 在台式电脑上工作的 IT 程序员。

作者

Gregg Lindemulder

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

什么是 DevOps?

DevOps 是一种将软件开发(Dev)与 IT 运维(Ops)融合的自动化协作文化与流程方法,通过 CI/CD 实现快速迭代与高质量发布。

DevOps 概述了软件开发流程和组织文化转变,以促进开发团队和 IT 运营团队之间的协调与协作。这两个团队传统上是分开作业,或者各自为战的。在 DevOps 方法中,他们作为一个团队使用一组共享工具和实践工作。

DevOps 的特点是持续集成持续交付 (CI/CD),它们支持更小、更快的软件更新。通过 CI/CD,一小部分新代码会频繁地合并到代码库中,然后自动集成、测试和准备部署到生产环境。

DevOps 由敏捷软件开发方法演变而来,作为瀑布式方法的替代方案。在瀑布式方法中,软件开发团队花费数月时间开发大量代码,然后在发布前进行数月的测试。相比之下,敏捷开发采用迭代方法来实现软件交付生命周期。

DevOps 为敏捷方法添加了新的流程和工具,特别是大部分 CI/CD 管道的自动化

归根结底,DevOps 旨在满足软件用户对频繁创新的新功能以及不间断的性能和可用性的需求。

IBM DevOps

什么是 DevOps?

Andrea Crawford 阐述了什么是开发运维、开发运维的价值,以及开发运维实践和工具如何帮助您完成从应用程序构思到生产的整个软件交付管道。本课程由 IBM 资深思想领袖主导,旨在帮助企业领导者获得所需的知识,以优先考虑能够推动增长的 AI 投资。

DevOps 的工作原理

DevOps 既包括一组称为“DevOps 生命周期”的自动化工作流,也包括支持这些工作流的文化转变。

DevOps 生命周期

DevOps 生命周期旨在优化高质量软件的快速交付。它包括一系列迭代、自动化的工作流,这些工作流在更大的自动化和迭代式开发生命周期中运行。

工作流的名称和顺序可能因组织而异,但 DevOps 生命周期通常包括八个核心步骤。

Devops 8 步骤周期插图

规划

首先,团队确定下一个版本的新特性和功能。在此工作流中,他们借鉴用户反馈、成功案例和内部利益相关者的输入,例如平台和基础设施工程师以及安全、合规、治理、风险管理和业务线团队。

规划阶段的目标是创建待办事项文档。待办事项是指随着时间推移添加到产品中的新功能、改进和错误修复的优先列表。

编码

DevOps 团队对待办事项中确定的新功能和增强功能进行编码。DevOps 中的常见编码实践包括:

  • 测试驱动开发 (TDD):开发人员首先创建代码必须通过的测试,然后才能编写代码本身。

  • 结对编程:两名程序员在同一个工作站进行协作,其中一名程序员编写代码,另一名程序员评估代码。

  • 同行代码评审:开发团队成员互相评审对方的代码,查找缺陷、错误或需要改进的地方。

在将代码发送到持续交付管道的下一个阶段之前,开发人员通常使用本地工作站编写和测试代码。

构建

新代码将集成到现有代码库中,然后进行测试和打包,以便发布和部署。此阶段通常自动执行的活动包括:将代码更改合并到主副本中;将更新后的代码放入存储库;以及将代码编译、测试和打包到可执行文件中。

在 DevOps 中,构建阶段的输出通常存储在二进制存储库中。与源代码存储库不同,二进制存储库存储打包的输出(例如库和可执行文件),以便在开发生命周期的其他阶段重复使用。

测试

DevOps 团队使用测试(通常是自动化测试)来确保更新的应用程序符合适当的标准和要求。

经典的 DevOps 方法包含在构建和发布之间发生的独立测试阶段。然而,DevOps 的进步使得某些测试元素可以在整个流程中进行。单元测试,即对小部分代码进行隔离测试,这可能会在编码阶段运行。集成新代码后,Linting 程序可能会分析其中的错误。

持续测试有助于实施左移测试原则,这是一种软件开发方法,强调将测试活动提前到开发流程的早期。这种方法可以帮助组织更快地发现问题,并更有效地进行修复。

发布

发布阶段是用户访问应用程序之前的最后一个工作流。此阶段包括一系列最终测试,以确保软件符合质量、合规和安全标准并可供外部使用。

如果发现错误或缺陷,团队有机会在任何用户看到任何问题之前拦截和修复问题。当所有问题都得到解决并且应用程序满足所有要求后,就可以将其发布到生产环境中。在大多数 DevOps 管道中,此过程在很大程度上是自动进行的。

发布阶段可能还涉及服务器、数据库负载均衡器等基础设施组件的配置。DevOps 通常使用基础设施即代码来自动化这个过程。

部署

在此阶段,项目移动到生产环境,用户可以在其中访问更新的应用程序。

许多组织首先将应用程序部署到一小部分最终用户,以确保应用程序正常工作。稳定后,就可以向所有人部署应用程序。

运行

在此阶段,DevOps 团队检查新功能是否运行顺畅,以及是否可供用户使用且不会中断服务。他们使用自动化可观测性和管理工具来持续监控和优化运营,以确保网络、存储、平台、计算和安全状况均处于正常。

监控

在此阶段,团队收集分析用户反馈及历史工作流经验,用以优化未来流程与产品。对功能特性、运行性能及业务价值的持续监控,为下一版本新功能与增强组件的规划提供依据。

高速公路鸟瞰图

在云端保持清醒头脑 


获取每周 Think 时事通讯,了解有关在 AI 时代优化多云设置的专家指导。

DevOps 文化

DevOps 文化的特点是致力于协作、沟通和自动化。

在项目管理层面,DevOps 需要所有软件交付利益相关者之间持续沟通并分担责任,以便快速创新并从一开始就注重质量。利益相关者当然包括软件开发和 IT 运营团队,但也包括合规、治理、风险、业务线和安全团队。

在技术层面,DevOps 要求致力于自动化工具,以保持项目在工作流内和工作流间的运动。例如,基础设施组件的自动化测试、部署和配置可以帮助加快项目交付并减少错误。

DevOps 也需要反馈和衡量,这使得团队能够不断优化周期并提高软件质量和性能。

为了采用 DevOps 文化,组织必须经常打破孤岛并将人员重组为自主的跨职能 DevOps 团队。这些团队从头到尾(从计划到反馈)致力于项目,无需交接工作或等待其他团队的批准。在敏捷软件开发的背景下,这种责任和协作是共同关注价值和卓越成果的基石。

什么是 DevSecOps?

DevSecOps 是开发、安全和运营 (Development, Security and Operations) 的缩写。它是 DevOps 的扩展,包括软件开发每个阶段的网络安全实践和安全团队。

过去,在开发周期结束时,“追加”安全性,这几乎算是种事后补救措施。一个单独的安全团队应用这些安全措施,然后一个单独的质量保证 (QA) 小组测试这些措施。

DevSecOps 从软件开发生命周期一开始就将应用程序和基础设施安全性集成到 DevOps 实践和工具中。它在安全问题出现时,以及在部署到生产之前,以更容易、更快、更低成本的方式解决这些问题。

由于这种能力可以加快软件交付、降低成本和改善安全状况,许多组织现在正在采用 DevSecOps 作为标准的 DevOps 方法。

DevOps 开发运维的优势

更好的协作

通过将开发人员的工作和运营更紧密地结合在一起,DevOps 可以提高效率并减少工作量。由于开发人员和运营团队共同分享工作流和承担责任,因此随着项目的进展,意外会越来越少。团队更清楚地了解其代码在运行时环境中的预期执行方式。

加速交付

通过加强协作和使用微服务架构,DevOps 团队可以更快地交付新代码,在微服务架构中,每个应用程序都由许多松散耦合且可独立部署的组件或服务组成。

通过微服务,不同的团队可以同时处理新版本的不同组件,以加快开发周期。这种方法可推动持续改进、创新和错误修复,从而加速推向市场。

DevOps 还通过持续交付和持续集成的实践加速和自动化构建、测试和部署软件版本的过程。组织能够更快地适应市场变化,从而更好地满足客户需求。

更高的可靠性

自动化测试有助于确保软件和基础架构更新的质量和可靠性。监控和记录可实时验证应用程序性能。

更快的扩展

DevOps 自动化加快了代码的开发、测试和生产,使得组织可以更快、更高效地扩展。

例如,如果组织需要快速添加更多应用程序来满足业务需求,通过 DevOps,组织无需通过冗长、缓慢且容易出错的编码过程来实施这些更改。

增强安全性

使用 DevSecOps,安全性从一开始就集成到开发流程中,而不是在最后进行改造。团队将安全测试和审计纳入工作流,以帮助执行安全标准并跟踪监管要求的遵守情况。

DevOps 工具

为了支持 DevOps 方法和文化,DevOps 实施需要专门的工具链,以实现异步协作、DevOps 工作流的无缝集成以及在整个 DevOps 生命周期中尽可能多地实现自动化。

DevOps 工具的类别包括:

版本控制系统

版本控制编码环境使多个开发人员能够管理代码变更、跟踪变更并在同一代码库上协同工作。这些代码存储库通常通过应用程序编程接口 (API) 与 CI/CD、测试和安全工具集成,因此,当代码提交到存储库时,它可以自动进入下一步。流行的版本控制系统包括 Git(常用于 GitHub)、Apache Subversion 和 Mercurial。

CI/CD 管道

CI/CD 管道有助于自动执行核心软件开发任务,例如集成代码、测试代码质量、编译和打包代码以及部署软件。此类别中的热门工具包括 Jenkins、CircleCI 和 TeamCity。

容器化平台和工具

容器化将应用程序封装在名为“容器”的简化便携包中,可以在任何平台上运行。此功能使容器化对于 DevOps 的快速发布和管理周期非常有用。组织经常使用开源工具(例如 DockerKubernetes)来帮助构建、编排和自动部署容器化应用程序。

大多数领先的云供应商(包括 Amazon Web Services (AWS)、Google、Microsoft Azure 和 IBM Cloud®)都提供某种托管 DevOps 管道解决方案,其中包含容器化工具。

配置管理工具

配置管理工具帮助 DevOps 团队在各种 IT 环境中配置基础设施、软件和应用程序。这些工具可自动执行配置任务,例如设置和部署硬件或应用软件补丁,以确保一致性、减少错误并提高可靠性。流行的配置管理工具包括 Puppet、Chef 和 SaltStack。

基础设施即代码 (IaC) 工具

IaC 使用高级描述性编码语言来自动配置 IT 基础设施。开发人员无需指导系统如何配置基础设施,而是描述所需的最终状态,然后 IaC 软件会处理其余部分。

有了这种自动化,每次开发、测试或部署软件应用程序时,开发人员就不必花时间和精力手动编写 IT 基础设施变更脚本。

流行的 IaC 工具包括 Terraform、Pulumi 和 AWS CloudFormation。

监控和可观测性工具

监控和可观测性工具可帮助 DevOps 团队识别和解决系统问题,例如响应时间缓慢或资源消耗过多。它们还实时收集和分析数据,以揭示代码更改如何影响应用程序性能。

常用的可观测性和监控工具包括 Prometheus、Datadog、IBM Instana®、New Relic 和 Splunk。

持续反馈工具

这些工具可通过热图(记录用户在屏幕上的操作)、调查、轮询或自助服务问题工单来收集用户反馈。一些工具还监控社交媒体以收集用户反馈并衡量对应用程序更新的满意度。

DevOps 开发运维和站点可靠性工程 (SRE)

站点可靠性工程 (SRE) 和 DevOps 是软件工程中的互补战略,可以打破孤岛,提高软件交付的效率和可靠性。DevOps 团队专注于进行更新和部署新功能,而 SRE 实践则致力于在系统扩展时保护系统的可靠性。

SRE 将 DevOps 与传统 IT 运营相结合,以自动执行系统管理员原本可能手动执行的任务,例如生产系统管理、变革管理事件响应。SRE 致力于将传统的系统管理员转变为工程师。

SRE 旨在平衡组织对快速应用程序开发的需求和满足与客户的服务级别协议 (SLA) 中指定的性能和可用性级别的需求。

站点可靠性工程师通过确定应用程序引起的操作风险的可接受水平(称为错误预算),并通过实现操作自动化来满足该水平,最终获得这种平衡。

在跨职能 DevOps 团队中,SRE 可以充当开发和运营之间的桥梁。SRE 提供指标和自动化工具,以帮助团队尽快通过 DevOps 管道推送代码更改和新功能,且不会违反组织的 SLA 要求。

DevOps 与人工智能 (AI)

人工智能 (AI)机器学习 (ML) 正在迅速改变 DevOps 的世界。这些技术能够自动执行任务和分析复杂流程,有助于使 DevOps 更快、更可靠、更安全。IBM 商业价值研究院的数据显示,25% 的应用程序开发人员和 40% 的应用程序测试人员表示,AI 和自动化提高了他们的工作效率。

一些有影响的功能领域包括:

故障诊断

AI 可以分析大量数据,以预测和解决流程问题,例如应用程序故障或流程瓶颈。例如,AI 可以预测网络流量激增,并自动提供更多资源,帮助防止服务中断或系统中断。

安全性

AI 可以识别应用程序和基础设施中的安全漏洞,并扫描事件日志以实时检测潜在威胁。例如,AI 可以发现可能指示网络攻击(例如数据泄露或供应链攻击)有可能发生或已经发生的可疑活动。

监控

通过识别隐藏的错误、性能问题和软件异常,AI 可以帮助开发人员解决应用程序问题,防止问题升级。例如,AI 可以标记需要注意的问题,例如 CPU 使用率意外飙升或多个微服务故障。

测试

AI 可以审查和测试代码,以帮助确保代码比手动方法更快地做好部署准备。例如,AI 工具可以分析代码更改,以发现潜在错误或识别软件更新期间无意创建的安全漏洞。

DevOps 开发运维的未来

DevOps 流程和工具继续扩展和发展,以应对全新的 IT 和业务挑战。推动 DevOps 未来发展的一些技术和实践包括:

平台工程

平台工程是使用标准化工具、自动化工作流和一致的环境创建和管理平台以提高开发人员工作效率的学科。平台工程可以为团队提供自助服务功能,以执行资源预置、软件配置和应用程序容器化等任务,从而提高工作效率并加快 DevOps 流程。

可观察性

可观测性是指仅根据其外部输出(特别是遥测)的知识来理解复杂系统的内部状态或状况的能力。与传统 DevOps 监控实践(侧重于预定义指标)相比,可观测性工具能提供对系统行为的更深入洞察分析。

由于能够隔离根本原因并主动识别复杂系统中的问题,可观测性工具越来越成为 DevOps 工作流中的重要组件。

低代码、无代码

低代码和无代码工具使得具备有限编码知识的人员能够参与 DevOps 工作流。借助拖放界面,业务用户无需传统编码即可构建应用程序。这种方法简化了旨在满足特定业务需求的应用程序的创建和交付。

热门 DevOps 问答精选 (FAQ)

DevOps 的核心实践有哪些?
主要包括持续集成(CI)、持续交付/部署(CD)、基础设施即代码(IaC)与自动化监控。

DevOps 与 DevSecOps 有什么区别?
DevSecOps 将安全延伸到 DevOps 全流程中,加强开发、安全与运维协作。

为什么 DevOps 在企业中越来越重要?
它能缩短交付周期、提升协同效率、提高产品质量,并通过自动化减少人为失误。

 

相关解决方案
IBM Instana Observability

利用 AI 和自动化的强大功能,主动解决整个应用程序堆栈中的问题。

深入了解 IBM Instana Observability
DevOps 解决方案

使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。

探索 DevOps 解决方案
云咨询服务

通过我们的云咨询服务持续实现应用现代化,加速业务敏捷性与增长——支持任意平台部署。

深入了解我们的云咨询服务
采取后续步骤

从 IBM Instana® 的主动问题检测到跨堆栈实时洞察,让云原生应用程序保持高可靠运行。

了解 IBM Instana 探索 DevOps 解决方案