什么是DevOps

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是DevOps相关的知识,希望对你有一定的参考价值。

什么是DevOps?

DevOps 是一套实践、工具和文化理念,可以实现软件开发团队和 IT 团队之间的流程自动化和集成。它强调团队赋能、跨团队沟通和协作以及技术自动化。

DevOps 运动始于 2007 年左右,当时软件开发和 IT 运营社区开始担忧传统的软件开发模式。在此模式下,编写代码的开发人员与部署和支持代码的运营人员会独立工作。DevOps 这一术语由“开发”和“运营”两个词构成,它反映了将这些领域整合为一个持续流程的过程。

DevOps 如何运作?

DevOps 团队包括开发人员和 IT 运营人员,他们在整个产品生命周期中进行协作,以提高软件部署的速度和质量。这是一种全新的工作方式,也是一种文化转型,对团队及其工作的组织具有重大影响。

在 DevOps 模式下,开发和运营团队不再是“孤立”的。有时,这两个团队会合并为一个团队,合并后工程师会参与整个应用生命周期中的工作(从开发和测试到部署和运营),并具备多学科的技能。

DevOps 团队使用工具实现流程自动化,并加速流程,这有助于提高可靠性。DevOps 工具链可帮助团队处理重要的 DevOps 基础事项,包括持续集成、持续交付、自动化和协作。

DevOps 的价值有时也会应用于开发团队以外的团队。当安全团队采用 DevOps 方法时,安全性则成为开发过程中一个活跃的组成部分。这就是所谓的 DevSecOps。

DevOps 生命周期

由于 DevOps 的连续性,从业人员使用无限循环来展示 DevOps 生命周期各个阶段之间的相互关系。尽管看似是按顺序进行的,但此循环实际表示需要在整个生命周期进行持续协作和迭代改进。

DevOps 生命周期由六个阶段组成,它们分别代表开发(循环的左半部分)和运营(循环的右半部分)所需的流程、功能和工具。团队会在每个阶段进行协作和沟通,以保持一致性、速度和质量。

规划

DevOps 团队应采用敏捷开发实践来提高速度和质量。敏捷开发是一种用于项目管理和软件开发的迭代方法,可帮助团队将工作分解成更小的部分,从而提供增量价值。

构建

Git 是一个免费的开源版本控制系统。Git 可为分支、合并和重写存储库历史记录提供出色的支持,而这已为开发构建流程带来了众多极具创新且功能强大的工作流和工具。

持续集成和交付

CI/CD 可让团队频繁且可预测地发布高品质产品,其范围涵盖从源代码存储库到使用自动化工作流的生产环节。团队可以频繁地合并代码变更、部署功能标记以及集成端到端测试。

监控和警报

快速识别并解决影响产品正常运行时间、速度和功能的事务。自动通知您团队有关变更、高风险操作或故障的信息,以便保持服务的运行。

运维

管理面向客户的端到端 IT 服务交付。这包括设计、实施、配置、部署和维护支持组织服务的所有 IT 基础架构过程中涉及的实践。

持续反馈

DevOps 团队应对每个版本进行评估,并生成报告以改进未来版本。通过收集持续反馈,团队可以改进其流程,并采纳客户反馈以改进下一个版本。

DevOps 工具

DevOps 工具可应对 DevOps 生命周期的关键阶段。它们通过帮助改进协作、减少上下文切换、引入自动化以及实现可观察性和监控功能来支持 DevOps 实践。

DevOps 工具链通常遵循两种方法:一体化或开放式工具链。一体化工具链提供完整的解决方案,通常不会与其他第三方工具集成。开放式工具链则允许使用不同工具进行自定义。这两种方法各有优缺点。

DevOps 有哪些优势?

有“2020 年 DevOps 趋势调查”表明,99% 的调查对象表示 DevOps 对他们的组织产生了积极影响。DevOps 的优势包括更快且更轻松的发布、团队效率、更高的安全性、更高品质的产品,以及更高的团队和客户满意度。

速度

更频繁地实践 DevOps 发布可交付成果的团队具有更高的品质和稳定性。事实上,DORA 2019 年 DevOps 状况报告发现,精英团队的部署频率和速度分别比表现不佳的团队高出 208 倍和 106 倍。持续交付使得团队可以使用自动化工具来构建、测试和交付软件。

改进协作

DevOps 的基础是开发人员和运营团队之间的协作文化,他们会分担责任,协调工作。此举可以提高团队的效率,并省去工作交接和编写专为其运行环境而设计的代码的时间。

快速部署

通过提高发布的频率和速度,DevOps 团队可以快速地改进产品。快速发布新功能和修复缺陷有助于获得竞争优势。

质量和可靠性

持续集成和持续交付等实践可确保变更正常运行且安全无误,从而提高软件产品的质量。监控则有助于团队实时了解性能。

安全性

通过将安全性集成到持续集成、持续交付和持续部署管道中,DevSecOps 成为开发过程中一个活跃的组成部分。通过将主动安全审计和安全测试集成到敏捷开发和 DevOps 工作流中,可将安全性植入产品内。

采用 DevOps 会面临哪些挑战?

原有的习惯很难改变。深陷孤立工作方式的团队可能会难以应对,甚至抗拒彻底改变团队结构以采用 DevOps 实践。某些团队可能会错误地认为有了新工具就足以采用 DevOps。但是,DevOps 是人员、工具和文化的结合。DevOps 团队的每一个人都必须了解整个价值流,从构思、开发到最终用户体验。它要求打破孤岛,以便在整个产品生命周期中进行协作。

Devops 不是任何一个个人的工作,而是每个人的工作。

从传统的基础架构转向使用基础架构即代码 (IaC) 和微服务可以加快开发和创新速度,但增加的运营工作量可能极具挑战性。最好为自动化、配置管理和持续交付实践奠定坚实的基础,以帮助减负。

过度依赖工具会使团队偏离 DevOps 的必要基础:团队和组织结构。一旦建立了结构,就应该建立流程和团队,然后确定工具。

如何采用 DevOps?

首先,采用 DevOps 需要致力于评估且可能更改或删除组织当前所用的所有团队、工具或流程。这表示需要构建必要的基础架构,以便团队能够自主构建、部署和管理其产品,而不必过分依赖于外部团队。

DevOps 文化

DevOps 文化是指团队采用新工作方式(包括加强合作和沟通)的环境。这是人员、流程和工具的协调一致,以实现更加统一的客户导向服务。多学科团队负责产品的整个生命周期。

持续学习

在 DevOps 方面表现良好的组织鼓励进行实验和一定程度的冒险。在这些组织中,跳出固有思维模式是常态,而失败则被理解为学习和进步的自然组成部分。

敏捷

敏捷开发方法在软件行业中非常受欢迎,因为它们赋予了团队内在的灵活性、出色的有序性以及响应变化的能力。DevOps 是一种文化转型,可促进软件构建和维护人员之间的协作。搭配使用敏捷开发和 DevOps 时,可提高效率和可靠性。

DevOps 实践

持续集成

持续集成是将代码更改自动集成到软件项目中的实践。它允许开发人员频繁地将代码更改合并到执行构建和测试的中央存储库中。这有助于 DevOps 团队更快速地修复缺陷、提高软件质量以及缩短验证和发布新软件更新所需的时间。

持续交付

持续交付通过自动将代码更改部署到测试/生产环境中来扩展持续集成。它会沿着持续交付管道推进。而在此管道内,自动化构建、测试和部署会被编排为一个发布工作流。

情境意识

对于组织中的每个成员来说,能够访问他们需要的数据以尽可能高效和快速地完成他们的工作可谓至关重要。团队成员需收到部署管道中的故障警报(无论是系统性故障还是由于测试失败引起的故障),并及时收到在生产中所运行应用的运行状况和性能的最新信息。指标、日志、跟踪、监控和警报都是团队了解其工作进展所需的重要反馈来源。

自动化

自动化是其中一个最重要的 DevOps 实践,因为它能让团队更快速地完成高品质软件的开发和部署流程。利用自动化,将代码变更推送到源代码存储库的一个简单操作便可触发构建、测试和部署流程,从而大大减少这些步骤所花的时间。

基础架构即代码

无论您的组织是拥有本地数据中心,还是完全托管在云中,能快速、一致地调配、配置和管理基础架构是成功采用 DevOps 的关键。基础架构即代码 (IaC) 不仅仅是编写基础架构配置脚本,它还将基础架构定义视为实际代码:使用源控制、代码审查、测试等。

微服务

微服务是一种架构技术。在此技术中,应用被构建为一系列可以相互独立部署和运行的小型服务。每个服务都有其自己的流程,并通过接口与其他服务通信。这种关注点分离和剥离的独立功能支持 DevOps 实践,例如:持续交付和持续集成。

监控

DevOps 团队监控从规划、开发、集成和测试、部署到运营的整个开发生命周期。如此一来,团队就能迅速、自动地对客户体验中的任何降级做出响应。更重要的是,它允许团队“左移”至开发的早期阶段,并最大程度地减少具有破坏性的生产变更。

开始使用 DevOps

开始使用 DevOps 的最简方法就是识别小型价值流(例如:小型支持应用或服务),然后开始尝试一些 DevOps 实践。与软件开发一样,与一小群利益相关者一起转换单个数据流比尝试在组织内一次性过渡至全新的工作方式要容易得多。

参考技术A DevOps这个词,其实就是Development和Operations两个词的组合。从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠。
DevOps 强调通过一系列手段来实现既快又稳的工作流程,使每个想法(比如一个新的软件功能,一个功能增强请求或者一个 bug 修复)在从开发到生产环境部署的整个流程中,都能不断地为用户带来价值。这种方式需要开发团队和运维团队密切交流、高效协作并且彼此体谅。此外,DevOps 还要能够方便扩展,灵活部署。有了 DevOps,需求最迫切的工作就能通过自助服务和自动化得到解决;通常在标准开发环境编写代码的开发人员也可与 IT 运维人员紧密合作,加速软件的构建、测试和发布,同时保障开发成果的稳定可靠。
devops的优点:
1.流水线作业:流水线、标准化、自动化的作业流程是一大好处。这有效减少了错误的发生,同时使得各种资源可以被投入到更高层次的战略目标中。不仅应用开发效率提高,同时技术人员的情绪也会更积极,因为他们可以少花很多时间在那些低效的人工流程和紧急情况处理上。
2.协同工作:DevOps的一个基本特征,就如它名称所预示的,打破开发和运维之间的部门界限。当开发和运维人员作为一个团队,他们就必须开始熟悉跨界技能和信息共享,为了一个共同的目标去协作,提高效率。
3.增强灵活性:DevOps的流程,在设计上就防止团队构建出一个庞大的单体应用发布到线上。DevOps聚焦于少量多次的发布,这使得流程、团队、组织在响应市场环境中的变化时更灵活,先发制人。
选择DevOps的考量
在企业中采取DevOps流程,涉及到许多方面的考量。为了实施成功,采用DevOps要求有一个清晰的战略目标。获得相关高层领导的支持,管理方式的变革,并且有合适的基础设施去支持这样的转变。
DevOps技术可以为转型成功的企业带来诸多好处。然而企业做出相应的调整改变也要顾及各个方面。在现有的技术人员中找到一些熟练且有经验的员工去贯彻普及DevOps流程并不容易。这也是许多企业选择一些已经成功推广DevOps技术的组织作为合作伙伴,来支持推进DevOps普及的原因。
HARMONY CLOUD DevOps平台使用业务价值为导向的开发运营融合模式,以平台形式固化开发运营一体化框架体系的流程,打通从需求管理、配置管理、个人构建、版本构建及产品运营的产品全生命周期管理,解决研发、QA、运维三者之间的矛盾,实现了产品全流程可视化、评价指标规范化、产品运营可持续化。
参考技术B 在软件开发的过程中,开发人员负责编写代码,然后将代码交给 QA(质量保障)团队进行测试,然后将最终的发布版交给运维团队去布署。

DevOps 就是 Development(开发)和 Operations(运维)两个词的组合。但这里的组合并不是简单地将两个团队合并,而是要从思维和流程上变革,根据 DevOps 思想重新梳理全流程的规范和标准。
DevOps 既是一种思维方式,同时也是一种工作方式,作为一套促进开发、技术运营和质量保障三个部门之间的沟通、协作与整合的方法论,使得组织的快速迭代,实现竞争优势成为现实。
在 DevOps 的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。
DevOps 的实施,打破了团队内各角色的职能壁垒,让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件开发的整体过程更加快捷和可靠。
参考技术C DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。本回答被提问者采纳 参考技术D

DevOps=Developers+Operators,也就是研发运维一体化,主要是通过自动化流程使得软件过程更加快捷和可靠。它不是一个产品,而是一种新的团队工作方式、新的技术理念。

一个软件从0到1的最终交付包含如下阶段:市场规划、产品规划、编码设计、编译构建、部署测试、发布上线、后期维护。早期的时候全由一个人完成了,随着团队的扩张,团队里有了产品经理、开发人员、测试人员、运维人员的划分,由产品经理负责需求的规划、产品交互设计,研发人员负责编码、构建包,测试人员负责功能测试和自动化测试、上线发布,运维人员负责维护线上服务的正常运行、扩容缩容,这就是敏捷开发模型,在开发过程阶段测试介入,快速验证修改问题直到基本无误后上线部署。

这一切所带来的问题是整体的交付周期变长了,团队之间沟通合作成本变高了,因此DevOps应运而生。它将整个软件开发测试运维过程变为一体化,每完成一个小的需求点便测试上线部署,快速验证需求,捕获用户,占领市场。

DevOps的未来发展趋势

一、人工智能的崛起

手工测试将不再是一天中的例行惯例,这一时代已经不远了。当人工智能与 DevOps 自动化相结合时,流程执行方式发生了变化。

人工智能利用日志和活动报告来预测代码执行情况。在使用人工智能的能力时,自动化验收测试、实施测试以及功能测试对于组织来说就更容易了。所以,软件发布过程变得越来越完美,越来越高效,越来越迅速,因为持续交付是有保证的。

据最近的专家预测,随着人工智能驱动的应用程序的不断增加,工作流中将会出现越来越多的 DevOps 理念。DevOps 将成为管理多个生产链模型的测试和维护的首选方案。

二、在 DevOps 中使用无服务器计算

DevOps 可以通过无服务器计算来达到新的水平。这类应用依赖于称为 BaaS(Backend as a Service,后端即服务)的第三方服务,或者依赖于在临时容器内运行的称为 FaaS(Function as a Service,函数即服务)的定制代码。

无服务器是指运行系统的公司或个人不必租用或购买运行后端代码的虚拟机。

无服务器计算的主要优势在于,它允许开发者可以自由地专注于应用程序的开发方面,而不需要考虑其他事情。无须升级现有服务器,也能快速、方便地部署。这将需要更少的时间,也不需要花费一分钱。

三、利用 DevSecOps 控制安全漏洞

大部分 DevOps 公司都在转向 DevSecOps,这是因为最近与安全漏洞相关事件增多。IT 公司将 DevSecOps 视为众多 DevOps 最佳实践之一。

将 DevSecOps 视为一种应用安全的方式,从一开始就在代码的各个方面构建了安全性。

在开发期间采取的安全措施将导致在此过程中加强合作。这样做会使该过程更加高效、更无错误、更有效。预期今后几年将有更多的人采用 DevSecOps。

通过提高自动化程度来节省时间。

快速检测错误,增强安全性,节省时间:自动化可以提供所有这些功能以及更多。这样,整个软件开发周期就不再需要手工作业。毫无疑问,工业化将在 2021 年扮演重要角色。

所以,DevOps 有六个特性,它们是:

    持续优化和反馈

    持续检测

    持续部署和发布

    持续测试

    协作开发

    持续的业务计划

四、基于云的原生 DevOps 的重要性日益增加

在使用云原生的 DevOps 时,要确保更好的用户体验、更好的转型和创新管理。这正是自动管理云服务的配置、监控和部署所需的技术。

使用云自动化,软件发布得更快。这样,一个光明的未来就在等待基于云的技术的到来。甲骨文认为,到 2025 年,80% 的企业工作负载都会转移到云端上。

另外,美国空军已经接受了云计算的原则,并采用敏捷的方式来开发在多种云格式下运行的应用。网格服务使用的增长

通过采用微服务,组织可以获得一些好处。开发人员使用微服务来提高可移植性,即使这并没有让 DevOps 团队的工作变得更容易。运营商需要管理大型多云和混合部署。

微服务的出现导致了服务网络的使用增加,有望降低部署的复杂性。服务网络提供了对微服务网络及其相互作用进行观察和管理的能力。这种构成提供了一个完整的服务视图。这对 SRE 和 DevOps 开发者满足端到端认证、访问控制、金丝雀部署和 A/B 测试等复杂操作需求非常有用。

你将看到采用率和产品的增长,因为它们是微服务成功运行的关键因素。服务网格是企业从单体转向微服务时必须跨越的十字路口。

以上是关于什么是DevOps的主要内容,如果未能解决你的问题,请参考以下文章

重新认识 DevOps

2:深入理解DevOps+微服务

Docker和CI/CD实战

自动化测试在京东数科的实践与探索

持续集成与自动化部署 - dev ops & 持续集成交付部署 介绍

基于Sonar推动DevOps流程中的代码质量优化