导读:今天首席CTO笔记来给各位分享关于为什么要devops的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
Devops工具的应用能够带来什么好处?
以近期爆出的多个Spring高危漏洞为例,如Log4j、Dos漏洞,DevOps可以通过漏洞的自行建立,以可信源库和漏洞库建立起对Java代码依赖包的管理,从容应对紧急发布的漏洞。
Spring在Java中的地位超然,像近两天爆出的Spring核心框架Dos漏洞,会影响到几乎所有的Spring系列组件,例如常见的SpringBoot和SpringCloud等,并且spring系列组建被广泛运用与业务系统开发,覆盖面极广。
同时,该漏洞是一种潜在的漏洞,但是利用该漏洞进行该攻击服务的手段的门槛较高,需要利用可控可执行的SPEl(SpringExpressionLanguage,Spring表达式语言)。
只要SPEL可控,那么就会有Dos漏洞。
拿谐云DevOps来说,是面向软件研发团队的一站式研发协作管理平台,提供从需求到设计、开发、构建、测试、发布到部署的全流程协同及研发工具支撑。全面满足企业研发管理与工程效率等需求,一站式提高管理效率和软件研发质量,助力团队快速实践敏捷开发与 DevOps,提升软件交付质量与速度,助推企业数智化转型升级。
可信源管理从项目持续集成、发版门禁源头堵截高危漏洞上线,维护应用依赖版本库,当发现漏洞后可以直接创建工单针对性修复。平台支持定期从中央漏洞库拉取漏洞,在流水线运行过程中对使用到的依赖包做扫描校验,在申请发布前的对发布版本做扫描拦截,扫描范围包括漏洞、基线、可信源匹配,可信源冲突、门禁。在代码合并前经过多人审批,并设置分支保护权限,从而规避相应风险,提高安全等级。
SRE和DevOps
DevOps 和 SRE 似乎是同一枚硬币的两个面。他们都旨在弥合开发团队和运维团队之间的鸿沟,都想要提高软件部署的效率和软件运行的可靠性。
DevOps 的定义是“一种软件工程文化和实践,旨在统一开发和运维” 。这个术语最初是由 Andrew Shafer 和 Patrick Debois 于2008年创造的,虽然花了几年时间才成为一个通用概念,但如今,几乎每个企业都在使用 DevOps。
Site Reliability Engineer(SRE) 的概念自2003年以来一直存在,比 DevOps 还要古老。它是由创建 Google 的本·特雷诺(Ben Treynor)创造的。根据 Treynor 所说,SRE 是“软件开发工程师开始承担运维人员的任务”。
DevOps 和 SRE 都倡导自动化和监视,其目标都是减少从开发到部署生产中的时间,同时又不影响代码或产品的质量。Google 指出,SRE 和 DevOps 彼此之间并没有太大区别:“在软件开发和运维方面,他们不是竞争关系,而是旨在打破组织障碍,使得更快地交付更好的软件的亲密朋友。”
DevOps 只是关心需要做什么,但 SRE 却谈到了如何可以做到。SRE 是通过使用正确的方法,工具等将理论部分扩展为有效的工作流程。这还涉及在每个人之间分担责任,并使每个人都具有相同的目标和愿景。
DevOps的概念和历史
当你看敏捷的时候,不经意间出现了DevOps这个词,你还在好奇,这是什么的时候,发现规模化敏捷也出现了,这个时候如果你还发现自己对这个词很陌生,那说明你的知识该补齐了,毕竟他们如果总是频繁出现,说明他们的相关性很高。
其实不只是敏捷,在CMMI、ITIL都在提到DevOps,说明我们真的很有必要对它进行一个系统性的了解了。
1.CMMI中提到关于Devops
图 CMMI
2.ITIL中提到关于DevOps
各类管理体系其实都在走向融合,而且都需要DevOps的支持,所以你还觉得自己不需要认真了解下它么?
如果你想快速的系统性的了解DevOps,可以先阅读以下几本书:
《凤凰项目》
《持续交付》
《独角兽项目》
《凤凰项目 一个IT运维的传奇故事》
《DevOps精要》
如果你报考了DevOps Master认证,那你《EXIN DevOps Master WhitePaper》是必读的。
DevOps是对敏捷软件开发与精益生产思想的演进,应用于IT端到端的价值链中,使得业务基于现代信息技术,并通过文化,组织与技术变革来获得更大的成功。
这是《DevOps精要》中关于DevOps定义,定义都有其严谨性,所以往往看完定义让我们摸不着头脑。DevOps其实是英文单词Development(Dev)和Operations(Ops)的组合,为什么要把这两个词组合到一起,最初创造这个词的人目的就是期望开发和运维能够紧密的合作,随后逐步的被扩展和衍生,下面这个“DevOps能力环”是对这种打破部门墙,进行顺畅交付的一个非常经典的一个表达。它强调了IT专业人员(研发,运维,测试)在应用和服务生命周期中的协作和沟通;强调整个组织合作以及交付和基础设施变更的自动化,从而实现持续集成、持续部署和持续交付。
[图片上传失败...(image-c93581-1650555848432)]
DevOps能力环
我们为什么要了解其历史,如果我们只是想用DevOps的一些工程实践,大可不必,但是如果你的团队还对这个概念很陌生,他们不知道为什么要用DevOps,如果是这样的话,我们还是有必要花几分钟来了解下它。
DevOps起源于敏捷,是在2008年敏捷论坛上被提出的,所以现在很多人会认为DevOps是敏捷的一部分,对于到底是谁属于谁,谁包含谁,这些观念大家不必纠结,各大体系都认为自己包括别人。敏捷认为它包括DevOps,而DevOps认为自己是它的衍生。
DevOps的概念在2010年的《What is DevOps》这篇文章中得到了较为完整的描述。DevOps在2013年之后被业界快速接受,源于相关技术的同步发展,2013年,dotCloud公司推出Docker项目,同年,Google推出开源项目Kubernetes,提供了以容器为中心的不部署、伸缩和运维平台,2015年云原生的概念也逐步成熟,他们的发展助推了DevOps的快速发展。
大家可能还听说过DevSecOps,Sec是不是安全,你猜的没错,就是安全和合规性,这是在2016年开始逐步推出的一个理念。关于历史的部分就讲到这里,大家感兴趣的可以再做进一步的了解。
为什么DevOps的必然趋势是BizDevOps
编者按:本文源自阿里云云效团队出品的《阿里巴巴DevOps实践指南》,扫描上方二维码或前往:,下载完整版电子书,了解阿里十年DevOps实践经验。
本文作者:何勉,阿里云云效资深技术专家
谈到DevOps,就必须从敏捷和精益开发说起。DevOps在它们基础上发展而来,借鉴了其中的方法、理念,并发展和完善了它们的实践体系。
敏捷软件开发的实践最早出现在上世纪90年代。当时,一批轻量的软件工程方法和框架相继诞生,它们共同的特点是,相对传统软件工程,都遵循演进和迭代的模型,过程更加轻量灵活。其中Scrum和极限编程(ExtremeProgramming)在实践上最为成功,影响最大。它们都是迭代和增量的软件开发框架,区别是Scrum只包含管理实践,而极限编程则同时涵盖工程和管理实践。
上世纪90年代,PC软件流行和第四代编程语言的出现,面向对象和设计模式运动的兴起,让小型项目的开发蓬勃发展。同时,互联网应用和开源社区兴起,有别于传统的开发模式不断涌现,优秀个人在程序开发中的作用得到凸显。
这些因素都让非传统开发方法有了实验的土壤。其结果是,一方面质量问题层出不穷,这部分促使了源自全面质量管理体系的CMM/CMMI在这一时间的繁荣和推广;另一方面也产生了许多不同于传统方法的有效实践,让业界看到了新的可能。敏捷运动这时已经呼之欲出,它既是对传统的反叛,也是对野蛮生长的规范。
2001年2月,17位轻量级软件工程方法的代表人物,齐聚美国犹他州的雪鸟滑雪胜地,其中也包括Scrum和极限编程的几位发明人。在两天的会议之后,发布了后来产生巨大影响的敏捷宣言(参见 ),敏捷宣言陈述了他们共同认可的关于软件的开发方法的理念,同样重要的是他们找到了敏捷这个词来总领这些理念。
敏捷概念在2001年出现,可以说适逢其时。当时,一方面传统方法变得越来越臃肿笨重,却没有解决软件危机;另一方面,人类正在进入互联网时代,软件业对响应变化和创新的要求迅速升级,这是更根本的原因,毕竟需求才是行业发展的最好助推剂。
敏捷宣言发布后,敏捷成为了一场运动,被迅速地推广和应用。但是,早期的敏捷专注的还是研发交付阶段,站在业务的角度,它的目标是帮助产品和研发团队提升敏捷响应能力,也就是:“更早地交付价值,更灵活地应对变化”。然而,在企业数字化转型的背景之下,IT不仅要保证产品的开发和交付,系统部署和运行同样重要。DevOps继承了敏捷开发的理念,又补上了运维的部分,但DevOps绝不是开发和运维的简单叠加,这个我们后面还会说到。
精益思想最早源自生产制造领域,根源于丰田在产品制造中管理和工程实践。1988年《斯隆管理评论》的一篇论文《精益生产系统的胜利》比较了西方的生产方式和丰田生产方式在效率和质量上巨大差距,挑战了规模生产带来效益的神话。从此,精益开始进入西方的视野,逐渐成为现代管理学的重要组成部分。
《精益思想》一书将精益定义为:有效组织人类活动的一个新的思维方法,目标是消除浪费,以更多地交付有用的价值。书中进一步总结了精益的5个原则,同时也是精益的5个实施步骤:
在这个抽象层次上,精益思想超越了其诞生的制造业,深刻影响了各个行业,如精益政务、精益医院、精益领导力、精益服务业、精益供应链、精益教育等,这其中也包含产品开发。事实上,主流的敏捷开发方法都直接受到了精益思想的影响,遵循精益的基本原则。
与此同时,精益产品开发作为独立的实践体系也快速发展,它聚焦两个方面的目标——价值交付过程和价值本身。
精益创业认为创业是一个巨大不确定的过程,其最大的浪费是交付没用的(不能解决用户问题,或带来业务成功)的东西。为此它把价值的 探索 和发现融入产品交付过程,提出了著名的“开发-测量-学习”循环。循环从关于市场和产品的待检验概念开始。接下来,循环的第一步是开发用以验证这一概念的最小可行产品(MVP,Minimal Viable Product);第二步:基于最小可行产品收集市场、用户的反馈,并获得测量数据;第三步:用数据验证假设,证实或证伪它们,并加以调整,产生经实证的认知。然后,进入下一循环,持续 探索 商业模式和产品功能设计。
精益创业的影响远超初创公司,事实上“精益创业”一书中把“创业”定义为在不确定的环境下,开创新的业务和产品。而“不确定性”似乎已成为今天IT领域身处环境的共性,也因此,MVP、“开发-测量-学习”循环等理念已成为IT创新领域公认的实践,并且围绕精益创业发展出一套完整的创新实践体系,如精益数据分析、精益客户开发、精益交付设计等。
探索 和发现有效的价值,并让价值顺畅流动。围绕这两个目标,并遵循精益思想,精益产品开发已经发展成为系统的实践。精益思想对DevOps的影响也非常根本,DevOps三原则就完全遵循了精益思想。
在传统的IT组织下,开发团队(Dev)和运维团队(Ops)之间诉求不同——开发团队(尤其是敏捷团队)追求变化,运维团队追求稳定。双方往往存在利益的冲突,比如,精益和敏捷的团队把持续交付作为目标,而运维团队则为了线上的稳定而强调变更控制。部门墙由此建立起来,这当然不利于IT价值的最大化。
2009年,在美国举行的第二届Velocity大会上,来自Flickr公司的John Allspaw和Pauk Hammond发表了一个演讲《10+ Deploys Per Day: Dev and Ops Cooperation at Flickr》。在这个演讲中,Allspaw和Hammond以角色扮演的方式,生动地表现了开发与运维之间的各种冲突。演讲中出现很多金句,如“It's not my code, it's your machines!”,这深刻反映了Dev和Ops关系的现状。接着,他们又展示了如何通过消除开发团队(Dev)和运维团队(Ops)的壁垒,双方通力合作,借助工具和文化的改变让软件的发布和运维变得持续和高效。
这次演讲是DevOps发展历程中的标志性事件。它提出了正确的问题——为了更快交付和实现价值,必须弥合开发和运维之间的鸿沟,并给出了解决方案——为了弥合开发和运维之间的鸿沟,需要在文化、工具和实践方面的系列变革。
同一年,比利时独立IT咨询师Patrick Debois看到这个演讲,受到启发,组织了第一届DevOpsDays,DevOps正式登上舞台,DevOps的理念开始流行,其相关的工具和实践也快速发展。期间以容器化和自动编排调度为代表的云原生技术的出现也极大加速了这一进程。今天,DevOps已成为企业数字化的核心能力之一,是对IT交付和运行的基本要求。
其后,在《凤凰项目》和《DevOps实践指南》两本书中,Gene Kim等人总结了DevOps实施的三步工作法,它们分别是:
流动原则:聚焦IT系统的整体价值流,全局优化,保证价值从左(上游)到右(下游)的快速流动。
反馈原则:创建从左到右的反馈循环,并缩短反馈周期和放大反馈效果。这样,就可以更快的响应和理解内外部客户,并即时获取改进所需要的知识。
持续的实验和学习原则:创建承担风险、持续实验并从错误中学习的文化,在不断的尝试中精进能力,并提高系统的韧性。
Kim等人认为,这三步工作法是其他一切DevOps流程、实践的价值和哲学根基,所有DevOps模式都可以从这三个原则派生而来。
稍作探究,就能够觉察,DevOps三步工作法是精益原则的翻版。更确切的讲,是精益原则在IT开发和运行上下文中的具体实例。事实上,DevOps的基础部分,体现了精益原则的影响和应用。
回顾敏捷、精益和DevOps的发展,我们可以得出如下两个结论。
第一,DevOps 是敏捷开发实践的自然发展。敏捷开发的目标是“更早地交付价值,更灵活地应对变化”。敏捷运动始于开发侧,但运维侧如果不做改变,就一定会成为瓶颈,最终敏捷的目标还是无法达成。为了让敏捷实践发挥真正的价值,开发运维的联动就势在必行了。
第二,DevOps是精益思想应用在IT领域的必然结果。精益产品开发的目标是:“顺畅的交付有效价值”,精益思想则要求端到端的系统优化和持续的改进。而开发和运维是系统的两个重要组成部分,缺一不可。DevOps三原则,正是精益思想在IT开发运维领域的具体实例。
最后,从精益思想出发,我们可以看到DevOps的必然发展方向,那就是向业务侧延伸。业务是产品开发和运维的源头,完整的价值流必须从源头开始。这不是预测,而是正在发生的事实,大部分DevOps的实施都已经将业务侧包含在内,成为BizDevOps,只不过DevOps的称谓已经深入人心,我们也将延续DevOps的说法,但缺省情况下,它包含了业务在内。
DevOps发展的同时,数字化转型也成为了企业界的共识,大部分企业数字化框架都把DevOps作为最核心的能力之一,DevOps的影响范围也不断扩大,成为力求提升数字化能力的企业必然选择。下一节我们将在数字化转型这一背景下,分析DevOps要解决的根本问题。
「链接」
为什么DevOps很好,但却很难落地,大家对DevOps是怎么理解的?
DevOps不是一开始就有的,为什么现在的声音越来越大了。其实原因很简单,说明市场,也就是各软件公司碰到问题了,DevOps可以帮助解决这个问题,为客户创造价值。
那客户的问题又是什么呢?比如现在的互联网公司越来越多,市场的竞争也越来越激烈,产品迭代的频率越来越快,做得极致又成功的比如Netflix,可以做到一天发布好多次。如果还是像以前的模式,可能你的公司早就被淘汰掉了。
其实理解起来很简单,就像图上面一样Dev和Ops合作一起搞事情了(但上图的幽默用来隐喻实际的效果是刚刚好的)- 貌合神离。如果只管自己的一亩三分地,因为有各种KPI的原因,这也再正常不过。但试想一下,如果一家公司的KPI是:对开发团队,一个月内发布10个版本。对运维团队,线上环境可靠性是99.99%。很明显这样就会让开发团队和运维团队一下子变成了对立面。如果想快速发布版本,得过质量(测试团队)的关,还有运维团队的关,因为要上线,可能因基础设施等各种原因受到影响。再说运维团队,会很小心的测试,因为好容易弄稳定的环境,你又给我增加了新的风险,我当然不乐意了。
因为上面的种种制度的原因,再加上将Ops前置,导致的工作量和工作复杂度的加大,因为在软件行业,并没有因为新事务的出现,而消灭了一些复杂度,而是将复杂度从一个地方搬到了另一个地方。所以难度是变大了的。组织结构不动,观念不调整,就已经为DevOps落地埋下了失败的种子,再加上能力上需要提升,就会让这件好事情离成功越来越远。
大厂一定要用DevOps?
因为互联网上涌入的网民在海量的增加),互联网企业的竞争也开始变得激烈,同一块蛋糕很多人(大厂)来抢来分,快速迭代产品,快速占领市场,快速占据用户心智成为了各互联网公司的目标,此时的开发模型变成了DevOps,需要持续开发、持续集成、持续测试、持续部署、持续监控,每一次代码的改动都触发一次校验,每天每时每刻都可进行新版本的上线。
在人力成本如此之高、市场竞争如此之激烈、用户需求变化如此之频繁的情况下,DevOps是大厂必须选用的一条路。
结语:以上就是首席CTO笔记为大家介绍的关于为什么要devops的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。