DevOps,字面意思是Development &Operations的缩写。
如果觉得文件讲的不够仔细的话,大家可以看看我在B站发布的视频
devops的诞生:
2008年敏捷大会上,来自比利时的Patrick Debois发表了题为 《Agile Infrastructure & Operations》 的演讲,以自身项目经历为蓝本介绍开发和运维如何应用敏捷的方式进行沟通协作。
在加州举办的 O’Reilly Velocity 2009 上,Flickr 的工程师 John Allspaw 和 Paul Hammond 发表了题为《10+ Deploys per Day: Dev and Ops Cooperation at Flickr》的演讲,体现了 DevOps 的思想精髓,开发和运维围绕着共同目标紧密合作,实现1天之内完成10次以上的软件发布。这次演讲也成为 DevOps 这一称呼出现的契机。
2009年Patrick Debois发起了名为「DevOpsDays」的活动,这也标志着 DevOps 的正式提出,并开发普及推广。
devops发展背景:
为什么 DevOps 会如此热门,时常被人所提及,这与其发展背景是分不开的,主要原因可以概括为以下几点:
- 软件开发活动在企业中的位置越来越重要,而像企业经营活动一样,软件开发活动中也存在着许多的浪费,企业管理上必然存在着 识别并消除浪费 的需求。
- 软件开发中的浪费包括不必要和必要的浪费,不必要的浪费有:无人使用的功能、软件bug、等待测试、等待审批等;必要的浪费包括:工作项移交、测试、项目管理等。
以上主要从企业的角度说明了 DevOps 的发展,这是较为深层次的原因,表层的推动因素包括:容器化技术的发展、微服务架构的发展等等,这些技术上的创新为 DevOps 提供了良好的发展条件,以解决企业面临的这些问题。
DevOps 带来的好处:
- 更短的开发周期,产品的快速交付
- 更小、更频繁的变更能够降低风险
- 流程自动化,降低企业 IT 成本
DevOps 与 CI/CD 的关系
DevOps 一种理念,是追求的目标,CI/CD 是达到该目标的一种途经。知乎上一位专栏作者对持续集成、持续交付、持续部署的解释是我看过的很清晰的:
持续集成(Continuous Integration) 指通过将每一次改动都提交到一个模拟产品环境中,使用严格的自动化测试,确保业务应用和服务能符合预期,最终产生构建产物。
持续交付(Continuous Delivery) 指通过持续集成产生构建物,确保让软件产品能够快速、安全的部署到产品环境中。持续交付并不是指软件每一个改动都要尽快的部署到产品环境中。它指的是任何的修改都已证明构建物可以在任何时候实施部署。
持续部署(Continuous Deployment) 是持续交付的更高阶段即生产阶段,就是将最终的产品发布到线上生产环境,给用户使用。所以当业务开发完成时,经过持续集成,持续交付后,你有信心只需要按一次按钮就能将应用快速并安全的部署到产品环境中。
DevOps 实践
将 DevOps 分解为多个阶段、分部门、分步骤实施可以有更高的成功率。
代码版本库:Git
依赖管理和构建工具:Maven
交付物:Docker 镜像
自动化构建工具:Jenkins、阿里云效 Pipeline
项目管理工具:禅道、其他
各环境版本控制及管理规范:Git Tag 管理版本
交付物管理:阿里云容器镜像服务、自建容器镜像服务器
日常测试计划
容器编排:Kubernetes