导读:今天首席CTO笔记来给各位分享关于为什么用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的宗旨就是为了能够更快速、更可靠地创建出更高质量的软件,同时也能促进团队之间更密切的沟通和协作。
Devops概述
目前在国外,互联网巨头如Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb,传统软件公司如Adobe、IBM、Microsoft、SAP等,亦或是网络业务非核心企业如苹果、沃尔玛、索尼影视娱乐、星巴克等都在采用DevOps或提供相关支持产品。那么DevOps究竟是怎样一回事?
DevOps一次词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
DevOps概念早先升温于2009年的欧洲,因传统模式的运维之痛而生。
DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps其实包含了三个部分:开发、测试和运维。
换句话说,DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。专家们总结出了下面这个DevOps能力图,良好的闭环可以大大增加整体的产出。
由上所述,相信大家对DevOps有了一定的了解。但是除了触及工具链之外,作为文化和技术的方法论,DevOps还需要公司在组织文化上的变革。回顾软件行业的研发模式,可以发现大致有三个阶段:瀑布式开发、敏捷开发、DevOps。
DevOps早在九年前就有人提出来,但是,为什么这两年才开始受到越来越多的企业重视和时间呢?因为DevOps的发展是独木不成林的,现在有越来越多的技术支撑。微服务架构理念、容器技术使得DevOps的实施变得更加容易,计算能力提升和云环境的发展使得快速开发的产品可以立刻获得更广泛的使用。
当今世界改变的速度已与过去不同,而每当经历一个颠覆性的技术革命时,都给这个世界带来了深刻的变化,大数据、云计算、人工智能、VR/AR和区块链等新兴技术推动着世界不断变化,如何应对这样一个VUCA时代,让我们能够在环境变化的时候快速响应呢?
在些我引用了圣贤王阳明的一句名言,他提倡“知行合一”,通俗的讲就是做事情要理论与实践相结合。我们在实现DevOps落地时也一定要遵循“理论与实践相结合”的方式进行,理论就是我们做事的指导思想,而实践就是具体做事的方法,接下来我就从我在公司中是如何按照理论与实践相结合来推动DevOps落实地。
首先我们还是要回到什么是DevOps,如果大家忘记了可以回到之前再温故一下,包括我总结的DevOps公式。
其实DevOps核心思想就是:“快速交付价值,灵活响应变化”。其基本原则如下:
DevOps的一个巨大好处就是可以高效交付,这也正好是它的初衷。Puppet和DevOps Research and Assessment (DORA) 主办了2016年DevOps调查报告中,根据全球4600位各IT公司的技术工作者的提交数据统计,得出高效公司可以完成平均每年1460次部署。与低效组织相比,高效组织的部署频繁200倍,产品投入使用速度快2555倍,服务恢复速度快24倍。在工作内容的时间分配上,低效者要多花22%的时间用在为规划好或者重复工作上,而高效者却可以多花29%的时间用在新的工作上。所以这里的高效不仅仅指公司产出的效率提高,还指员工的工作质量得到提升。
DevOps另外一个好处就是会改善公司组织文化、提高员工的参与感。员工们变得更高效,也更有满足和成就感;调查显示高效员工的雇员净推荐值(eNPS:employee Net Promoter Score)更高,即对公司更加认同。
快速的部署其实可以帮助更快地发现问题,产品被更快地交付到用户手中,团队可以更快地得到用户的反馈,从而进行更快地相应。而且,DevOps小步快跑的形式带来的变化是比较小的,出现问题的偏差每次都不会太大,修复起来也会相对容易一些。
因此,认为速度就意味着危险是一种偏见。此外,滞后软件服务的发布也并不一定会完全地避免问题,在竞争日益激烈的IT行业,这反而可能错失了软件的发布时机。
技术的发展使得DevOps有了更多的配合。早期时,大家虽然意识到了这个问题的,但是苦于当时没有完善丰富的技术工具,是一种“理想很丰满,但是现实很骨感”的情况。DevOps的实现可以基于新兴的容器技术;也可以在自动化运维工具Puppet、SaltStack, Ansible之后的延伸;还可以构建在传统的Cloud Foundry、OpenShift等PaaS厂商之上。
IT行业已经越来越于市场的经济发展紧密挂钩,专家们认为IT将会有支持中心变成利润驱动中心。事实上,这个变化已经开始了,这不仅体现在Google、苹果这些大企业中,而且也发生在传统行业中,比如出租车业务中的Uber、酒店连锁行业中的Airbnb、图书经销商Amazon等等。能否让公司的IT配套方案及时跟上市场需求的步伐,在今天显得至关重要。
DevOps 2016年度报告给出了一个运维成本的计算公式:
而对于工程师而言,他们也是DevOps的受益者。微软资深工程师Scott Hanselman说过“对于开发者而言,最有力的工具就是自动化工具”(The most powerful tool we have as developers is automation)。工具链的打通使得开发者们在交付软件时可以完成生产环境的构建、测试和运行;正如Amazon的VP兼CTO Werner Vogels那句让人印象深刻的话:“谁开发谁运行”。(You build it, you run it)
上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下:
在工具的选择上,需要结合公司业务需求和技术团队情况而定。(注:更多关于工具的详细介绍可以参见此文: 51 Best DevOps Tools for #DevOps Engineers )
DevOps成功与否,公司组织是否利于协作是关键。开发人员和运维人员可以良好沟通互相学习,从而拥有高生产力。并且协作也存在在业务人员与开发人员之间。出席了ITV公司在2012年就开始落地DevOps,其通用平台主管Clark在2016年伦敦企业级DevOps峰会接受InfoQ了采访,在谈及成功时表示,业务人员非常清楚他们希望在最小化可行产品中实现什么,工程师们就按需交付,不做多余工作。这样,工程师们使用通用的平台(即打通的工具链)得到更好的一致性和更高的质量。此外,DevOps对工程师个人的要求也提高了,很多专家也认为招募到优秀的人才也是一个挑战。
DevOps正在增长,尤其是在大企业中:调查发现,DevOps的接受度有了显著提高。74%的受访者已经接受了DevOps,而去年这一比例为66%。目前,在81%的大企业开始接受DevOps,中小企业的接受度仅为70%。
那么具体而言都有些公司在采用DevOps呢?Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Target(泛欧实时全额自动清算系统)、Walmart、Sony等等。
首先,大企业正在自下而上接受DevOps,其中业务单位或部门(31%)以及项目和团队(29%)已经实施DevOps。不过,只有21%的大企业在整个公司范围内采用了DevOps。
其次,在工具层面上,DevOps工具的用量大幅激增。Chef和Puppet依然是最常用的DevOps工具,使用率均为32%。Docker是年增长率最快的工具,用量增长一倍以上。Ansible的用量也有显著增加,使用率从10%翻倍至20%。
并且调查还发现不到半数(43%)的公司在使用诸如Chef、Puppet、Ansible或Salt等配置工具;然而使用配置工具的公司更有可能同时使用多个工具。25%的受访者使用两种或更多配置工具,只使用一种工具的比例为18%。其中Chef和Puppet是最常用的组合:使用Chef的组织中有67%同时也使用Puppet,类似的,使用Puppet的组织中也有67%同时使用了Chef。
devops的优势有哪些?
DevOps 有哪些优势?
有“2020 年 DevOps 趋势调查”表明,99% 的调查对象表示 DevOps 对他们的组织产生了积极影响。DevOps 的优势包括更快且更轻松的发布、团队效率、更高的安全性、更高品质的产品,以及更高的团队和客户满意度。
速度
更频繁地实践 DevOps 发布可交付成果的团队具有更高的品质和稳定性。事实上,DORA 2019 年 DevOps 状况报告发现,精英团队的部署频率和速度分别比表现不佳的团队高出 208 倍和 106 倍。持续交付使得团队可以使用自动化工具来构建、测试和交付软件。
改进协作
DevOps 的基础是开发人员和运营团队之间的协作文化,他们会分担责任,协调工作。此举可以提高团队的效率,并省去工作交接和编写专为其运行环境而设计的代码的时间。
快速部署
通过提高发布的频率和速度,DevOps 团队可以快速地改进产品。快速发布新功能和修复缺陷有助于获得竞争优势。
质量和可靠性
持续集成和持续交付等实践可确保变更正常运行且安全无误,从而提高软件产品的质量。监控则有助于团队实时了解性能。
安全性
通过将安全性集成到持续集成、持续交付和持续部署管道中,DevSecOps 成为开发过程中一个活跃的组成部分。通过将主动安全审计和安全测试集成到敏捷开发和 DevOps 工作流中,可将安全性植入产品内。
Devops 不是任何一个个人的工作,而是每个人的工作。
从传统的基础架构转向使用基础架构即代码 (IaC) 和微服务可以加快开发和创新速度,但增加的运营工作量可能极具挑战性。最好为自动化、配置管理和持续交付实践奠定坚实的基础,以帮助减负。
过度依赖工具会使团队偏离 DevOps 的必要基础:团队和组织结构。一旦建立了结构,就应该建立流程和团队,然后确定工具。
DevOps有什么作用?
DevOps 是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。时速云做的还不错,是一家全栈云原生技术服务提供商,可以了解下。
大厂一定要用DevOps?
因为互联网上涌入的网民在海量的增加),互联网企业的竞争也开始变得激烈,同一块蛋糕很多人(大厂)来抢来分,快速迭代产品,快速占领市场,快速占据用户心智成为了各互联网公司的目标,此时的开发模型变成了DevOps,需要持续开发、持续集成、持续测试、持续部署、持续监控,每一次代码的改动都触发一次校验,每天每时每刻都可进行新版本的上线。
在人力成本如此之高、市场竞争如此之激烈、用户需求变化如此之频繁的情况下,DevOps是大厂必须选用的一条路。
结语:以上就是首席CTO笔记为大家介绍的关于为什么用devops的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。