您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

什么是 DevOps?解读 IT 文化革命的目的和重要性

时间:2024-01-12 14:15:24  来源:今日头条  作者:35岁职场危机

DevOps 将运维和开发相结合以提供持续的软件改进,可以降低复杂性并提高应用程序输出。

 

什么是 DevOps?

DevOps 是组织用来创建和交付应用程序和服务的灵活实践和流程的集合,通过使软件开发与 IT 运营保持一致和协调。

正如DevOps先驱Patrick Debois在2009年首次描述的那样,DevOps不是一种特定的技术,而是一种战术方法。通过协同工作,开发和运营团队可以消除障碍,并专注于改进他们创建、部署和持续监控软件的方式。

向 DevOps 的转变对于组织支持客户和内部利益相关者所需的不断加快的开发速度至关重要。借助云原生技术、开源解决方案和敏捷 API,团队现在可以比以往任何时候都更高效地交付和维护代码。将开发与运营以及支持运营的流程相结合,使组织能够跟上开发速度的步伐。

 

DevOps的起源

DevOps 始于 2008 年,由开发人员 Andrew Clay 和 Patrick Debois 创立。为了克服敏捷开发中的常见问题,例如随着项目时间线的扩展,协作减少,以及增量交付对长期结果的负面影响,两人提出了一种替代方案:在组合的 DevOps 管道中进行持续开发和交付。该术语在 2009 年的 DevOpsDays 之后获得了关注,并迅速成为一个新的行业流行语。

而现在 DevOps 框架不仅仅是炒作,在实践中,它最大的好处不是简单的效率提升,而是一种文化转变,从根本上改变了公司处理软件开发过程每个阶段的方式。最近,由于 Gene Kim 等行业专家的工作,DevOps 经历了更深入的演变。Gene Kim 是 Perform 2021 的主题演讲者,也是 DevOps 手册和 Phoenix Project 的作者。

 

DevOps 是如何工作的?

许多组织将开发和运维整合到一个团队中,以实现这一组合流程,按功能而不是按工作职能组织软件交付。这种方法鼓励个人发展跨职能技能,将测试和应用程序安全实践整合到无缝的交付生命周期中。

实施 DevOps 通常与持续集成 (CI) 齐头并进,在持续集成 (CI) 中,多个开发人员通常一天多次将软件更新提交到共享存储库。CI 使开发人员能够在流程的早期发现集成问题和错误,并简化代码分支和构建。

从这种整体角度来看,工程师可以在通用流程上进行协作,例如定义服务级别目标 (SLO)、测试和每个人都可以实施的质量门。一组通用的标准和目标可以简化敏捷工作流,并使团队能够采用协调的 DevOps 工具集,以便他们可以在软件交付生命周期 (SDLC) 中自动执行更多流程。

 

DevOps 生命周期

规划

这个阶段涉及定义项目的目标并制定如何实现这些目标的计划。它还包括识别可能遇到的风险和挑战。规划阶段对于确保 DevOps 过程成功至关重要。让所有利益相关者参与规划过程,包括开发人员、运营工程师和业务主管。计划应该清晰、简洁且可实现。

发展

此阶段是编写和测试代码的地方。尽可能多地自动化测试过程,以确保代码的高质量,并使用版本控制系统来跟踪代码的更改。应对代码进行单元测试,以确保其正常工作。

部署

此阶段是将代码部署到生产环境的位置。拥有一个能够自动执行部署过程并最大限度地降低错误风险的部署管道至关重要。

监测

此阶段涉及收集有关应用程序性能的数据并识别问题。有必要建立一个监控系统,可以尽快提醒团队注意任何问题。

持续改进

此阶段正在进行中,涉及不断评估DevOps流程并进行改进。对反馈持开放态度并愿意根据需要更改流程很重要。

 

DevOps的优势

在实践中,DevOps 不仅为创建、交付和维护软件提供了好处,而且为从早期概念验证到数字业务分析和客户体验的每个流程和利益相关者提供了好处。

对于开发团队来说,目标是将创建代码的过程识别为一个持续的循环,而不是一条直线。与运营团队合作或集成开发有助于将敏捷开发原则(基于优先级的快速、小规模的改进)应用于整个软件生命周期。这包括初始设计、概念验证、测试、部署和最终修订。

随着客户需求和最高管理层期望的提高,这种方法尤为重要。负责尽快生产和部署软件的开发团队现在能够做到这一点。与此同时,可以理解的是,运营团队担心快速代码实现的影响,以及将代码可靠、大规模地投入使用所需的更改。

对于运营而言,协作式部署方法可以将敏捷流程从软件扩展到平台和基础架构中,以分析 IT 环境中所有层的详细信息和上下文。通过将设计思维应用于交付系统,运营团队可以将重点从管理基础设施转移到提供出色的用户体验上。

实际上,这种开发和运营工作旨在通过将软件开发原则应用于 IT 的各个方面来利用而不是限制开发对运营的影响,同时保持对标准化和安全性的运营关注。

 

DevOps的挑战

以下是组织在采用 DevOps 时可能面临的一些挑战:

  • 安全问题:DevOps 实践可能会引入新的安全风险,例如通过自动化部署将漏洞引入生产系统的风险。组织必须拥有强大的安全文化,并实施适当的安全控制措施来降低这些风险。
  • 组织孤岛:在具有强大结构孤岛的组织中实施 DevOps 可能具有挑战性。这些孤岛可能会带来沟通和协作挑战,从而阻碍 DevOps 实践的采用。组织必须打破这些孤岛,并创造一种更具协作性的文化,才能成功采用 DevOps。
  • 合规性挑战:DevOps 实践可能会带来新的合规性挑战,例如需要遵守要求手动批准生产系统更改的法规。组织必须评估其合规性要求并实施适当的控制措施以保持合规性。

 

如何采用 DevOps

通过打破软件开发和 IT 运营团队之间的孤岛,DevOps 可以帮助组织更快、更可靠地交付软件,例如:

从小型试点项目开始。

  • 不要尝试一次实现所有DevOps实践。从一个对组织很重要并得到高级管理层支持的小项目开始。

获得所有利益相关者的支持。

  • DevOps是一种文化变革,除非每个人都参与进来,否则不会成功。确保您获得所有利益相关者的支持,包括开发人员、运营工程师、安全专业人员和业务领导者。

使用正确的工具。

  • 有几种工具可以帮助组织采用DevOps实践。这些工具可以帮助实现 CI/CD、监视和安全性。

衡量和改进。

  • 衡量DevOps工作的结果至关重要,以了解哪些是有效的,哪些是无效的。然后,这些信息可以改进您的流程并使其更有效率。

要有耐心。

  • 实施 DevOps 实践并看到结果需要时间。如果您没有看到立竿见影的效果,请保持积极的态度。

 

DevOps 中的实践

持续集成

  • 持续集成 (CI) 是定期将所有代码更改合并到中央存储库中的做法。这有助于在开发过程的早期识别和修复错误。

持续交付

  • 持续交付 (CD) 是在测试和批准代码更改后自动将代码更改部署到生产环境。这有助于确保用户尽快获得新功能和错误修复。

微服务

  • 微服务是一种架构风格,它将应用程序划分为小型的独立服务。这样可以更轻松地开发、测试和部署应用程序。

基础架构即代码

  • 基础结构即代码 (IaC) 是使用代码管理基础结构的做法。这样可以更轻松地自动部署和配置基础架构。

监测

  • 监视是收集和分析有关应用程序性能的数据的做法。这有助于在问题影响用户之前识别和解决问题。

自动化

  • 自动化是自动执行任务(如测试、部署和监视)的做法。这为开发人员和运营工程师腾出了时间,让他们可以专注于更具战略性的任务。

协作

  • 协作是有效合作的实践。这对于DevOps至关重要,因为它需要开发人员和运营工程师之间的密切合作。这意味着打破这两个团队之间的孤岛,并创造一种文化,让每个人都朝着同一个目标努力。

 

什么是DevOps最佳实践?

在整个组织中集成学科、工具和流程需要规划和协调。以下是组织可以遵循的一些最佳实践,以使 DevOps 在企业范围内取得成功。

利用 AI 增强 DevOps 管道

DevOps 管道的每个阶段都需要进行一定数量的分析,以推动决策、响应和自动化。

例如,基于 AI 的精确分析可以推动是否发布软件的决策,一旦软件投入生产,就指示发布是否按预期运行。或者,在失败的测试运行期间,AI 可以提供确切的根本原因,直至底层代码的详细信息,以便开发人员可以快速解决和修复错误。

准确可靠地分析数据并提供明确答案的能力使团队能够在整个软件交付生命周期中实现流程自动化。可靠的 AI 驱动型答案对于快速事件响应和自动修复至关重要,因此团队可以了解故障或错误背后的背景。

这种用于 IT 运营的人工智能 (AIOps) 正在成为一种普遍的做法,尤其是在组织采用云原生基础设施的情况下。

左移服务级别目标 (SLO)

为确保开发团队和 SRE 在相同的成功标准上保持一致,他们应根据预生产环境评估生产 SLO。通过使用生产级标准将质量保证扩展到包括预防、检测和可恢复性,团队可以交付满足用户要求、降低错误率并提高整体可靠性和弹性的软件。更重要的是,在预生产中修复错误的成本远低于生产中。

持续的质量思维使团队能够构建整个 SDLC 以进行测试。这意味着测试生命周期的所有层。它还意味着开发和维护可靠的测试数据和测试环境,开发人员、SRE 和 IT 运营团队可以在开发和交付的每个阶段使用这些数据和测试环境。

自动评估预生产 SLO 的一种方法是建立质量门。质量门可帮助团队确定服务是否符合所有预定义的质量标准。质量门采用关键服务级别指标 (SLI) 或监控指标,并根据设置的质量标准对其进行评估。仅当服务达到或超过质量标准时,代码才会进入生命周期的下一阶段。

自动执行所有 DevOps 流程

自动化 DevOps 管道允许更快、更频繁地部署迭代的增量软件更新。它在开发和运营团队之间提供了更紧密的反馈循环,因此他们可以将更多时间花在创新上,而不是执行手动流程。

自动化可以帮助团队将 DevOps 从灯塔项目扩展到整个 IT 资产的基本实践。DevOps 自动化通常会敲响持续集成、持续交付 (CI/CD) 的钟声,但自动化这些基础流程可以远远超出开发代码的范围。更高级的组织寻求自动化 DevOps 生命周期的所有阶段,包括基础架构预配、部署、监控、测试、修复等。

采用云原生架构

为了发挥DevOps的潜力,速度和敏捷性是关键。采用云原生技术和架构是更快、更灵活、更大规模地交付更多、更丰富功能的最佳方式。这些技术包括基于容器的计算解决方案(如 Kube.NETes)和无服务器平台即服务 (PaaS)(如 AWS Lambda、google Cloud Platform 和 Azure Functions)。在这些环境中,软件在不可变的容器中运行,根据需要使用资源,这种设置非常适合可以轻松编排和自动化的基础结构模式。

云原生技术使团队能够更轻松地将敏捷软件开发实践应用于基础架构管理。这包括自动执行关键任务,例如版本控制、单元测试、持续交付、运营功能和问题修复。

集成 DevSecOps 的安全实践

云原生技术的多样性和灵活性也使得保护应用程序免受漏洞侵害更具挑战性。如前所述,将应用程序安全和漏洞评估集成到 DevOps 工作流中是一种最佳实践,它将 AI 驱动的分析和自动化的优势扩展到保护应用程序。

通过自动化应用程序安全测试以在运行时持续分析应用程序、库和代码,团队可以消除安全盲点和误报警报。将与安全相关的 SLO、测试和质量门添加到交付生命周期的所有阶段,使团队能够培养一种安全思维,从而消除另一个孤岛并产生更安全的软件。

采用平台驱动的自助服务流程方法

要实现广泛的DevOps成功,需要一种平台方法,使组织更容易实现结构性变革,从而优化团队的工作方式。一个关键目标是建立自助服务流程,用于管理不同类型的测试、监控、警报、CI/CD 工作流、内部基础架构和开发环境以及公有云基础架构。当团队能够访问可靠的数据和分析,并且个人拥有更多的自主权来依赖自己的知识和经验时,组织可以将 DevOps 的价值扩展到整个企业。

通过利用 AI 和自动化的单一平台中自助访问 API、工具、服务和支持,团队拥有单一可靠的知识和协调来源。这使团队能够集成和简化其 DevOps 工具链和流程,从而减少维护基础架构的时间,将更多时间用于创新。

 

DevOps 如何实现企业转型

成功的 DevOps 计划具有实验、风险和信任的文化,在这种文化中,所有成员之间的持续反馈都受到欢迎和利用。但是,仅靠文化还不足以改变企业的努力;团队还需要正确的技术和 DevOps 软件来完成工作。

随着工具和技术的激增,一项关键功能是可观察性:能够检测和监视来自整个云原生环境的遥测数据。这包括指标、日志、分布式跟踪,以及来自用户体验和最新开源标准的数据,用于衡量应用程序及其支持基础设施在每个开发阶段的运行状况。

根据 Gartner 最近的一份报告,领导者应该在预生产期间考虑解决方案,以最大限度地了解应用程序性能、服务可用性和整体环境健康状况。

在DevOps工作中加入更多规则的推动力也正在形成:“DevSecOps”团队寻求将安全测试集成到交付和部署管道中,而“BizDevOps”则努力从用户体验的角度了解应用程序性能。

 

什么是DevOps中的可观测性?

DevOps 将开发和运营结合到一个统一的框架中,打破了孤岛并促进了整个生命周期的协作。在此环境中,SRE 可以实施确保软件系统的可用性、延迟、性能和弹性的操作,而 CI/CD 实践可以提供一致性良好的自动化开发、测试、交付和部署。

 

可观测性如何缩小 DevOps 差距

什么是 DevOps?这是一种文化和战术上的转变,通过将团队合作与技术相结合来简化软件交付、标准化测试和质量关口以及自动化流程和事件响应,从而缩小开发工作与运营义务之间的差距。借助最佳实践和 AI 驱动的软件智能平台来管理整个 DevOps 工具链,团队可以最大限度地提高效率、降低错误率并实现持续交付预期。



Tags:DevOps   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
什么是 DevOps?解读 IT 文化革命的目的和重要性
DevOps 将运维和开发相结合以提供持续的软件改进,可以降低复杂性并提高应用程序输出。 什么是 DevOps?DevOps 是组织用来创建和交付应用程序和服务的灵活实践和流程的集合,通过...【详细内容】
2024-01-12  Search: DevOps  点击:(74)  评论:(0)  加入收藏
从Kubernetes的探针到DevOps
今天在群里又看有人问如何设置 Kubernetes 的探针,感觉要补充的话太多了,结合我们在一些 DevOps 项目中痛苦的体验,今天一劳永逸的全部说完,此外,也为大家展现一下为什么 DevOps...【详细内容】
2023-12-27  Search: DevOps  点击:(113)  评论:(0)  加入收藏
14个工具,让 DevOps 和 SRE 遥遥领先!
作者 | Eduardo Messuti编译 | 小欧出品 | 51CTO技术栈(微信号:blog51cto)随着 DevOps 和 SRE 的不断发展,新一代工具应运而生。本文将深入探讨2024年最有前途的工具,它们正在塑...【详细内容】
2023-12-18  Search: DevOps  点击:(102)  评论:(0)  加入收藏
使用持续集成和部署管道简化DevOps流程
在软件开发领域,DevOps(DevelopmentandOperations)是一种将开发和运维团队紧密结合的方法论,旨在加快软件交付速度、提高质量和稳定性。然而,传统的软件开发流程中存在着繁琐的手...【详细内容】
2023-12-10  Search: DevOps  点击:(127)  评论:(0)  加入收藏
混合云中 DevOps 的最佳实践
近年来,出现了各种工具、技术和框架,其目标是增强灵活性、性能和可扩展性。传统的整体方法已被微服务和纳米服务等更加模块化的方法所取代。此外,云计算的兴起导致本地软件被云...【详细内容】
2023-11-08  Search: DevOps  点击:(72)  评论:(0)  加入收藏
一文讲透DevOps理论体系的演进
一、前言 当前,我国处于以信息化、数字化、网络化、智能化为特征的科技变革浪潮中,企业数字化转型大势所趋,那么作为支撑企业 IT 运转的运营体系也在向多元方向发展,比如 DevOps...【详细内容】
2023-11-01  Search: DevOps  点击:(221)  评论:(0)  加入收藏
八个优秀开源DevOps工具
DevOps(Development和Operations)是一组软件工程过程最佳实践,并非工具,旨在将制造世界的精益概念应用于软件世界。维基百科给出的定义是:“DevOps是一种重视软件开发人员(Dev)和IT...【详细内容】
2023-10-10  Search: DevOps  点击:(291)  评论:(0)  加入收藏
如何利用DevOps与Kubernetes提升软件交付效率?
在当今的软件开发领域,DevOps和Kubernetes已成为推动企业数字化转型的关键因素。DevOps是一种注重开发(Development)和运维(Operations)团队之间紧密协作的软件工程方法,而Kuberne...【详细内容】
2023-10-08  Search: DevOps  点击:(352)  评论:(0)  加入收藏
DevOps团队如何提高Kubernetes性能
编译 | 徐杰承今天,Kubernetes仍然是开发人员最需要的容器。Kubernets最初由 Google 工程师开发,作为跨本地、公共云、私有云或混合云托管的首选解决方案享誉全球。来自Statis...【详细内容】
2023-08-22  Search: DevOps  点击:(289)  评论:(0)  加入收藏
揭穿DevOps的5个谣言!
作者 | Aditi Agarwal 编译 | 徐杰承据不完全统计,软件故障每年都会给企业造成数十亿美元的损失,这也是为什么拥有一个可靠的软件交付流程是如此重要的原因,而DevOps能够帮助我...【详细内容】
2023-08-15  Search: DevOps  点击:(200)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(5)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(12)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(8)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(10)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(8)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(5)  评论:(0)  加入收藏
站内最新
站内热门
站内头条