什么是 DevOps
百度百科定义
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合
- 其实就是软件开发整条生命周期内开发与运维以及测试人员协作和沟通的最佳实践
- 强调了整个组织的合作以及交互和基础设施变更的自动化、从而实现持续集成、持续部署和持续交付
几张图解
DevOPs 特点
- 强调团队协作、互相协作、持续发展
- 开发、运维、测试人员最终目的:
- 最终的持续交付
- 业务的稳定
- 持续的更新
- 业务系统的设计、开发、测试、部署的良性循环
持续集成
Continuous integration (CI)
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
- 快速发现错误
- 防止分支大幅度偏移主干
- 可以使产品快速的迭代,同时还保持高质量
- ”不能消除Bug,而是让他们非常容易发现和改正“
- 代码集成到主干之前,必须通过自动化测试,只要一个测试用例失败,就不能集成
持续部署
Continuous deployment(CD)
代码通过评审后,自动部署到生产环境,CI 流程的下一步
- 代码在任何时刻都是可部署的,可以进入生产阶段
- 前提是自动化测试通过
持续交付
Continuous Delivery
在持续部署的基础上,将产品交付到线上环境,是一种产品价值的一种交付
- 不管怎么更新,产品是可以随时随地交付的
开发流程
整体的软件开发流程包括:
- PLAN:开发团队根据客户的目标制定开发计划
- CODE:根据 PLAN 开始编码过程,需要将不同版本的代码存储在一个库中。
- BUILD:编码完成后,需要将代码构建并且运行。
- TEST:成功构建项目后,需要测试代码是否存在 BUG 或错误。
- DEPLOY:代码经过手动测试和自动化测试后,认定代码已经准备好部署并且交给运维团队。
- OPERATE:运维团队将代码部署到生产环境中。
- MONITOR:项目部署上线后,需要持续的监控产品。
- INTEGRATE:然后将监控阶段收到的反馈发送回 PLAN 阶段,整体反复的流程就是 DevOps 的核心,即持续集成、持续部署。