传统IT技术团队中通常都有多个独立的组织-开发团队、测试团队和运维团队。开发团队进行软件开发、测试团队进行软件测试,运维团队致力于部署,负载平衡和发布管理。 他们之间的职能有时重叠、有时依赖、有时候会冲突。
因为衔接与沟通问题,有时会导致开发-测试-发布的周期太长了,特别是对于互联网公司,时间就是生命。从而需要建立一支由开发,质量保证和运营组成的混合专业知识的团队的需求,并引入了DevOps来弥合团队之间的鸿沟,帮助他们快速而可靠地操作和开发应用程序。
一、什么是DevOps?
顾名思义,Devops是“开发”与“运维”的缩写。它定义了一组流程,这些流程通过在开发和运维团队之间进行协作带来组织文化上的转变。它包含四个关键组件:协作,实践,文化和工具。
二、为什么我们需要DevOps?
DevOps带来更高水平的协作和速度,使组织提高生产力,降低运营成本以有效地为客户提供服务并保持市场竞争力。它还有助于更快地发布产品,管理计划外的工作,更快地捕获和解决关键问题。
三、DevOps实践
独立devops团队 DevOps使用各种工具,例如docker、k8s、Jenkins,Terraform,Nagios,Grafana,Prometheus或Splunk等,组织应建立一个集中部门来创建和操作这些工具。这个集中管理部门负责开发团队中的敏捷实践设置,该团队将研究新的工具并坚持使用,并提供指导程序和培训以实施DevOps。该部门核心工作内容是追求测试、集成、部署的自动化,减少人员参与、降低沟通成本、弥合技术团队之间的鸿沟。
持续集成(CI)
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,以及市场上可用的更多工具。
喜欢 (0)or分享 (0)