主页 topics DevOps 什么是 DevOps?
深入了解 IBM DevOps 开发运维解决方案 订阅有关云计算的最新消息
显示 DevOps 开发运维的持续集成和交付性质的插图
什么是 DevOps?

开发运维 (DevOps) 是一种软件开发方法,通过将软件开发和 IT 运营团队的工作相结合并实现自动化,加速交付更高质量的应用程序和服务。

通过共享工具和实践,包括小而频繁的更新,软件开发变得更加高效、快速和可靠。

根据定义,DevOps,即开发运维,概述了软件开发过程和组织文化的转变,这种转变促进了开发和 IT 运营团队之间的协调与协作;这两个团队传统上是分开作业,或者各自为战的。

在实践中,最好的 DevOps 开发运维流程和文化超越了开发实践和运营,将所有应用程序利益相关者的意见纳入软件开发生命周期。这包括平台和基础架构工程师、安全、合规、治理、风险管理和业务线团队、用户和客户。

DevOps 开发运维原则代表了过去 20 多年来软件交付流程发展的现状。交付过程已从每隔几个月甚至几年发布一次大型应用程序范围的代码,发展到每天或每天数次发布迭代式较小特性或功能更新。

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

2023 年软件交付报告

如果软件很重要,那么软件交付的效率也很重要。阅读此报告以洞察如何提高 DevOps 生命周期的整体效率。

相关内容

注册并获取有关混合云的指南

我们如何实现 DevOps

2000 年之前,大多数软件均使用瀑布法进行开发和更新,这是一种用于大型开发项目的线性方法。软件开发团队花费数月时间开发大量新代码,这影响了大部分或全部应用程序生命周期。由于更改范围十分广泛,他们又花了几个月的时间将新代码集成到代码库中。

接下来,质量保证 (QA)、安全与运营团队依然花费了数月时间来测试代码。而结果则是各软件发布之间需间隔数月甚至数年,且各发布之间通常还会出现若干重大补丁或错误修复。此大爆炸式功能交付方法通常具有以下特点:部署计划复杂且风险较高,面向上下游系统的联锁操作难以安排,同时 IT 部门非常希望在生产上线或正式发布 (GA) 版本之前的几个月内业务需求不会出现重大变化。

敏捷开发

为了加快开发速度和提高质量,开发团队在本世纪初开始采用敏捷软件开发方法。这些是迭代方法而非线性方法,且专注于对应用程序代码库进行更小型、更频繁的更新。在这些 DevOps 方法中,最重要的是持续集成持续交付 (CI/CD)。

CI/CD 中,一小部分新代码会频繁地合并到代码库中,然后自动集成、测试和准备部署到生产环境。敏捷开发将大爆炸方法改为一系列更小的拼合动作,这也将风险分隔开来。

这些敏捷开发实践对软件开发和交付的加速效用越明显,就越清晰地暴露出 IT 运营、系统预置、配置、验收测试、管理和监控方面依然孤立的现状,而成为软件交付生命周期中的下一个瓶颈是此现状的影响之一。

因此,DevOps 源于敏捷。它增加了新的流程和工具,将 CI/CD 的持续迭代和自动化扩展到软件交付生命周期的剩余部分。整个过程的每一步,开发部门和运营部门都进行了密切协作。

DevOps 的工作原理:DevOps 生命周期

DevOps 开发运维生命周期(以线性方式描绘时,有时称之为持续交付管道)是一系列迭代、自动化的开发过程或工作流,在更大、自动化和迭代式的开发生命周期中运行,旨在优化高质量软件的快速交付。工作流的名称和数量因询问对象而有所不同,但它们通常包括这八个步骤。

规划

在此工作流程中,团队根据优先的用户反馈和成功案例,以及所有内部利益相关者的意见,来确定下一个版本的新特性和功能。规划阶段的目标是通过产生可提升产品价值的功能积压来最大化产品的商业价值。

编码

这是编程步骤,开发人员根据待处理的用户故事和工作项编写代码并构建新的和增强的功能。测试驱动开发 (TDD)、结对编程和同行代码评审等实践的组合很常见。在将代码发送到持续交付管道之前,开发人员通常使用本地工作站执行编写和测试代码的内循环。

构建持续集成和持续交付

在此工作流程中,新代码将集成到现有代码库中,然后进行测试和打包,以便发布和部署。常见的自动化活动包括将代码更改合并到主副本中,从源代码存储库检查代码,以及自动执行编译、单元测试并打包到可执行文件中。最优做法是将 CI 阶段的输出存储在二进制存储库中,以供下一阶段使用。

测试

团队使用测试(通常是自动化测试)来确保应用程序符合标准和要求。经典的 DevOps 方法包含在构建和发布之间发生的独立测试阶段。

不过,随着 DevOps 的发展,某些测试元素可以在规划(行为驱动开发)、开发(单元测试、合约测试)、集成(静态代码扫描、CVE 扫描、检查代码潜在问题)、部署(烟雾测试、渗透测试、配置测试)、运营(混乱测试、合规性测试)和学习(A/B 测试)过程中出现。

持续测试是一种强大的风险和漏洞识别形式,为 IT 提供了直面、缓解或补救风险的机会。此外,左移测试是软件开发中的一种方法,强调在开发过程的早期移动测试活动。这种方法可以提高产品质量、扩大测试覆盖范围、提高反馈循环并加快上市时间。

发布

发布阶段是运行诸阶段的第一个阶段,也是用户访问应用程序之前的最后一个阶段。在此工作流中,运行时生成输出(来自集成)被部署到运行时环境,通常是执行运行时测试以确保质量、合规和安全的开发环境。

如果发现错误或缺陷,开发人员有机会在任何用户看到任何问题之前拦截和修复问题。通常有用于开发、测试和生产的环境,每个环境都需要越来越严格的质量管控。当开发人员修复了所有已识别的问题,并且应用程序满足所有要求后,运营团队确认其已准备好进行部署,并将其构建到生产环境中。

部署

部署是指项目移动到生产环境,用户可以在其中访问对应用程序的更改。设置和配置基础结构(通常使用基础结构即代码)并部署应用程序代码。在生产环境中进行部署的一个良好做法是,首先向一组最终用户部署,一旦稳定下来,再向所有用户部署。

运行

如果将功能交付到生产环境被描述为“第 1 天”,则一旦在生产环境运行相关功能,“第 2 天”的运营便会启动。监控功能性能、行为和可用性有助于确保这些功能为用户提供切实价值。

在此阶段,团队需确保功能运行平稳且未出现服务中断,从而确保网络、存储、平台、计算和安全状况均处于正常。如果出现问题,运营团队需识别事件、提醒相应人员、诊断问题并应用修复。

监控

这是为了收集用户和客户对特性、功能、性能和业务价值的反馈,以用于规划下一版本中的增强功能和特性。这还包括运营活动中的任何学习和待办事项,可以帮助开发人员主动防止已知事件再次发生。这是推动持续改进的计划阶段的“包覆”发生的地方。

生命周期中还有另外两个重要的连续工作流程:

安全性

虽然瀑布方法和敏捷实施在交付或部署后“添加”安全工作流,但 DevOps 开发运维努力从一开始(规划)就纳入安全性(此时安全问题最容易解决,成本最低),并在开发周期的其余时间持续运行。这种安全方法被称为“左移”。一些组织左移的成功率不如其他组织,这导致了 DevSecOps(开发、安全和运营)的兴起。

合规性

最好在早期和整个开发生命周期中解决监管 治理、风险和合规性 (GRC) 事项。受监管的行业通常被要求提供一定程度的可观察性、可追溯性,以及访问其运行时操作环境中功能交付和管理方式的权限。

这需要在持续交付管道和运行时环境中规划、开发、测试和执行策略。合规措施的可审计性对于通过第三方审计师证明合规性非常重要。

DevOps 文化

企业领导者普遍认为,如果没有对 DevOps 开发运维文化的投入,即采行软件开发的不同组织和技术方法,DevOps 开发运维方法就无法生效。

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

通常,实现此目标的最佳方法是打破孤岛,并将人员重组为跨职能、自主的 DevOps 开发运维团队,这些团队可以从头到尾(从计划到反馈)处理项目,而无需跨团队交接工作或等待其他团队的批准。在敏捷开发的背景下,共同的责任和协作是共同以产品为导向并取得有价值成果的基石。

在技术层面,DevOps 开发运维要求致力于自动化,以保持项目在工作流内和工作流间的运动。它还需要反馈和衡量,这使得团队能够不断加速周期并提高软件质量和性能。

DevOps 开发运维的优势
更好的协作

培养协作文化和消除孤岛可以使开发人员和运营团队的工作更加紧密地联系在一起,从而提高效率,并减少由于工作流程的组合而产生的工作量。由于开发人员和运营团队共同承担许多责任,因此随着项目的进展,意外会越来越少。DevOps 开发运维团队在开发代码时确切地知道代码在什么环境中运行。

加速交付

DevOps 团队通过加强协作,并使用微服务架构创建更有针对性(更频繁)的版本,从而更快地交付新代码。这一过程可推动改进、创新和错误修复,从而加速推向市场。

它还使组织能够更快地适应市场变化,更好地满足客户需求,从而提高客户满意度和竞争优势。软件发布过程可以通过持续交付和持续集成实现自动化。

更高的可靠性

持续交付和持续集成包括自动化测试,以帮助确保软件和基础架构更新的质量和可靠性。监控和记录可实时验证性能。

更快的扩展

自动化(包括代码等基础架构)可帮助管理开发、测试和生产,并以更高的效率实现更快的扩展。

增强安全性

DevSecOps 可将持续集成、交付和部署集成到开发流程中,以便从一开始便实现内置安全性,而不是进行改造。团队使用“基础架构即代码”将安全测试和审计构建到工作流程中,从而帮助维持控制力并跟踪合规性。

提高工作满意度

DevOps 方法可以通过自动执行单调重复的任务,让员工专注于推动商业价值、更有成就感的工作,从而帮助提高工作满意度。

DevOps 工具:构建 DevOps 工具链

DevOps 和 DevOps 文化的需求非常重视支持异步协作、无缝集成 DevOps 工作流程以及尽可能自动执行整个 DevOps 生命周期的工具DevOps 工具的类别包括:

项目管理工具

项目管理工具使团队能够建立形成编码项目的用户故事(需求)待办项,将其分解为更小的任务并跟踪任务直至完成。许多工具支持开发人员带入 DevOps 开发运维的敏捷项目管理实践,例如 Scrum、Lean 和 Kanban。常见的开源选项包括 GitHub Issues 和 Jira。

协作源代码存储库

这些是版本控制的编码环境,使多个开发人员能够在同一个代码库上工作。代码存储库应与 CI/CD、测试和安全工具集成,以便在将代码提交到存储库时它可以自动进入下一步。开源代码存储库包括 GitHub 和 GitLab。

CI/CD 管道

此类工具可自动进行代码检查、构建、测试和部署。Jenkins 是此类别中最热门的开源工具,许多以前的开源替代方案(例如 CircleCI)现在仅提供商业版本。

对于持续部署 (CD) 工具,Spinnaker 可作为代码层横跨应用程序和基础架构之间。ArgoCD 是 Kubernetes 原生 CI/CD 的另一个热门的开源选择。

测试自动化框架

这包括用于自动化单元、合约、功能、性能、可用性、渗透和安全测试的软件工具、库和最佳实践。其中最优秀的工具可支持多种语言。部分使用人工智能 (AI) 来自动重新配置测试,以响应代码更改。测试工具和框架的范围十分广泛。流行的开源测试自动化框架包括 Selenium、Appium、Katalon、Robot Framework 和 Serenity(前称为 Thucydides)。

配置管理工具

配置管理工具(也称为“基础设施即代码”工具)有助于 DevOps 工程师通过运行脚本来配置和预配版本完整且文档齐全的基础架构。开源选项包括 Ansible (Red Hat)、Chef、Puppet 和 TerraformKubernetes 可对容器化应用程序执行相同的功能。

 

监控工具

监控工具可帮助 DevOps 开发运维团队识别和解决系统问题。它们还实时收集和分析数据,以揭示代码更改如何影响应用程序性能。开源监控工具包括 Datadog、Nagios、Prometheus 和 Splunk。

持续反馈工具

这些工具可通过热图(记录用户在屏幕上的操作)、调查或自助服务问题开单来收集用户反馈。

DevOps 开发运维和云原生开发

云原生是一种使用基础云计算技术构建应用程序的方法。云平台有助于在公共、私有和多云环境中实现一致且最佳的应用程序开发、部署、管理和性能。

如今,云原生应用程序的典型特征是:

  • 使用微服务构建松散耦合、可独立部署的组件,具有自己的独立堆栈,并通过 REST API、事件流或消息代理相互通信。

  • 容器中部署:包含运行应用程序所需的所有代码、运行时和操作系统项的可执行代码单元。对于许多组织来说,容器是 Docker 容器的同义词,但还有其他容器可用。

  • 使用 Kubernetes 执行(大规模)操作一个开源容器编排平台,用于调度和自动执行容器化应用程序的部署、管理和扩展。

在许多方面,云原生开发和 DevOps 开发运维是天生一对。例如开发和更新微服务,即将小型代码单元迭代交付到小型代码库,非常适合 DevOps 开发运维的快速发布和管理周期。如果没有 DevOps 开发运维的部署和运营,就很难处理微服务架构的复杂性。

IBM 最近对开发人员和 IT 高管进行的一项调查发现,78% 的当前微服务用户希望增加他们在架构上投入的时间、金钱和精力,56% 的非用户可能会在未来两年内采用微服务。

通过打包和永久修复所有操作系统依赖关系,容器可实现快速 CI/CD 和部署周期,因为所有集成、测试和部署都发生在同一环境中。Kubernetes 编排为容器化应用程序执行的连续配置任务与 Ansible、Puppet 和 Chef 对非容器化应用程序执行的连续配置任务相同。

大多数领先的云计算提供商,包括 AWS、Google、Microsoft Azure 和 IBM® Cloud,均提供某种托管的 DevOps 管道解决方案。

什么是 DevSecOps?

DevSecOps 是在整个 DevOps 生命周期内持续集成和自动化安全功能的 DevOps,从规划到反馈,再回到规划。

换言之,DevSecOps 就是 DevOps 从一开始就应有的样子。但是,采用 DevOps 所面临的两项早期重大(同时也是暂时无法克服的)挑战分别是:将安全专业知识集成到跨职能团队(文化问题),以及将安全自动化实施到 DevOps 生命周期中(技术问题)。在很多 DevOps 实践中,安全性均被视为一项无法实现的任务以及一个代价高昂的瓶颈。

DevSecOps 的出现是为了按照最初的预期来集成并自动实现安全性而做出的具体努力。在 DevSecOps 中,安全性是与开发和运营同等重要的“一等公民”和利益相关者,同时它还注重将安全性引入以产品为中心的开发流程中。

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

站点可靠性工程 (SRE) 使用软件工程技术来自动执行 IT 运营任务,例如生产系统管理、变更管理事件响应甚至应急响应,否则系统管理员可能要手动执行这些任务。SRE 致力于将传统的系统管理员转变为工程师。

SRE 的目标类似于 DevOps 开发运维的目标,但更具体:SRE 旨在于组织对快速应用程序开发的需求,和满足与客户的服务级别协议 (SLA) 中指定的性能和可用性级别的需求之间取得平衡。

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

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

DevOps 开发运维的未来

随着可自动化任务范围的扩大,DevOps 中增加了更多功能,从而产生了 DevOps 的多种版本。随着 DevOps 证明了其自身的诸多好处,商业投资也随之增加。

Verified Market Research 称,2023 年 DevOps 的市场价值为 109.6 亿美元,预计 2031 年将达到 211.3 亿美元,2024 年至 2031 年的复合年增长率为 21.23%。

为了帮助确保 DevOps 开发运维的成功,企业越来越多地采用:

 

AIOps

用于 IT 运营的人工智能引入了 AI 和机器学习来自动化和简化 IT 运营,从而能够快速分析大量数据。

BizDevOps

BizDevOps 让业务部门参与软件开发流程以及开发和运营方面的协作。这种文化转变也被称为 DevOps 2.0,它加快了流程,并带来了符合业务部门目标的更强大解决方案。

容器化

创造新效率的另一种方法是容器化,其中应用程序及其依赖项被封装到一个简化的可移植包中,几乎可以在任何平台上运行。

DevSecOps

在开发初期增加更多安全功能,这推动了 DevSecOps 的发展。安全不再是事后考虑的问题。

GitOps

GitOps 专注于将应用程序代码存储在 Git 存储库上以便对其进行版本控制,可供多个团队成员使用,并且完全可跟踪和可审计。这些措施有助于提高效率、可靠性和可扩展性。

可观察性

虽然传统的监控工具可提供可见性,但可观察性平台能够提供针对系统性能的更深入的了解,更重要的是能提供对性能背景的理解除了提供这种全面的理解之外,可观察性还支持所有利益相关者访问构建解决方案和创建更优秀的应用程序所需的数据。

无服务器架构

无服务器计算是一种应用程序开发和执行模型,支持开发人员构建和运行应用程序代码,而无需配置或管理服务器或后端基础设施。在无服务器架构中,开发人员编写应用程序代码并将其部署到由云服务提供商管理的容器中。

相关解决方案
IBM DevOps 解决方案

采用强大的 DevOps 软件,跨多个设备、环境和云构建、部署和管理高度安全的云原生应用程序。

深入了解 IBM 开发运维解决方案
IBM DevOps Automation

实现软件交付流程自动化,提高工作效率和运营效率。

深入了解 IBM® DevOps Automation
DevOps for IBM® Z

为混合云环境改造任务关键型应用程序,实现稳定性、安全性和敏捷性。

深入了解 IBM Z 的 DevOps
IBM® Cloud Pak for AIOps

智能运维 (AIOps) 平台可提供对不同环境中性能数据与依赖性的可视化管理,借助该平台,企业可在不断变化的环境中加速创新、降低运营成本并实现 IT 运营 (ITOps) 转型。

深入了解 IBM Cloud Pak for AIOPs
资源 DevOps 开发运维是现代化的重要组成部分

了解大型机应用程序环境的现代化将如何提供更优的业务成果。

利用 AI 使您的 IT 运营经得起未来考验

获取独家 Gartner 分析师报告,了解面向 IT 的 AI 如何改善业务成果、增加收入并降低组织的成本和风险。

实现企业 DevOps 的现代化改造

IBM Redpaper 通过利用混合云环境来探讨可以加速大型机应用程序现代化的战略和架构解决方案。具体请参阅第 5 章来了解有关企业 DevOps 现代化的信息。

通过新的自动化和增强的语言功能实现 Z DevOps 现代化

了解 Wazi Deploy,它为 IBM® Developer for z/OS® Enterprise Edition 广泛的开发工具集添加了基于开源的脚本应用程序部署选项。

DevOps Acceleration Program

探索增值的早期采用计划,该计划旨在在我们认为任何 DevOps 开发运维转型所必需的不同阶段中与客户合作。

IBM DevSecOps 社区

加入 DevSecOps 社区,了解 Z 趋势和主题的最新消息。

采取后续步骤

您准备好实施 DevOps 了吗?要按照市场需求的速度交付软件和服务,团队必须快速迭代和试验,并在反馈和数据的驱动下频繁部署新版本。最成功的云开发团队通过现代 DevOps 文化和实践,采用云原生架构,并使用一流的工具组装工具链,实现了生产力的大幅提升。

探索 DevOps 解决方案 免费试用