【DevOps】什么是 DevOps?

背景

本文是 DevOps 的初学者指南。了解有关 DevOps 实践、DevOps 在工程团队中的作用及其优势,以及其它更多信息

DevOps is a mix of Development and Operations that combines people from a distributed stack and tools used to create efficient applications with the development process to enable faster delivery of quality products.

By bringing together the people, tools, and processes, DevOps enables rapid development and delivery with a scope of incremental features added to the product.

DevOps 是开发和运营的混合体,它将来自分布式堆栈的人员和用于创建高效应用程序的工具与开发过程相结合,以实现更快地交付优质产品。

通过将人员、工具和流程结合在一起,DevOps 可以通过添加到产品中的一系列增量功能来实现快速开发和交付。

 【DevOps】什么是 DevOps?_第1张图片

 DevOps 是如何工作的?

DevOps 模型结合了开发团队和运营团队,以弥合“孤立”流程之间的差距。有时,跨这些流程的人员在一个联合团队中工作,以更快地开发和交付以实现业务目标。简而言之,一个由具有编码、部署(使用各种工具和应用程序)和维护应用程序技能的开发人员组成的团队在整个开发生命周期中协同工作以更快地部署产品。应用程序中添加了增量功能,以使其与客户满意度的最新趋势保持同步。

DevOps的作用是什么?

DevOps 使用各种 DevOps 工具将应用程序创建的主要部分(即开发、质量、部署、安全性)组合到一个流程中,以实现更快的应用程序交付。

DevOps 在您的工程团队中的好处

速度

由于同一流程中的多种技能协同工作,产品交付速度更快。更容易添加更新和功能以跟上市场标准并保持质量和客户满意度。

快速交货

由于交付速度的提高,可以更快地发布新功能。因此,现在可以根据市场需求和客户反馈修复错误、添加/更新功能以及添加产品,从而使应用程序能够在竞争激烈的市场中有效交付。

可靠性

由于交付速度更快,持续集成和持续交付等 DevOps 实践允许软件可靠性,即确保质量的新功能快速添加到应用程序中,同时用户继续获得流畅和优质的体验。

规模

由于快速交付和可靠性,添加到您的应用程序以使其根据业务需求可扩展,而不会影响用户体验。

改善协作

随着开发人员和运营团队分担责任以实现更快的交付,协作得到改善。团队可以根据共同的职责添加和即兴创作,从而减少移交和依赖关系之间的等待时间。

安全

DevOps 提供了一系列安全性和合规性测试/管理工具,因此您可以在不牺牲安全性的情况下即兴创作您的应用程序。

DevOps 在您的工程团队中的好处

软件条款已经从支持企业的在线形象转变为成为企业的一个关键方面。在这样的市场中,应用程序必须紧跟最新需求并动态适应趋势以促进业务发展并实现客户满意度。

DevOps 模型允许灵活地更快地部署业务就绪应用程序,并根据客户需求添加或更新应用程序。通过缩小应用程序开发过程的各个部分之间的差距,DevOps 可以快速部署高性能、快速增强和安全的应用程序。

使用正确的工具和正确的思维方式调整 DevOps对于成功实施和利用 DevOps 模型非常重要。

【DevOps】什么是 DevOps?_第2张图片

DevOps 实践

DevOps 是一种不断发展的模型,可根据不同的策略适应组织需求。敏捷思维支持 DevOps 和迭代开发模型。一些 DevOps 模型是敏捷、Scrum、看板等。

持续集成

不断对代码库进行更改,并根据新要求、客户反馈等添加新代码。自动运行构建和测试以确保更改符合要求的标准并遵守以前的功能。持续集成使所有开发人员都可以访问代码库,并定期推出新的更改,从而可以在需要的地方轻松进行重构。

详细了解持续集成对您的团队的好处。

持续交付

随着代码库的更新,将执行构建和检查以检查其是否正常工作。然后将代码移至预生产环境并进行测试,直到准备好投入生产。因此,团队始终存在可用于生产的代码,并经常添加新的更新。

阅读如何为您的项目从头开始设置CI/CD 管道。

微服务

微服务架构将单个应用程序分解为通过安全网络相互交互的小服务。每个服务独立运行其进程,同时与其他微服务通信以完成更大的任务。由于每个微服务都可以独立部署,因此可以更快地推出更新,并且可以快速查明和修复错误。

DZone 最受欢迎的文章之一,什么是微服务?详细介绍了微服务。

基础设施即代码 (IaC)

基础设施即代码允许用户以脚本或代码的形式管理和实施基础设施,可以像任何其他代码更改一样进行管理。版本控制、频繁更新和还原是 IaC 实践的一些功能。Terraform 是 IaC 工具的一个示例,用于管理应用程序的整个基础架构生命周期。

作为一个易于扩展的基础设施,可以根据需要进行管理。了解您可以在IaC 实施中遵循的最佳实践。

监控和记录

随着应用程序在全球 24/7 全天候使用,主动监控应用程序的用户活动、功能差异和意外错误等变得更加重要。通过记录和监控,团队可以针对特定错误设置警报、管理基础架构和软件工作,并更快地查明错误和错误。

详细了解用于监控应用程序的不同DevOps 工具。

沟通与协作

DevOps 文化通过将来自不同开发和运营工作流程的人员聚集在一起来鼓励沟通和协作。在团队之间交流需求和挑战并有效地协作解决和部署它们是 DevOps 团队模型的一部分。实现这一目标需要适当的团队间沟通工具。

本文重点介绍DevOps 团队中的团队沟通以及用于团队间协作的工具。

【DevOps】什么是 DevOps?_第3张图片

DevOps 工具链

工具链是编程世界中用于实现业务目标的一组工具。DevOps 还使用此类编程工具在开发人员和运维工程师之间进行协作和协调。使用它们,团队可以更快地编程、测试和部署应用程序。这些工具有多种用途,从通信和版本控制到用于质量检查和部署的自动化管道。

计划

计划是任何项目的第一步。确定业务计划和需求,然后将其分解以供开发团队使用,这是规划过程的一部分。

一些用于规划的工具包括 - Git、Jira 等。

代码

在规划之后,这是执行阶段的一部分,在此阶段根据设计实施软件的实际开发。

用于编码的工具包括 - GitHub、GitLab、Atlassian、Bitbucket 等。

建造

与以前开发人员必须手动运行构建和检查代码不同,自动构建在此阶段进行配置和运行。检查,如代码质量,也可以与同时部署一起添加到构建中。

此阶段使用的工具包括 - Docker、Jenkins、Gradle、Maven 等。

测试

测试是开发过程中不可或缺的一部分。在此阶段,手动或通过自动化测试代码。

此阶段涉及的工具包括 - JUnit、Selenium、TestNG、Soap 等。

部署

此阶段包括通过自动发布到生产环境来部署软件。部署构建被安排、协调,然后运行以完成此过程。

此阶段使用的工具包括 - Jenkins、Kubernetes、Docker 等。

操作

生产期间的软件管理属于此阶段。

支持此阶段的工具有 - Ansible、Powershell、Puppet 等。

监视器

由于应用程序仍处于部署状态,因此监视应用程序以捕获此阶段可能发生的任何错误或错误非常重要。使用各种监控工具可以快速隔离任何错误或问题。

此阶段使用的工具包括 - Grafana、Splunk、Datalog、Wireshark 等。

DevOps 工具列表

各种工具用于实现将开发和运营结合在一起的 DevOps 目标。虽然这些工具没有定义 DevOps,但它们极大地帮助了流程自动化,这是 DevOps 的另一个目标。 

借助正确的工具,团队可以轻松协调和协作,以减少需求生成和部署之间的差距。

50+ 有用的 DevOps 工具一文包括详细的工具列表,您可以在项目中使用这些工具来实现您的 DevOps 目标。

 DevOps 的左移原则是什么

在任何正常的开发周期中,都会对不同的模块进行更改,然后将它们组合在一起并进行测试以实现复杂的业务目标。在此过程中,集成测试在稍后阶段执行,在该阶段可能会在软件组合在一起时检测到问题。错误、错误和其他跨平台依赖问题会在更晚的阶段被检测到,然后解决这些问题的过程会被匆忙地完成,以达到设定的最后期限。

DevOps 中的“左移”原则是指将测试(主要是集成测试)转移到开发的早期阶段,并随着需求的实现而添加到测试中。

这需要对以代码为主要优先事项的业务思维进行文化变革。许多组织现在都在使用这种方法在早期阶段检测问题,从而节省大量时间和后期维护。

敏捷中的测试驱动开发侧重于根据需求测试和编写测试用例,然后添加代码来支持。同样,左移原则侧重于开发生命周期早期阶段的集成测试,以实现综合目标。

“左移原则和 DevOps”更详细地介绍了左移原则的推理、历史和正确实施。

【DevOps】什么是 DevOps?_第4张图片

什么是 DevSecOps?

DevOps 模型使团队能够一起工作并以更快的速度交付,同时克服敏捷的缺点。

安全性是任何应用程序都不应该妥协的东西。开发人员通过牢记应用程序的安全性来实施更改。安全的基础设施、服务之间的通信以及代码安全中可能存在的数据泄漏都是开发、测试和部署过程的重要组成部分。

DevSecOps 是一个为开发和运营增加安全性的术语。由于从一开始就将安全作为开发过程的一部分,因此可以更快地开发安全可靠的应用程序。可以根据业务需求和客户反馈添加新的更改。

DevSecOps 旨在将安全性集成到开发生命周期的每个阶段。因此,安全性不仅仅是一个需要注意的参数,应用程序的构建方式是从规划阶段就考虑到安全性。这导致从一开始就安全的应用程序,而不是稍后添加安全性并根据要求修改已完成的代码并发现漏洞。

要了解有关 DevSecOps 的更多信息,请参阅数据:什么是 DevSecOps?是快速阅读,我们的参考卡 DevSecOps介绍更详细地介绍了 DevSecOps。

DevOps 和 SRE 之间有什么区别?

SRE 或站点可靠性工程侧重于自动化或完成通常由运营团队通过开发人员或运营工程师完成的任务,他们使用一组工具或软件来自动化任务。这将执行的大部分操作汇集在一起​​,消除了对项目单独管理部分的需要,从而将软件开发下的模块汇集在一起​​。

SRE 专注于自动化运营,而 DevOps 则专注于将开发和运营团队聚集在一起。两个团队都清楚地了解另一个团队所做的要求和更改,从而弥合了不同流程之间的差距以及协调信息和同步发布周期所需的时间。

DevOps 和 SRE 的共同目标是消除传统的分离方法,并将依赖的流程整合到一个流程中。但是,DevOps 和 SRE 实现这一目标的方式有所不同。

这篇关于DevOps 和 SRE 区别的文章更加详细,提供了有关 SRE 和 DevOps 实践的更多信息。

DevOps 词汇表

敏捷。一种基于计划、开发、测试和部署的重复循环的软件开发方法。

自动化。将进程/任务配置为自行运行而不是手动执行。

部署。在开发范式中,部署是指计划、开发/配置、测试,然后在特定环境中运行更改以供用户使用。

一体化。 集成是指将各种模块组合在一起作为一个单一的系统。

发布。 版本是提供给最终用户的定期更新或最新版本。

重构。 更改或更新现有功能或代码以进行改进或添加新更新,同时保持相同的行为。

孤立的。 与其他对应物隔离或分开。

版本控制。 版本控制是为同一产品的不同版本分配唯一的名称/编号。

建议了解 DevOps 中使用的所有术语,以更有效地理解模型。我们的文章100 个 DevOps 术语详细介绍了您在 DevOps 世界中需要了解的所有术语。

实现Devops自动化工具整理

持续构建(Continuous Build,CB)持续集成(Continuous Integration,CI)持续交付(Continuous Delivery,CD)自动化测试(Auto Testing, AT)自动化运维

版本控制&协作开发 GitHub、GitLab、BitBucket、Coding、Gitee
自动化构建和测试 Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、Nexus
持续集成&交付 Jenkins、bamboo、Capistrano、BuildBot、Fabric、Travis CI、flow.ci Continuum、CruiseControl、TeamCity、Spinnaker
容器平台 Docker、Rocket、Ubuntu(LXC)、AWS、阿里云
配置管理 Saltstack、Ansible、Vagrant、Chef、Puppet、CFengine、Rudder、RunDeck
微服务平台 OpenShift、Pivotal Cloud Foundry、Kubernetes、Mesosphere、Istio、Docker Swarm
日志管理 Logstash、Fluentd
监控,警告&分析 Nagios、Ganglia、Sensu、Zabbix、ICINGA、Graphite、DataDog、Kibana、Prometheus
安全测试 blackduck、coverity、sonarQube、burp suite


 

结论

近年来,DevOps 获得了很大的普及。随着敏捷组织转向云来满足他们的所有需求,DevOps 获得了更多关注,因为它是实现更快部署的一种手段。安全性也是采用 DevOps 的组织的主要关注点,因此出现了 DevSecOps 一词。

DZone 不断致力于添加科技界的最新内容和热门话题。我们为从初学者到专家的所有人提供内容,包括有趣的主题、教程、解决方案和科技界的辩论。

要了解有关 DevOps 的更多信息、最新的 DevOps 趋势或做出贡献,请访问我们的DevOps 专区。

你可能感兴趣的:(#,CI持续集成,TestOps,devops)