devops 前一阵很是火热,简单说就是"研发/运维/测试/产品"的那点事,但一直没有去深刻理解,直到最近用了jenkins后,才熟悉了一遍这些专用名词之间的关系,简要总结以下:运维
通常的,整个产品项目的开发流程即以下:ide
编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署测试
-------------------------------------------------------------------------------------------------编码
1)持续集成(Continuous Integration CI)spa
集成:就是将内容聚合到一块儿,代码commit是集成(代码在一块儿),部署是集成(代码跟环境在一块儿),测试是集成(功能在一块儿),灰度是集成(系统在一块儿);设计
此部分重点是由各个开发和各个测试将整个项目代码集成到一块儿,不断地修改和聚合就产生了持续集成;orm
持续化集成能够大大节省聚合的效率,减小人为沟通,遵循规则。blog
2)持续交付(Continuous Delivery CD)ip
交付:就是将产品项目发布到线上环境,给用户使用(准确说不须要项目所有完成,利于可视化进度);开发
此部分通常由研发/运维来完成, 从原始需求到最终产品的过程,为了项目进行透明化可控制,须要以频繁的以最小粒度进行交付反馈。从需求分析、产品的用户体验到交互 设计、开发、测试、运维等角色密切协做,相比于传统的瀑布式软件团队,更少浪费;
持续化交付能够更快速、更便捷、更自动化的完成频繁的交付。
3)持续部署(Continuous Deployment)
部署:就是持续的将需求部署到目标环境上;
持续部署通常是运维来完成,将已经集成并交付完成的项目,部署到生产环境应用;
储蓄化部署能够更快速、更方便、更准确的部署到生产环境,减轻人为步骤,减小人为失误。
4)开发运维(Development Operations DevOps)
开发运维:是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障、运维部门之间的沟通、协做与整合,使产品按时上线;
持续集成、持续交付、持续部署提供了一个优秀的 DevOps 环境。不管什么时候,频繁部署、快速交付以及开发测试流程自动化都将成为将来软件工程的重要组成部分,而持续部署和快速持续交付就是咱们运维人员须要完成的。