1. 什么是DevOps
根据维基百科对DevOps的定义:
DevOps(开发 Development 与 运维 Operations 的组合词)是一种文化、一场运动或实践,强调在自动化软件交付流程及基础设施变更过程中,软件开发人员与其他信息技术(IT)专业人员彼此之间的协作与沟通。它旨在建立一种文化与环境,使构建、测试、软件发布得以快速、频繁以及更加稳定地运行。
2. DevOps所要解决的问题
在单体应用架构中,一个业务需求只需要修改单体应用的代码,然后针对这个单体应用进行测试,测试通过后就可以上线。而如今会把项目拆分为微服务,拆分之后,一个大的系统会被拆分为多个小系统,一个业务需求可能要同时修改多个微服务的代码,这样的话每个微服务都需要进行测试,工作量成倍增加,这时候我们就需要一种把开发、测试和运维自动一体化来解决这个问题。
DevOps通过将开发、测试和运维流程自动化,以减轻微服务拆分后带来的测试和运维复杂度的提升,同时还提高了业务研发的效率。DevOps除了包括流程的自动化处理,还包括监控决策、在线自动扩缩容等。
3. DevOps流程
DevOps流程包含:计划(plan)、编码(code)、编译(build)、测试(test)、发布(release)、部署(deploy)、运营(operate)、监控(monitor),这是一个循环的过程。
- plan:开发团队根据客户的目标制定开发计划
- code:根据plan开始编码过程,需要将不同版本的代码存储在一个库中
- build:编码完成后,需要将代码构建并且运行
- test:成功构建项目后,需要测试代码是否存在BUG或错误
- release:测试通过后,把最新稳定代码发布到代码仓库里面去
- deploy:准备好后,进行项目部署,并且交给运维团队
- operate:运维团队将代码部署到生产环境中
- monitor:项目部署上线后,需要持续的监控产品
INTEGTATE:将监控阶段的反馈发送给plan阶段,整体反复的流程就是DevOps的核心,即持续集成、持续部署。
4. DevOps平台和工具
选择支持流程的工具对于DevOps的成功至关重要。运维团队要跟上快速开发周期,就需要利用高度灵活的平台,并像开发团队对待代码一样,对待平台的基础架构。手动部署不仅速度慢,而且可能出错。
因此,可通过自动化来简化平台制备和部署。站点可靠性工程(Site Reliability Engineer:SRE,主要目标是创建可扩展和高可用的软件系统)承担这些手动操作任务,并使用软件和自动化对其进行管理。SRE方法可以进一步支持DevOps团队的目标。
容器可以方便地在开发、测试和生产环境之间移动应用。开发人员可以利用容器打包并隔离应用及其运行所需的一切,包括程序文件、运行环境、依赖库和配置。
5. DevOps和Kubernetes
DevOps方法加上Linux容器,可为团队提供云原生开发所需的底层技术。容器支持集开发、交付、集成和自动化一体的统一环境。
而Kubernetes 是实现Linux容器操作自动化的现代方法。Kubernetes可帮助轻松高效地管理在公共云、私有云或混合云中进行Linux容器的集群。
6. 小结
DevOps是依托容器、自动化、云计算技术以及精益化管理形成的一种项目过程,有效的促进了开发、测试、运营、运维等团队之间的协作,使得团队内、跨团队之间的协作得到极大的提升。
从项目的全生命周期来看,DevOps实现了项目全生命周期的团队高效协作、自动化。DevOps的职责包括:开发和运维的紧密协作、测试和运维的自动化、产品持续交付、持续集成。
参考链接:
https://www.redhat.com/zh/topics/devops
https://blog.csdn.net/weixin_43388691/article/details/130082659
https://www.cnblogs.com/likewpp/p/11801785.html
https://www.jianshu.com/p/631599a86631