Devops的发展史

简介: Devops发展历史

DevOps 的发展历史回顾

任何事物的诞生、发展和消亡都是由所处社会阶段决定的,软件开发方法也是一样。现在我们津津乐道的 DevOps,也有其自己的起源和诞生的前提条件,今天我带领你追本溯源,一起找一找 DevOps 兴起的历史根源。


当谈到 DevOps,就不得不提的两个词是:精益和敏捷。精益软件开发和敏捷软件开发是 DevOps 发展的两大基础。DevOps 不仅对这两大基础进行了扩展,还引入了很多重要而有用的原则。


因此,在一些人眼中,DevOps 是敏捷的一部分,其实这样的理解是错误的。DevOps 并不从属于敏捷,事实上它更像是在精益和敏捷经验基础上发展出的新生儿,是在前人经验上发展,与时俱进的产物。


精益软件开发

精益开发,源自精益生产。精益生产是一组原则指导,主要应用在质量、速度和客户关系。


2003年,由Mary 和 Tom Poppendieck编写的 《精益软件开发:软件开发管理者的敏捷工具箱》一书问世,该书第一次把精益思想映射到软件开发中。在2006年,作者在第二本书 《实施精益软件开发:从概念到价值实践》 中进一步完善了这种映射,并定义了 7 项原则:消除浪费、内建质量、创建知识、推迟决策、快速交付、对人尊重、整体优化。


消除浪费是精益思想的精髓所在。在精益生产领域,一共定义了 7 种浪费,分别对比软件开发中节点。


  • 库存——未完成的工作。未完成的工作是指一切已经开始但还未完成的东西。可能是还未编码实现的需求,还未进行测试、部署的代码,未完成的工作不能给最终客户带来价值,但资源已经被消耗了。
  • 过度处理——不必要的流程。不必要的流程是纯粹的浪费,没有增加任何价值。不必要的流程包括没有达成任何产出的过程,编写没有人读的文档,没有效果的汇报,可以自动化但却还是以手工处理的任务等
  • 过度生产——额外的特性。额外的特性是指用户没有明确的需求。每一行代码都是有成本的,因此,用户不需要的功能就不要创建它
  • 运输——传递。传递是指中间交付物从一个阶段传递到下一个阶段。比如用户故事从业务人员传递到开发人员,系统设计从架构师传递到开发人员等。每次传递都会有知识丢失,因此要尽可能避免传递。
  • 等待——延迟。延迟是指在任何环节中的等待,等待就会影响开发进度。与等待相关的延迟有:等待决策、等待资源分配或释放等。
  • 移动——任务切换。任务切换是指在不同事情之间来回进行切换。每次切换都需要重新回忆之前任务的上下文,浪费大量时间。相信这个大家都深有体会。
  • 缺陷——缺陷。缺陷在制造业和软件产品中都存在的。缺陷会导致返工,返工是没有增加任何价值的,是严重的浪费。


敏捷软件开发

20 世纪中,软件开发方法中被广泛采用的是瀑布模型,将软件开发过程分解为一系列依次完成的单独阶段,包括需求、设计、实现、测试、部署和运维。整个开发过程就像瀑布一样,依次向下经过这些阶段。每个阶段都有一个开始点和结束点,上一个阶段结束后,便进入到下一个阶段,一旦进入到下一个阶段,就不能再回到上一个阶段。


这种模型的一个前提是需求不再发生变化,每个阶段通过文档进行流转,这也就导致了采用瀑布模型开发的软件项目存在大量的问题,比如进度超期、预算超支、不符合用户需求、需求中途被取消等。


这些问题比较资深的程序员应该都遇到过。这是因为软件开发本身是一个高度动态的过程,软件开发过程中的变化是不可避免的。比如:


在需求阶段,由于用户也不知道他们想要什么,而这必然会带来需求的改变;

在编码阶段,可能会发现设计有问题需要重新设计;

在测试阶段,可能会发现代码逻辑有问题需要重新修改;


而这必然导致要返回到上一个阶段或上上一个阶段进行返工修复,这些在瀑布模型下是不允许的或者成本是非常高的。


瀑布模型的软件开发导致了项目失败率高、软件质量低下和客户满意度低。


20 世纪 90 年代,人们对瀑布模式的软件开发方法越来越不满意。这种情况下,诞生了其他一些软件开发方法,包括极限编程(XP)、Scrum 方法、动态系统开发方法(DSDM)、水晶方法(Crystal), 以及特征驱动开发(Feature Driven Development,FDD) 等。这些方法有很多相同之处,都是希望能够解决软件开发中遇到的问题。


DevOps兴起

享受到了敏捷方法带来的好处,极大地提高了软件的交付速度。但是在有些企业里,在采用敏捷软件开发方法后的实际效果并没有达到预期。


这并不是说敏捷方法不好,问题的关键在于敏捷所涉及的代码开发阶段只是软件端到端价值交付链中的一环。


在实际开发过程中,开发之前还有需求收集、分析、拆解、设计等环节,在开发之后还有编译、构建,及将制品部署到测试环境、生产环境等环节。只有部署到生产环境交付给用户使用,用户将使用效果反馈给开发人员,这才算是一个软件开发周期的完成。


快速部署到生产环境这个环节在很多企业里也是很难实现的。因为,在大多数企业中服务器等硬件基础设施还相对薄弱,多是陈旧的老机器,新采购的预算申请较难且周期长。


这种情况,我是深有体会,在我之前的经历的一家国企里,一个项目预算流程走了长达半年时间。 在这种情况下,为了准备一套测试环境短则数周,长则数月。这些问题严重阻碍了软件向测试环境和生产环境部署的效率。同时,为了保证生产环境的稳定性,运维部门的原则是能不变更就不变更。所有的这些问题,都使敏捷开发的收益难以有效体现出来。


随着虚拟机和云计算技术的快速发展,提供 IT 基础设施的方式方法被彻底改变了。资源被池化,可以根据自己的需求动态分配物理资源,用完即可回收。基于基础设施即代码(Infrastructure as Code,IaC) 的管理方式,我们只需要编写程序代码,就可以创建基础设施。同时,基础设施也能像代码一样进行管理,进行版本控制、变更追溯、回滚等操作。如今,Docker、K8s 等容器技术的兴起,更进一步提高了实施基础设施的效率。


最终,敏捷软件开发方法的广泛普及,以及IT 基础设施即代码(IaC)的管理方式的出现,推动了IT管理方式的变革,这项运动被冠以"DevOps"之名。


DevOps是一场运动,是推动企业内部IT管理方式变革的运动。

DevOps是一个实践,包含了业界广泛采用的、卓有成效的软件开发方法。

DevOps是一个思想,是对精益和敏捷思想的演进,并应用到IT端到端的价值链中。


DevOps 缺少一个清晰的定义,每个人对 DevOps 的理解也都不一样。正如下面这张盲人摸象图,很形象地说明了当前大多数人对 DevOps 理解的现状。

image.png


总之,DevOps 是抽象的,不是具体的;是全局的,不是局部的;DevOps 告诉我们要做什么(What),但没告诉我们要如何做(How)。因为对于一个企业,IT 管理方式的变革跟企业内部的文化、流程、技术关系密切。当企业在应用DevOps的时候,要结合企业现状,有针对性的,制定适合企业内部的应用方案,切勿盲目追求,为了做而做。


DevOps的兴起并席卷全球,是因为 DevOps 的确为我们带来了好处,解决了企业面临的现实问题。“缩短市场响应时间”“减少技术债务”和“消除脆弱性”是 DevOp 着手处理的主要任务。这三个任务中任何一个的改进,都能为企业的业务带来明显的优势。

目录
相关文章
|
3月前
|
运维 监控 Devops
拥抱 DevOps 文化:实现持续交付与部署的最佳实践
在软件开发领域,DevOps 强调开发与运维团队的协作,通过自动化、持续集成与部署等实践缩短系统开发生命周期,提升软件质量。其核心原则包括自动化、协作、度量与共享责任。实施 DevOps 需要建立跨功能团队、采用版本控制、持续集成与部署、自动化测试及监控反馈。常用工具有 Jenkins、GitLab CI/CD、Ansible、Prometheus 和 ELK Stack 等。DevOps 通过文化与技术变革,加速软件交付并提高客户满意度。
|
6月前
|
运维 监控 Devops
云效DevOps:不仅仅是工具,更是思维方式的转变
【6月更文挑战第11天】云效DevOps是软件行业的 game changer,超越技术工具层面,推动协作、自动化和持续改进的思维转型。它连接开发、测试、运维,强化团队协作,通过自动化提升效率和准确性,减少人为错误。示例展示了自动化构建过程,强调每次迭代都是改进机会,促进项目持续优化和竞争力提升。
182 3
fxk
|
Devops Java Maven
从0开始DevOps实践
从0开始进行DevOps。DIY 图形化代码构建流水线,容器日志采集、链路跟踪环境搭建
fxk
796 15
从0开始DevOps实践
|
运维 jenkins Devops
DevOps架构实践
DevOps架构实践
119 0
|
敏捷开发 运维 数据可视化
落地DevOps的路线图
以上这些都是在打破技术团队内部的协作隔阂,但在实际工作中,业务团队和技术团队之间的理解和沟通障碍更加严重。如果业务需求方不能认同devops的实践理念,双方对于快速交付对业务价值的提升没有统一的认知,那devops的落地只能是镜中花水中月。
落地DevOps的路线图
|
敏捷开发 运维 监控
【DevOps】深入了解探究DevOps
探究DevOps 的起源、原则和实践
【DevOps】深入了解探究DevOps
|
Devops 程序员
DevOps的起源
DevOps的起源
179 0
|
敏捷开发 开发框架 运维
阿里巴巴DevOps实践指南(一)| 为什么DevOps的必然趋势是BizDevOps
从精益思想出发,我们可以看到DevOps的必然发展方向,那就是向业务侧延伸。业务是产品开发和运维的源头,完整的价值流必须从源头开始。这不是预测,而是正在发生的事实
5189 1
阿里巴巴DevOps实践指南(一)| 为什么DevOps的必然趋势是BizDevOps
|
运维 监控 Devops
我眼中的DevOps
DevOps 是由开发(developments)和运维(operations)两个单词组成,可以看做是开发、测试和运维之间的一个交集,通过一些列固化的流程来使得整个项目的开发周期变得更便捷和可靠。
我眼中的DevOps
|
运维 Devops 测试技术
如何成为一个优秀的DevOps工程师
如何成为一个优秀的DevOps工程师,自己粗浅的理解
758 0