devops 前一阵非常火热,简单说就是"研发/运维/测试/产品"的那点事,但一直没有去深入理解,直到最近用了jenkins后,才熟悉了一遍这些专用名词之间的关系,简要总结如下:

一般的,整个产品项目的开发流程即如下:

编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署

-------------------------------------------------------------------------------------------------

1)持续集成(Continuous Integration CI)

集成:就是将内容聚合到一起,代码commit是集成(代码在一起),部署是集成(代码跟环境在一起),测试是集成(功能在一起),灰度是集成(系统在一起);

此部分重点是由各个开发和各个测试将整个项目代码集成到一起,不断地修改和聚合就产生了持续集成;

持续化集成可以大大节省聚合的效率,减少人为沟通,遵循规则。

2)持续交付(Continuous Delivery CD)

交付:就是将产品项目发布到线上环境,给用户使用(准确说不需要项目全部完成,利于可视化进度);

此部分一般由研发/运维来完成, 从原始需求到最终产品的过程,为了项目进行透明化可控制,需要以频繁的以最小粒度进行交付反馈。从需求分析、产品的用户体验到交互 设计、开发、测试、运维等角色密切协作,相比于传统的瀑布式软件团队,更少浪费;

持续化交付可以更快速、更便捷、更自动化的完成频繁的交付。

3)持续部署(Continuous Deployment) 

部署:就是持续的将需求部署到目标环境上;

持续部署一般是运维来完成,将已经集成并交付完成的项目,部署到生产环境应用;

储蓄化部署可以更快速、更方便、更准确的部署到生产环境,减轻人为步骤,减少人为失误。

4)开发运维(Development Operations DevOps)

开发运维:是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障、运维部门之间的沟通、协作与整合,使产品按时上线;

持续集成、持续交付、持续部署提供了一个优秀的 DevOps 环境。无论何时,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分,而持续部署和快速持续交付就是我们运维人员需要完成的。

http://www.infoq.com/cn/articles/devops-not-legend/

wKiom1kAxtPQ55iqAADNPp-dm7E191.png

wKiom1kAxtPAosW4AACxk8IRiHo149.png