着软件开发的历史时间轴往回走,DevOps 的诞生可谓是开启了软件开发史上的新纪元。在此之后,我们离理想中的高效世界越来越近,此前的惨淡现实似乎渐渐远去了。

软件开发历史时间轴

想要切身体会 DevOps 所具有的某种重大意义,得从以往的种种问题开始了解。

以往令人摇头叹息的现实

在现实中,系统经常被破坏,服务和产品总是不尽如人意,团队的潜力无法得到正常发挥;

在现实中,开发和 IT 运维是对立的,测试和信息安全活动总是在项目晚期才进行,这导致即使发现了问题也来不及修复;

在现实中,产品和服务交付中的关键活动往往全都需要手动操作和互相交接,我们总是要等待其他人的工作完成才能进行自己的工作;

在现实中,特性交付的周期一次次被拖延,质量也频频现问题,特别是与生产环境部署相关的部分,进而对客户和业务造成了负面影响。

在现实中,开发人员特别是那些处于开发下游的人,经常感觉被困在一个注定失败的系统中,无力改变结果,伴随这种无力感的是倦怠感,还有疲劳。

在现实中,不当的开发方式造成了人力和物力大量的浪费。

结果,不仅是我们的工作无法按预期完成,整个公司也对 IT 部门的业绩不满意,甚至导致预算被削减,IT 员工没有成就感,感觉无力改变流程及其结果。

但问题还不止于此,行业愈演愈烈的竞争让上面这些问题凸显得越发严峻,甚至给企业的生存带来了挑战。

竞争给企业带来生存挑战

日益激烈的竞争挑战

想要看看近几十年来软件行业发生了什么,不妨将目光转向更早的年代,让我们来回顾一下 20 世纪 80 年代的制造业。

制造业的竞争

在制造业革命前,制造厂的平均交货周期为 6 周,能按时交货的订单不到总量的 70%。随着精益实践的广泛实施,到 2005 年,产品的平均交货周期缩短到 3 周以下,按时交货的订单超过总量的 95%。

通过采用精益原则和实践,很多制造厂不但大幅提高了生产效率,缩短了交货周期,而且还提高了产品质量及客户满意度,并在市场竞争中立于不败之地。而那些没有实施精益实践的厂商,不但渐渐失去了市场,有的甚至破产了。

制造业的成败关键

而如今的软件行业也正走在类似的道路上。

软件行业的竞争

在 20 世纪七八十年代,新功能大都需要 1~5 年的开发和部署周期,动辄花费数千万美元。随着时间的推移,开发和部署战略型业务功能所需的成本和时间每十年就下降几个数量级。到 21 世纪初,由于技术的快速发展以及敏捷原则和实践的应用,新功能开发所需的时间已经从几年缩短至几个月,但是部署到生产环境仍然需要几周甚至数月,而且部署过程中还总是伴随着大量不可预知的状况。此外技术产品和服务的交付标准也在不断提高——几十年前优秀的交付标准如今已然过时。

而到 2010 年左右,DevOps 的出现是一个重大的时间节点。这个时候的硬件、软件和公有云不断商品化,任何特性(甚至整个公司的创建)都可以在几个星期内完成,并在几小时或几分钟内部署到生产环境中——对于这些公司而言,部署最终进化成了日常的、低风险的工作。通过运用 DevOps,这些公司能够通过测试商业理念发现对客户和整个公司而言最有价值的想法,然后实施开发,并快速且安全地将其部署到生产环境中。

现在,大部分采用了 DevOps 原则和实践的公司,每天都能完成几百甚至上千次代码部署的变更,然而大多数公司都不能在几分钟或几小时内完成变更需要的所有部署,往往需要几周甚至几个月的时间。他们更不可能每天在生产环境中做到成百上千次的部署,而是在以月甚至以季度为单位进行部署。对他们而言,生产环境的部署并不是日常工作,因此服务中断和各种事故总是与部署如影随形。

目前,快速地切入市场、提供优质的服务以及持续的创新就是一种竞争实力,而上述公司显然会在这样的竞争中处于劣势。在这个竞争优势需要被快速验证和持续实验的时代,那些还不能应用 DevOps 实践的公司注定会在市场上败给敏捷的竞争对手,并可能会倒闭,和当年那些没有采取精益原则和实践的制造厂的下场类似。

在了解完这些问题以及它们的严峻性后,接下来让我们追寻问题的本质——到底是什么引发了这些问题呢?

追寻问题根源

可以说这些问题很大程度上归咎于一种根本的、长期的冲突。

在几乎所有的 IT 公司中,开发部门和 IT 运维部门之间都存在一种固有冲突。IT 公司需要负责的事情很多,其中包括下面两个必须实现的目标:

  • 对变化莫测的市场做出反应;
  • 为客户提供稳定、可靠和安全的服务。

开发部门通常负责对市场变化做出响应,以最快的速度将新功能或者变更上线。而 IT 运维部门则要以为客户提供稳定、可靠和安全的 IT 服务为已任,让任何人都很难甚至无法引入可能会危害生产环境的变更。这种配置方式让开发部门和 IT 运维部门的目标和动因之间存在巨大的冲突。

这种冲突进一步引发了一系列的问题。这让公司业绩下滑,进而导致新产品和新功能的上市时间拉长、质量下降、服务中断时间增加,造成了一种恶性循环,阻碍了业务目标的实现,不但波及 IT 公司的内部,而且还会影响外部。这些冲突常常导致技术工作者交付出质量低劣的软件和服务,打造出糟糕的客户体验,每天都要采用临时解决方案、应对紧急情况。以上情景在产品管理、产品开发、QA、IT 运维和信息安全管理中不断上演。

所幸的是 DevOps 的诞生弥合了这个冲突,它让开发与运维团队不再是对立的两方,在接下来的文章中,我们将看到 DevOps 如何为我们指引软件开发的方向。


参考文献:Gene Kim、Jez Humble、Patrick Debois、John Willis《DevOps实践指南》.

(部分图片来自网络,如有侵权,立即删除)

【云原生】DevOps 新纪元 | 史前的惨淡现实相关推荐

  1. Tech Talk 活动预告 | 云原生DevOps的Kubernetes技巧

    前言 "All in Cloud"之后,很多公司开始了"Cloud Native"的进化之路.云原生技术虽然发展迅速,但项目工具数量庞大且缺乏整体的规划和标准, ...

  2. 走进云研发时代 阿里云发布云原生DevOps解决方案

    2020年10月21日,阿里云云效DevOps平台联合云原生应用平台共同举办"阿里云云原生DevOps解决方案重磅发布"云端发布会,正式发布基于阿里巴巴最佳研发实践的云原生DevO ...

  3. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  5. 云原生 DevOps,模型化应用交付能力的重要性

    撰稿:溪洋 审核校对:天元.海珠 编辑&排版:雯燕 云原生正在成为企业业务创新和解决规模化挑战的加速器. 云原生带来的变革绝不限于基础设施和应用架构等技术层面,更是对于研发理念.交付流程和 I ...

  6. GitHub Action + ACK:云原生 DevOps 落地利器

    作者 | 瑶靖 来源 | 阿里巴巴云原生公众号 据信通院<中国 DevOps 现状调查报告(2020年)>显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发.测试. ...

  7. 云原生 DevOps 的 5 步升级路径

    作者 | 张裕 编辑 | 雅纯 来源|阿里巴巴云原生公众号 什么是云原生 DevOps 点击查看视频:https://v.qq.com/x/page/u3220cutt7v.html 我们先通过上面一 ...

  8. 云原生 DevOps,模型化应用交付能力很重要

    简介:DevOps 文化及其支撑其落地实践的自动化工具与平台能力在云原生架构渐为普及的背后,发挥了关键的价值. 撰稿:溪洋 审核校对:天元.海珠 编辑&排版:雯燕 云原生正在成为企业业务创新和 ...

  9. 究竟什么是云原生DevOps呢?

    简介:究竟什么是云原生DevOps呢?我们认为:云原生DevOps是充分利用云原生基础设施,基于微服务/无服务架构体系和开源标准,语言和框架无关,具备持续交付和智能自运维能力,从而做到比传统DevOp ...

  10. GitHub Action + ACK:云原生 DevOps 落地利

    简介: 据信通院<中国 DevOps 现状调查报告(2020年)>显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发.测试.部署和运维多个环节.但是依然有 20% ...

最新文章

  1. Unity Log重新定向
  2. 从0到1:千万级美团端侧CDN容灾解决方案
  3. 《Engineering》评选2021年全球十大工程成就
  4. 非公平锁和公平锁在reetrantlock里的实现过程是怎样的
  5. jsp连接mysql显示404,SpringBoot+jsp项目启动出现404的解决方法
  6. Java项目出现的问题01----学习
  7. 【PAT甲级 大数运算】1065 A+B and C (64bit) (20 分) Python 全部AC
  8. 多模光纤收发器的基本参数及主要特点
  9. ORACLE中数据类型
  10. Raid 原理及创建软raid
  11. 【SpringCloud】Spring cloud Alibaba Sentinel 服务降级 (阿里版本Hystrix)
  12. Mac上传代码到Github
  13. 打不过 Chrome 的 Firefox,我为什么要选择?
  14. Android ScrollView 实现整个界面变成列表
  15. bzoj 5394: [Ynoi2016]炸脖龙 数论+树状数组
  16. 80C51单片机的串行通信技术
  17. 基于移动位置服务器,基于移动位置的服务系统及方法
  18. 基于python实现resnet_【Tensorflow系列】使用Inception_resnet_v2训练自己的数据集并用Tensorboard监控...
  19. 客户端与服务端的区别
  20. 【钉钉-场景化能力包】CRM销售系统集成

热门文章

  1. 畅捷通魔方MP70初体验
  2. cad批量打印_最好用的cad批量打印方法
  3. 小白 白嫖7天百度云网盘会员,高速下载
  4. office2007每次打开都配置进度_每次打开excel2007都要配置进度怎么办?
  5. 南航理论计算机科学答案,专业认证理念下的计算机专业本科生培养管理模式研究——以南航计算机科学与技术专业为例...
  6. 萤火小程序商城(YoShop)
  7. CVI通过ODBC连接数据库的方法
  8. ASRT语音识别asrserver http协议测试专用客户端
  9. 初学者如何在CSDN写博客
  10. 电赛公开课整理(二),电路基础,截图+模电知识【16000字】【原创】