传统IT技术团队中一般都有多个独立的组织-开发团队、测试团队和运维团队。开发团队进行软件开发、测试团队进行软件测试,运维团队致力于部署,负载平衡和发布管理。 他们之间的职能有时重叠、有时依赖、有时候会冲突。vue
由于衔接与沟通问题,有时会致使开发-测试-发布的周期太长了,特别是对于互联网公司,时间就是生命。从而须要创建一支由开发,质量保证和运营组成的混合专业知识的团队的需求,并引入了DevOps来弥合团队之间的鸿沟,帮助他们快速而可靠地操做和开发应用程序。ios
顾名思义,Devops是“开发”与“运维”的缩写。它定义了一组流程,这些流程经过在开发和运维团队之间进行协做带来组织文化上的转变。它包含四个关键组件:协做,实践,文化和工具。spring
DevOps带来更高水平的协做和速度,使组织提升生产力,下降运营成本以有效地为客户提供服务并保持市场竞争力。它还有助于更快地发布产品,管理计划外的工做,更快地捕获和解决关键问题。docker
独立devops团队
DevOps使用各类工具,例如docker、k8s、Jenkins,Terraform,Nagios,Grafana,Prometheus或Splunk等,组织应创建一个集中部门来建立和操做这些工具。这个集中管理部门负责开发团队中的敏捷实践设置,该团队将研究新的工具并坚持使用,并提供指导程序和培训以实施DevOps。该部门核心工做内容是追求测试、集成、部署的自动化,减小人员参与、下降沟通成本、弥合技术团队之间的鸿沟。后端
持续集成(CI)springboot
CI是一种软件开发实践,可改善团队之间的协做并有助于构建高质量的软件。开发团队会按期检入存储库中的代码更改,CI会执行自动构建和测试以验证代码质量。持续集成所采用的实践能够在早期阶段快速检测出软件开发生命周期(SDLC)的挑战,从而有助于开发团队在开发阶段自己解决问题。服务器
持续交付/部署(CD)网络
部署过程具备不一样的阶段,例如开发→构建→验证→构建版本控制→部署→后部署等。持续部署过程的思想是,在构建经过QA阶段的全部阶段后,将已开发的代码自动部署到生产环境中。 -beta,Integration,UAT等。有一些可用的工具,例如Spinnaker,Jenkins,Harness,Ansible,Chef,Puppet等,使DevOps团队能够创建自动化管道,以最少的人工干预就能够在多个环境中进行部署。架构
持续交付是DevOps的一种实践,其中新的代码库由QA团队在自动和手动QA周期的不一样阶段进行测试。若是代码库经过了QA周期并获得QA团队的批准,则它将部署到生产环境中。经过这种方式,DevOps将团队划分为较短的周期,从而使团队可以更快,更频繁地构建,测试和发布代码库。这使组织可以提供更多版本,减小手动部署,并将生产中的故障风险降至最低。前后端分离
配置管理(CM)
配置和变动管理是DevOps周期的重要组成部分。配置管理是对基础结构和系统的全部实体(例如服务器,应用程序,存储,网络和全部托管服务)进行配置,监视,管理和维护的自动化。也有许多的集中配置管理工具可使用,好比:nacos、apollo等。
配置管理带来了许多优点,例如简化了新环境的设置,下降了生产配置的风险,并节省了软件开发的大量时间,而无需花费时间和精力来使用基础结构即代码实践从头开始新服务。
变动管理
变动管理是一个请求,计划,实施和评估知足新要求所需的变动的过程。在配置管理过程当中,若是现有系统和基础架构中须要进行任何更改,那么此时就要考虑更改管理。运营团队须要提供他们的意见,更改的缘由,以及可能在更大范围内产生的后果,包括可能受到新更改影响的其余系统。
测试自动化
每一个代码库的自动测试有助于运行更多测试,提升测试频率,并节省手动QA上花费的时间。此过程可及早发现错误,修复错误,并提升总体软件质量。有几种工具能够与DevOps工具集成,例如Selenium,RobotFramework,Appium,XCUITest,JUnit等,以实现自动化的测试。
持续监控(CM)
持续监控建议使用几种工具,仪表板和警报来监视全部系统和基础架构,包括对影响软件的不一样指标的实时洞察,例如系统性能,测试次数,成功和失败率,部署状态,错误日志以及全部信息以图形,表格和详细报告格式显示。为了完成这样的监视,DevOps团队能够设置一些工具,例如Prometheus,Grafana,Nagios,Appdynamics,NewRelic,Splunk,Logstash,以及市场上可用的更多工具。
以为对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创做动力! 。另外,笔者最近一段时间输出了以下的精品内容,期待您的关注。