DevOps是什么?如何正确理解DevOps ?

 

什么是DevOps?

 

DevOps是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)、持续交互(CD)为基础,来优化程式开发、测试、系统运维等所有环节。

DevOps 强调开发人员运维人员(IT人员)的合作,实现软件交付和基础设施变更的自动化。它旨在建立一种可以快速、频繁、可靠地构建、测试和发布软件的文化。

 

为什么选择Devops?

DevOps是一种软件开发方法,涉及软件在整个开发生命周期中的持续开发,持续测试,持续集成,持续部署和持续监控。

 这些活动只能在DevOps中实现,而不是敏捷或瀑布,这就是为什么顶级互联网公司选择DevOps作为其业务目标的前进方向。 DevOps是在较短的开发周期内开发高质量软件的首选方法,可以提高客户满意度。 

Devops能够实现如下:

  • 持续开发

这是DevOps生命周期中软件不断开发的阶段。与瀑布模型不同的是,软件可交付成果被分解为短开发周期的多个任务节点,在很短的时间内开发并交付。

这个阶段包括编码和构建阶段,并使用Git和SVN等工具来维护不同版本的代码,以及Ant、Maven、Gradle等工具来构建/打包代码到可执行文件中,这些文件可以转发给自动化测试系统进行测试。 

  • 持续测试

在这个阶段,开发的软件将被持续地测试bug。对于持续测试,使用自动化测试工具,如Selenium、TestNG、JUnit等。这些工具允许质量管理系统完全并行地测试多个代码库,以确保功能中没有缺陷。在这个阶段,使用Docker容器实时模拟“测试环境”也是首选。一旦代码测试通过,它就会不断地与现有代码集成。

  • 持续集成

这是支持新功能的代码与现有代码集成的阶段。由于软件在不断地开发,更新后的代码需要不断地集成,并顺利地与系统集成,以反映对最终用户的需求更改。更改后的代码,还应该确保运行时环境中没有错误,允许我们测试更改并检查它如何与其他更改发生反应。

Jenkins是一个非常流行的用于持续集成的工具。使用Jenkins,可以从git存储库提取最新的代码修订,并生成一个构建,最终可以部署到测试或生产服务器。可以将其设置为在git存储库中发生更改时自动触发新构建,也可以在单击按钮时手动触发。

  • 持续部署

它是将代码部署到生产环境的阶段。 在这里,我们确保在所有服务器上正确部署代码。 如果添加了任何功能或引入了新功能,那么应该准备好迎接更多的网站流量。 因此,系统运维人员还有责任扩展服务器以容纳更多用户。

由于新代码是连续部署的,因此配置管理工具可以快速,频繁地执行任务。 Puppet,Chef,SaltStack和Ansible是这个阶段使用的一些流行工具。

容器化工具在部署阶段也发挥着重要作用。 Docker和Vagrant是流行的工具,有助于在开发,测试,登台和生产环境中实现一致性。 除此之外,它们还有助于轻松扩展和缩小实例。

  • 持续监控

这是DevOps生命周期中非常关键的阶段,旨在通过监控软件的性能来提高软件的质量。这种做法涉及运营团队的参与,他们将监视用户活动中的错误/系统的任何不正当行为。这也可以通过使用专用监控工具来实现,该工具将持续监控应用程序性能并突出问题。

使用的一些流行工具是Splunk,ELK Stack,Nagios,NewRelic和Sensu。这些工具可帮助密切监视应用程序和服务器,以主动检查系统的运行状况。它们还可以提高生产率并提高系统的可靠性,从而降低IT支持成本。发现的任何重大问题都可以向开发团队报告,以便可以在持续开发阶段进行修复。

这些DevOps阶段连续循环进行,直到达到所需的产品质量。下面的图表将显示可以在DevOps生命周期的哪个阶段使用哪些工具。

 

DevOps实现工具

对于开发者而言,最有力的工具就是自动化工具”。工具链的打通使得开发者们在交付软件时可以完成生产环境的构建、测试和运行。Devops常见的工具如下:

  • 代码管理(SCM):GitHubGitLabBitBucketSubVersion
  • 构建工具:AntGradlemaven
  • 自动部署:JenkinsCapistranoCodeDeploy
  • 持续集成(CI):BambooHudsonJenkins
  • 配置管理:AnsibleChefPuppetSaltStackScriptRock GuardRail
  • 容器:DockerLXC、第三方厂商如AWS
  • 编排:KubernetesCoreApache MesosDC/OS
  • 服务注册与发现:ZookeeperetcdConsul
  • 脚本语言:pythonrubyshell
  • 日志管理:ELKLogentries
  • 系统监控:DatadogGraphiteIcingaNagios
  • 性能监控:AppDynamicsNew RelicSplunk
  • 压力测试:JMeterBlaze Meterloader.io
  • 预警:PagerDutypingdom、厂商自带如AWS SNS
  • HTTP加速器:Varnish
  • 消息总线:ActiveMQSQS
  • 应用服务器:TomcatJBoss
  • Web服务器:ApacheNginxIIS
  • 数据库:MySQLOraclePostgreSQL等关系型数据库;cassandramongoDBredisNoSQL数据库;
  • 项目管理(PM):JiraAsanaTaigaTrelloBasecampPivotal Tracker

 

 

 

 

 、、、持续完善中....

 

、、、

参考来源:https://www.zhihu.com/question/58702398

、、、

posted @ 2022-06-05 10:47  i潘小潘  阅读(864)  评论(0编辑  收藏  举报