本文转自:http://www.javashuo.com/article/p-azkcudbb-dq.html架构
DevOps的出现有其必然性。在软件开发生命周期中,遇到了两次瓶颈。运维
第一次瓶颈是在需求阶段和开发阶段之间,针对不断变化的需求,对软件开发者提出了高要求,后来出现了敏捷方法论,强调适应需求、快速迭代、持续交付。工具
第二个瓶颈是在开发阶段和构建部署阶段之间,大量完成的开发任务可能阻塞在部署阶段,影响交付,因而有了DevOps。
DevOps的三大原则:
一、基础设施即代码(Infrastructure as Code)
DeveOps的基础是将重复的事情使用自动化脚本或软件来实现,例如Docker(容器化)、Jenkins(持续集成)、Puppet(基础架构构建)、Vagrant(虚拟化平台)等
二、持续交付(Continuous Delivery)
持续交付是在生产环境发布可靠的软件并交付给用户使用。而持续部署则不必定交付给用户使用。涉及到2个时间,TTR(Time to Repair)修复时间,TTM(Time To Marketing)产品上线时间。要作到高效交付可靠的软件,须要尽量的减小这2个时间。部署能够有多种方式,好比蓝绿部署、金丝雀部署等。
三、协同工做(Culture of Collaboration)
开发者和运维人员必须按期进行密切的合做。开发应该把运维角色理解成软件的另外一个用户群体。协做有几个的建议:一、自动化(减小没必要要的协做);二、小范围(每次修改的内容不宜过多,减小发布的风险);三、统一信息集散地(如wiki,让双方可以共享信息);四、标准化协做工具(好比jenkins)
附上DevOps的定义:
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合做的文化、运动或惯例。测试
透过自动化“软件交付”和“架构变动”的流程,来使得构建、测试、发布软件可以更加地快捷、频繁和可靠。.net