DevOps是Development和Operations的组合,也就是开发和运维的简写。

DevOps是针对企业中的研发人员、运维人员和测试人员的工作理念,是他们在应用开发、代码部署和质量检测等整条生命周期中协作和沟通的最佳实践。

DevOps强调整个组织的合作以及交付和基础设施变更的自动化,从而实现持续集成、持续部署和持续交付。

什么是DevOps

dev-1

为什么要推广DevOps

DevOps强调团队协作、相互协助、持续发展,然而传统的模式是开发人员只顾开发程序,运维只负责基础环境管理和代码部署及监控,其并不是为了一个共同的目标而共同实现最终的目的,儿DevOps则实现团队作战,即无论是开发、运维还是测试,都为了最终的代码发布、持续部署和业务稳定而付出各自的努力,从而实现产品设计、开发、测试和部署的良性循环,实现产品的最终持续交付。

传统技术团队

dev-2

DevOps技术团队

戴明环

dev-3

什么是持续集成(CI)

CI-Continuous Integration

持续集成是指多名开发者开发不同功能代码的过程中,可以频繁的将代码合并到一起并且相互不影响工作。

什么是持续部署(CD)

CD-Continuous Deployment

持续部署是基于某种工具或平台实现代码自动化的构建、测试和部署到线上环境以实现交付高质量的产品,持续部署在某种程度上代表了一个开发团队的更新迭代速率。

什么是持续交付

持续交付是在持续部署的基础上,将产品交付到线上环境,因此持续交付是产品价值的一种交付,是产品价值的一种盈利的实现。

常见的部署方式

  • 开发自己上传——最原始的方案
  • 开发给运维手动上传——运维自己手动部署
  • 运维使用脚本复制——半自动
  • 结合web界面一键部署——自动化

常见的持续集成开源工具

在公司服务器安装的某种程序,该程序用于按照特定格式和方式记录和保存公司多名开发人员不定期提交的源代码,后期可以按照某种标记及方式对用混提交的数据进行还原。

CVS(Concurrent Version System)

早期的集中式版本控制系统,现基本淘汰(会出现数据提交后不完整的情况)

SVN(Subversion)

集中式版本控制系统,2000年开始开发,目标是替代CVS集中式管理,依赖于网络,一台服务器集中管理,目前依然有部分公司在使用。

Git

分布式版本控制系统,详细说明参考本站的另一文章:Git 了解一下不?

版本控制系统分类

集中式版本控制系统

任何提交和回滚都依赖于连接服务器,SVN服务器是单点

分布式版本控制系统

Git:每个用户都是一个完整的版本库,即使没有中央服务器也可以提交和回滚代码,最终再把改好的代码提交至中央服务器进行合并即可。