企业级DevOps技术与工具实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 什么是DevOps

什么是DevOps,这是一个简单的问题,但是这个问题却很难回答。从不熟悉到熟悉的过程中,了解定义是非常重要的,但非常遗憾的是,目前关于 DevOps 还没有一个统一的、能够被所有人接受的定义。虽然没有统一和清晰的定义,但是很多提供 DevOps 服务的厂商以及研究机构都早已给出了它们自己对DevOps的定义,让我们以这些内容为基础来认识DevOps吧。

横看成岭侧成峰,角度不同结论往往也会有所不同。了解不同的定义对理解 DevOps 有很大帮助。下面来看一下百度百科和维基百科中对DevOps的定义。

百度百科:DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序和软件工程等)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到,为了按时交付软件产品和服务,开发团队和运营团队必须紧密合作。

解读:可以很清晰地看到DevOps的构词方式,它是由Development(开发)和Operations (运维)组成的。DevOps强调合作和跨团队的协作,强调将过程和方法进行融合,注重的是方法论和文化。

维基百科:DevOps(Development 和 Operations 的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。其通过对“软件交付”和“架构变更”的流程进行自动化,使得构建、测试、发布软件更加快捷、频繁和可靠。

解读:维基百科除了对构词及团队沟通合作进行了说明,还提到了自动化和基础架构在构建、测试、发布等软件生命周期中所起到的作用。

除了百度百科和维基百科中的定义,一些商业公司对DevOps也有不同的定义。

IBM 这样看待 DevOps:DevOps 是一种软件交付方法,它基于精益和敏捷的软件开发,在需求人员、开发人员、测试人员、运维人员的协同下,保证软件的交付能够基于真实的用户反馈。

解读:DevOps原则使得软件的交付更加有效,并实现了基于最终用户的真正需求对软件进行改善和功能强化。从这个角度来看,除了满足用户提出的要求,还应该根据用户的反馈进行功能的开发和改善,这一点也是非常重要的。根据项目原则的不断明确和细化,以及实际情况的变化,为客户提供他们真正需要的功能,并在这些基础之上进行改善是非常重要的。

CA认为:DevOps是通过文化、流程、工具的转换和改进以加速软件交付的。

Gartner认为:DevOps代表一种文化的转变,它通过敏捷和精益实践来进行IT服务的快速交付。DevOps寻求开发团队和运维团队进行合作,同时强调利用技术对软件进行改善,尤其是使用工具对软件的整个生命周期的自动化进行改善。

解读:DevOps的定义虽各有不同,但也有一些共同点,比如,它们都强调自动化在软件交付过程中的作用,都认为自动化能够加速软件的交付。为了加深读者对 DevOps 的理解,下面对“DevOps”一词出现的过程进行简单介绍。

● 2008年8月,在加拿大多伦多举办的敏捷大会上,Andrew Shafer和Patrick对“敏捷基础设施”进行了讨论,其中包含如何打破Dev和Ops的隔阂。

● 2009年6月,Flickr分享了他们每天超过10次的部署经验,引起了很大反响。

● 2009年10月,在比利时根特举办了第一届DevOpsDays的活动,后来由于推特140字符的限制,大家在讨论时去掉了“Days”,于是“DevOps”一词正式诞生。

总的来说,虽然对 DevOps 的各种定义看似完全不同,但它们实际是从不同角度出发对同一个问题的理解。DevOps强调人员、流程、工具的协同改善;强调践行敏捷和精益,减少浪费;强调加快服务的交付速度;强调接收反馈,提供给最终用户其真正需要的功能;强调提供更好的、全生命周期的方式以保证企业能够不断地试错和学习,以更好地适应市场。而且随着不断地实践,更多的方法、原则、经验被融入进来,丰富了DevOps的内涵。