导读:本篇文章首席CTO笔记来给大家介绍有关devops为什么这么火的相关内容,希望对大家有所帮助,一起来看看吧。
关于DevOps 的那些事
在2008年多伦多举办的敏捷大会(Velocity Conf 2008 )上,Patrick DeBois 和AndrewClay Shafer 先生首次提议讨论“敏捷基础架构”这个话题。在第二年的敏捷大会上有一个具有里程碑的意义技术分享,来自Flickr公司《每天部署10次》的分享,它激发了随后Patrick DeBios在同年十月,在比利时的根特市举办的首届DevOpsDays活动,这个活动是两天的日程,为了大家方便在twitter上的传播,人们把DevOpsDays这个词简写为 “#DevOps” 。 此后,“DevOps”一词问世了,这个词所包含的理念和实践一时在越来越广大的人群中产生了共鸣,随后成为全球IT界在各种大会和论坛里热议和讨论的焦点话题,很多大型IT论坛也都开设出了DevOps专题讨论。这就是DevOps这个词的由来。
DevOpsDays活动随后在Patrick DeBios等相关核心发起人的推动下,在全球范围内蓬勃发展了起来。2010年在美国山景城(Mountain View) 举办的DevOpsDays 活动中,Damon Edwards先生使用“CAMS”这个缩写,高度概括和诠释了DevOps,即文化(Culture)、自动化(Automation)、度量(Measurement or Metrics)和分享(Sharing)。随后Jez Humble先生将“L”精益 (Lean) 原则也加入其中,最终变成了CALMS。
♣ Culture(文化)- 是指拥抱变革,促进协作和沟通
♣ Automation(自动化)- 是指将人为干预的环节从价值链中消除
♣ Lean(精益)- 是指通过使用精益原则促使高频率循环周期
♣ Metrics(指标)- 是指衡量每一个环节,并通过数据来改进循环周期
♣ Sharing(分享)- 是指与他人开放分享成功与失败的经验,并在错误中不断学习改进
“CALMS”完全吻合Patrick DeBois先生所一向倡导的“DevOps is a human problem” (DevOps 是关于人的问题) 的理念 。
从DevOps概念的产生,到如今它在全球范围内的蔓延和认同,已经经历了9个年头的时间。它的火爆推广也伴随着IT行业的迅速变迁和发展,现在已经到了移动互联网时代的后半场,国内的信息化建设已经完成了很多年;如今各行各业的企业也都亟待完成全方位的数字化转型。IT信息技术的先进程度标志着一个企业的核心能力,任何一个成功的企业,敏捷高效的软件开发创新实力和IT管理综合能力不只是门面而已,而是实实在在的市场竞争能力。DevOps倡导打敏捷、持续交付和ITIL三种实践的组合拳,同时应用精益生产理念为基础的管理思想,这正在逐渐地被广泛的接受和认可。
在过去的几年中,国内的各种IT大会也蓬勃发展,其中DevOps相关的专题和分会场也颇受人们的关注。各种云计算、运维等IT技术的社交媒体也都非常重视DevOps这个话题的分享。一个专属于DevOps社群的、国际性的、有影响力的DevOps大会正呼之欲出。在这样的时代背景下DevOpsDays大会北京站在2017年的3月18日来到中国,在同年的8月18日上海,还要举办DevOpsDays Shanghai站的大会。
下面列举一些DevOpsDays大会的相关数据,数据来源于DevOpsDays.org 网站。从2009年到2016年,已经在全球的61个城市/国家成功地举办了117场。
下图是在过去九年中DevOpsDays大会在各个城市/国家的分布和举办次数。
今年也就是2017年预计举办30场,其中已经有18场确定了举办城市和日期;还有12个城市的召开日期待定;这不包括年内还可能会提出申办的城市。以上数据的统计时间在2017年三月。
随着国内BAT等互联网巨头的崛起,互联网公司的开发运维经验也越来越多的在国内的各种技术大会上传播。从最近这两年(2016年和2017年)的技术活动日程中可以看出,国内互联网从业人员也不约而同的用DevOps来定位和分享自己的优势和经验。他们是传播和分享运维侧DevOps实践的先头部队。
出了技术论坛的分享之外,很多线上线下的大会、论坛和讨论组也都越来越热议DevOps这一专题。国内其它相关流派的人群,例如敏捷和精益等,也对DevOps的蓬勃发展表示比较惊讶,DevOps与老牌的敏捷和精益等阵营也产生过一些争论。但这一切的发生也都增加了人们对于DevOps的更深入的兴趣。
在培训认证这方面,Exin DevOps Master是一个国际认证的培训;其它公司和组织也正在举办关于DevOps工具链的培训,这些培训则注重于技术实操,关注在构建端到端的流水线的搭建方面。从DevOps的职位招聘方面,可以看到DevOps工程师相关的职位越来越多了,在职位需求中DevOps这个技能成了加分项,DevOps相关工具的技能也或将成为简历的亮点。在IT行业内不管是开发还是运维团队的人,都开始了学习和接受的过程。
据我观察DevOps方面的厂商在最近3年呈现爆炸式的发展。我把他们分为三类:
目前国内大部分企业慢慢地开始关注了DevOps,大型传统企业也开始逐渐地从各个角度做试点和尝试。试点的角度和方向各不相同,有的从底层基础架构的容器化开始,有的从交付部署流水线的自动化开始;总的来说还处于初级的尝试阶段,还没有大规模成体系的推广。
综上所述,目前国内DevOps发展的阶段还属于起步阶段。就像是ITIL/ITSM在2003年左右的状态。由于DevOps是去中心化的,所以没有唯一、权威的上游厂商的存在,各种理论实践的争执和PK都将终止与解决问题和提高效率的话题上,因此它具有百花齐放百家争鸣的发展条件。个人认为DevOps的实施和落地也不会完全依赖于传统的大型咨询厂商的咨询工作,由于它应该是在企业的内部,在内驱的作用下,自生长出来的;它必须是服务于企业的业务价值流的优化,加速业务价值产出的;而与之相关的工作和责任的担当,外部力量是很难以等量替换和承担的。
在谈这个话题前先看一下DevOps相关工具集的全貌,如下图所示:
最上面的箭头流程图表示了一个业务服务的全生命周期:开发协作、软件构建、质量测试、交付部署和投产运维。前三个阶段偏传统开发组织的工作内容,后两个阶段基本可以和运维组织的工作对应上。在每个阶段下可以看成是一个大分类,这些分类中还包含若干个小分类。这些工具可以粗放的划分为商业软件和开源软件两类;也可以分为SaaS服务类和企业内部部署型。大部分开源工具都有活跃的用户社区和群众基础,这给企业入手这些工具带来了很大的便利。在需要商业支持的场景里还可以选择使用这些开源软件的企业版。
Docker容器技术在最近三年中异军突起,持续交付的技术门槛因此被降到最低,软件生产供应链的格局和效率被彻底提升;基于Docker的微服务架构实践的热度和成熟度也与日俱增。因此,国内的传统企业纷纷试水DevOps和容器技术,在最近两年的各种技术大会中,我们可以看到国内各个行业出现了在不同维度上的DevOps先行者。他们分享的主题大多集中在自动化运维、容器化和PaaS平台的等项目经验。
从国内众多DevOps实践中,我们能看到下面三个技术尤其重要和火热:
以上三种技术相辅相成,有着比较深刻的关联。首先微服务和持续部署各自解决了特别多的传统IT的问题,这些问题都是长期以来制约企业业务发展的难题。容器技术由于它的快速、轻量、微服务化的天然特性,很好的从不同侧面支持了持续交付和微服务架构。容器可以为持续交付提供弹性和高速的系统资源,环境管理和利用率提高了很多;容器的不可变性的特点也更好地支持了微服务架构。
我把DevOps的按照不同的技术特征做了从到1.0 到2.0的时代划分,并尽量通过以下维度比较与传统方式的差异。
我比较认可和接受的企业实践DevOps参考框架如下,其中包含了所需的最佳实践,如下图所示。
(上图来源于:Exin DevOps白皮书)
下面简要描述一下这四大支柱型最佳实践:
由此可见DevOps在企业,特别是大规模传统企业的落地和推广还是比较复杂的。虽然相关的最佳实践都是已经存在了很多年的;但是,通过DevOps的价值观重构企业从研发到交付到运维的价值流谈何容易。基于我的IT从业经验,我似乎感觉到DevOps不能单独依靠自顶向下的推广,当然高层领导的支持依然是重要的和必备的支持条件之一。 可能还需要中层的带动和底层的创新;借鉴生产制造业已经久经考验的精益制造实践也是势在必行。总之DevOps运动会在近几年给IT行业带来较大影响。
devops能热起来吗
devops能热起来。
工具之间的相互配合可以在软件的生命周期内提供支持,所以Devops的应用要依赖很多工具。 可以找谷安天下。
DevOps 的目标是缩短开发周期,增加部署频率,更可靠的发布。用户可通过完整的工具链,深度集成代码仓库、制品仓库、项目管理、自动化测试等类别中的主流工具,实现零成本迁移,快速实践 DevOps。
DevOps对应用程序发布的影响:
(1)减少变更范围与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。
(2)加强发布协调靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。
devops的优势有哪些?
DevOps 有哪些优势?
有“2020 年 DevOps 趋势调查”表明,99% 的调查对象表示 DevOps 对他们的组织产生了积极影响。DevOps 的优势包括更快且更轻松的发布、团队效率、更高的安全性、更高品质的产品,以及更高的团队和客户满意度。
速度
更频繁地实践 DevOps 发布可交付成果的团队具有更高的品质和稳定性。事实上,DORA 2019 年 DevOps 状况报告发现,精英团队的部署频率和速度分别比表现不佳的团队高出 208 倍和 106 倍。持续交付使得团队可以使用自动化工具来构建、测试和交付软件。
改进协作
DevOps 的基础是开发人员和运营团队之间的协作文化,他们会分担责任,协调工作。此举可以提高团队的效率,并省去工作交接和编写专为其运行环境而设计的代码的时间。
快速部署
通过提高发布的频率和速度,DevOps 团队可以快速地改进产品。快速发布新功能和修复缺陷有助于获得竞争优势。
质量和可靠性
持续集成和持续交付等实践可确保变更正常运行且安全无误,从而提高软件产品的质量。监控则有助于团队实时了解性能。
安全性
通过将安全性集成到持续集成、持续交付和持续部署管道中,DevSecOps 成为开发过程中一个活跃的组成部分。通过将主动安全审计和安全测试集成到敏捷开发和 DevOps 工作流中,可将安全性植入产品内。
Devops 不是任何一个个人的工作,而是每个人的工作。
从传统的基础架构转向使用基础架构即代码 (IaC) 和微服务可以加快开发和创新速度,但增加的运营工作量可能极具挑战性。最好为自动化、配置管理和持续交付实践奠定坚实的基础,以帮助减负。
过度依赖工具会使团队偏离 DevOps 的必要基础:团队和组织结构。一旦建立了结构,就应该建立流程和团队,然后确定工具。
什么是DevOps的基石?为什么顶级公司都离不开它?
CI/CD管道实现,或持续集成/持续部署,是现代DevOps环境的基石。它通过自动化应用程序的构建、测试和部署来弥补开发团队和操作团队之间的差距。在本文中,我们将介绍什么是CI/CD管道以及它是如何工作的。
在进入CI/CD管道之前,让我们先了解一下什么是DevOps?
DevOps是一种软件开发方法,它涉及软件的持续开发、持续测试、持续集成、持续部署,以及在整个开发生命周期中对软件的持续监控。这是所有顶级公司都采用的开发高质量软件和缩短开发生命周期的过程,从而提高客户满意度,这是每个公司都想要的。
想学习DevOps?就需要先理解它的生命周期。我们下面来看看DevOps的生命周期,并探讨一下它与各个软件开发阶段之间的关系。
CI代表了持续集成,而CD则代表着持续交付或持续部署。如上图所示,您可以将其视为类似于软件开发生命周期的一个过程
让我们具体来看看它是如何工作的。上述管道从逻辑的角度演示、说明了软件是如何沿着其生命周期的每个阶段向前移动,直至最终被交付给客户或部署到生产环境中。
让我们假设一个CI/CD的管道场景。例如:您要构建一个Web应用程序,并将它部署到在线的Web服务器上。那么您手头应该有一组负责代码编写的开发团队,他们将进一步去着手构建Web应用程序。
最初,开发团队将软件代码提交到版本控制系统(如git或svn)。接下来,代码进入构建阶段,这是管道的第一个阶段,开发人员将其代码导入其中,进而在打上适当的版本标签之后,再返回到版本控制系统。
假设我们手头已有一些Java程序代码,并且需要在执行之前进行构建。那么在经过了刚才的版本控制阶段,代码再次来到构建阶段,并在此完成编译。所谓构建阶段,实际上就是您从不同的存储库分支处获取该代码的所有特征,通过合并,最后使用编译器来对它进行编译的整个过程。
一旦完成了构建,我们就进入到了测试阶段。在此阶段中,我们将采取各种测试,其中包括:功能块测试、单元测试、以及可用性测试
在测试完成之后,我们将移步至部署阶段,即:将代码部署到暂存服务器或测试服务器中。在此阶段,您可以通过模拟器来查看具体的代码,及其整个应用程序的运行状况。
一旦成功部署了代码,您就可以开展另一轮可用性测试了。如果一切正常,那么该代码就可以被部署到生产环境了。
同时,如果在任何一个步骤中出现了错误,您完全可以通过电子邮件发回给开发团队,以便他们及时予以修复。然后,他们会将新的代码推送到版本控制系统中,让其重回管道。
此流程周而复始,直到我们完成所有的测试与验证,最终将代码部署并导入生产环境的服务器上。
至此,我们已经了解了CI/CD管道及其工作原理。下面,我们一起来看看何为Jenkins、如何通过Jenkins来部署演示性代码、以及自动化整个过程。
CI工具及其他在CI/CD管道中的重要性。
我们的任务是:从开发团队提交代码,到我们将其投入生产环境的全过程,实现自动化。因此,为了在整个软件开发生命周期中实现DevOps管道的自动化模式,我们需要用到一些相应的自动化工具。
Jenkins为我们提供了各种接口和工具,来自动化整个软件交付的过程。
首选,我们需要有一个Git的存储库,以供开发团队提交他们的代码。然后,Jenkins就从此处开始“接手”。它是一款前端工具,您可以自定义整个工作流或任务。在此,我们的工作就是要确保对特定工具、或特定应用程序,实现持续集成与交付的过程。
从Git的角度而言,Jenkins采取的是“拉代码”的模式,然后Jenkins转向交付阶段,实现从各个分支提交代码。构建阶段主要进行的是代码编译。如果是Java代码,我们可以使用Jenkins中诸如maven之类的工具,来编译代码,并且通过运行一系列测试来实现部署。同样,这些测试案例也都是由Jenkins来进行“监管”的。
之后,代码被转移到缓存服务器上,以便使用Docker来进行部署。最后,在经过一系列单元测试和可用性测试之后,代码“流入”生产环境。
Docker是一个虚拟环境,我们可以在其中创建服务器。实际上,创建一整台服务器、并部署需要测试的工件也只需要几秒钟的时间。
那么我们该如何使用Docker呢?
如前所述,通过存储库,我们不但可以永久性地存储各种镜像,还能几秒钟之内构建出自己的镜像系统,并且运行整个集群。另外,您还可以在任何环境中随时对它们进行按需复制。
动手实践:使用Docker和Jenkins来构建CI/CD管道
步骤 1:在VM中打开终端,使用以下命令启动Jenkins和Docker:
systemctl start jenkins
systemctl enable jenkins
systemctl start docker
注意: 如果系统显示“特权错误(privileges error)”,请在上述命令之前先使用sudo。
步骤 2:在指定端口上打开Jenkins。单击“新建项目”以创建新的作业。
步骤 3:选择一个自由类型(freestyle)项目,并输入项目的名称(此处我使用的是Job1),然后单击确定。
步骤 4:选择源代码管理(Source Code Management)并点选Git存储库。单击应用并保存(Apply and Save)按钮。
步骤 5:然后依次点击构建(Build) - 选择执行(Execute)Shell。
步骤 6:逐条输入shell命令。在此,它将通过建立存档文件,来产生一个war文件。之后,它通过“拉”的方式获得相关代码,并且使用maven来安装软件包。注意,它只需安装各个依赖项,并对应用程序进行编译。
步骤 7:单击“新建项目”,以创建新的作业
步骤 8:选择自由类型(freestyle)项目,并输入项目的名称(此处我使用的是Job2),然后单击确定
步骤 9:选择源代码管理(Source Code Management)并点选Git存储库。单击应用并保存(Apply and Save)按钮。
步骤 10:然后依次点击构建(Build) - 选择执行(Execute)Shell。
步骤 11:逐条输入shell命令。在此,它将进入集成阶段,并生成相应的Docker容器。
步骤 12:单击“新建项目”,以创建新的作业。
步骤 13:选择自由类型(freestyle)项目,并输入项目的名称(此处我使用的是Job3),然后单击确定
步骤 14:选择源代码管理(Source Code Management)并点选Git存储库。单击应用并保存(Apply and Save)按钮。
步骤 15:然后依次点击构建(Build) - 选择执行(Execute)Shell。
步骤 16:逐条输入shell命令。在此,它将检查Docker的容器文件,然后将其部署到8180号端口上。请单击“保存”按钮。
步骤 17:现在依次点击Job1 - 配置(Configure)。
步骤 18:单击构建后操作(Post-build Actions) - 构建其他项目(Build other projects)。
步骤 19:输入在Job1之后构建的项目名称(此处为Job2),然后单击“保存”。
步骤 20:现在点击Job2 - 配置(Configure)。
步骤 21:单击构建后操作(Post-build Actions) - 构建其他项目(Build other projects)
步骤 22:输入在Job2之后构建的项目名称(此处为Job3),然后单击“保存”。
步骤 23:现在,我们将创建一个管道的视图。请点击“+”号。
步骤 24:选择“构建管道视图(Build Pipeline View)”,并输入视图的名称(此处我命名为CI CD Pipeline)。
步骤 25:选择初始化作业(initialJob,这里我输入了Job1),并单击确定。
步骤 26:单击“运行(Run)”按钮,以启动CI/CD进程。
步骤 27:在成功构建之后,请输入localhost:8180/sample.text。它将能够运行该应用程序。
至此,我们已经了解了如何使用Docker和Jenkins来创建一个CI/CD管道。
记住:DevOps的宗旨就是为了能够更快速、更可靠地创建出更高质量的软件,同时也能促进团队之间更密切的沟通和协作。
听到很多IT专业的人再说DevOps,什么是DevOps啊?
DevOps=Developers+Operators,即开发团队和运维团队一体化,有了 DevOps ,团队可以定期发布代码、自动化部署、并将持续集成 / 持续交付作为发布过程的一部分。
DevOps 的概念对于使大型应用程序在不同负载或流量下保持高性能是非常有益的,它使软件部署管道易于管理。但如果没有可用的工具,DevOps 概念就很难实现。这个领域有很多工具,比如Terraform、Artifactory、Packer、Docker、Kubernetes等等,像JFrog的Artifactory,就是能够支持所有不同开发语言的二进制制品管理仓库。
为什么DevOps很好,但却很难落地,大家对DevOps是怎么理解的?
DevOps不是一开始就有的,为什么现在的声音越来越大了。其实原因很简单,说明市场,也就是各软件公司碰到问题了,DevOps可以帮助解决这个问题,为客户创造价值。
那客户的问题又是什么呢?比如现在的互联网公司越来越多,市场的竞争也越来越激烈,产品迭代的频率越来越快,做得极致又成功的比如Netflix,可以做到一天发布好多次。如果还是像以前的模式,可能你的公司早就被淘汰掉了。
其实理解起来很简单,就像图上面一样Dev和Ops合作一起搞事情了(但上图的幽默用来隐喻实际的效果是刚刚好的)- 貌合神离。如果只管自己的一亩三分地,因为有各种KPI的原因,这也再正常不过。但试想一下,如果一家公司的KPI是:对开发团队,一个月内发布10个版本。对运维团队,线上环境可靠性是99.99%。很明显这样就会让开发团队和运维团队一下子变成了对立面。如果想快速发布版本,得过质量(测试团队)的关,还有运维团队的关,因为要上线,可能因基础设施等各种原因受到影响。再说运维团队,会很小心的测试,因为好容易弄稳定的环境,你又给我增加了新的风险,我当然不乐意了。
因为上面的种种制度的原因,再加上将Ops前置,导致的工作量和工作复杂度的加大,因为在软件行业,并没有因为新事务的出现,而消灭了一些复杂度,而是将复杂度从一个地方搬到了另一个地方。所以难度是变大了的。组织结构不动,观念不调整,就已经为DevOps落地埋下了失败的种子,再加上能力上需要提升,就会让这件好事情离成功越来越远。
结语:以上就是首席CTO笔记为大家整理的关于devops为什么这么火的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于devops为什么这么火的相关内容别忘了在本站进行查找喔。