概念

先看看Wiki百科上的描述

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary with Agile software development; several DevOps aspects came from the Agile methodology.


我们再来用中文,更完整地描述下DevOps:

DevOps是由“Development”和“Operations”这两个词组合而成的。“development”和“operations”表示开发团队和IT运维团队,在DevOps出现之前开发团队、质量保证团队、运维团队都是独立运作的,因此会导致协作障碍。DevOps表示一种文化转变,它在这些团队之间架起了桥梁,从而使这些团队能够在目标一致的环境中精诚协作。

DevOps是一组实践,这组实践可以紧密集成这些团队之间的流程,并且将集成后的流程变得高度自动化,因此通过DevOps实践可以更快、更有质量保证地构建、测试和发布软件。 

另外,我们还需要理解DevOps和敏捷的关系。敏捷方法中对软件交付速度和交付体量的要求不断提高,才形成了DevOps实践。我们认为,DevOps是敏捷软件开发的产物。DevOps通过提供用于持续集成和持续部署的框架来提高敏捷性。我们也认为,敏捷是实施DevOps的先决条件。

发布频率

DevOps的特点是软件可以按需发布,也就是有极高的发布频率。您可以通过下表的对比来了解DevOps的特征。


开发模式开发周期部署频率图例(=开发 !发布)
1瀑布(Waterfall)长期(按月、按季度规划)按年(例如1年4次)=============!
2敏捷(以Scrum为例)迭代周期(通常为1周到4周)按迭代(例如每2周1次)====!====!====!
3DevOps需求开发周期(通常按天计算)按需(例如每天几次)=!=!=!=!=!=!=!=!=!

各团队间的协作方式转变



DevOps之前DevOps之后
1目标

各团队有各自不同的目标

目标一致

2环境各团队使用自有的环境使用相同的环境
3工具各团队自己选择工具使用兼容的统一工具
4任务优先级各团队独自设置任务优先级在统一规划下安排任务优先级
5心态自扫门前雪协作共赢,相互成就
6问题处理互相指责反思、持续改进