《CI/CD(持续集成构建/持续交付):如何测试/集成/交付项目代码?(Jenkins,TravisCI)》

《为什么选择AWS for DevOps?》

《What is DevOps?》

Table of Contents

什么是DevOps?

DevOps模型已定义


DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。

可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。

传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而却需要极其紧密的多部门协作。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协作问题的流程和方法。

需要频繁交付的企业可能更需要对DevOps有一个大致的了解。Flickr发展了自己的DevOps能力,使之能够支撑业务部门“每天部署10次”的要求──如果一个组织要生产面向多种用户、具备多样功能的应用程序,其部署周期必然会很短。这种能力也被称为持续部署,并且经常与精益创业方法联系起来。 从2009年起,相关的工作组、专业组织和博客快速涌现。

DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出问题的地方。

以下几方面因素可能促使一个组织引入DevOps:

  • 1、使用敏捷或其他软件开发过程与方法
  • 2、业务负责人要求加快产品交付的速率
  • 3、虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍
  • 4、数据中心自动化技术和配置管理工具的普及
  • 5、有一种观点认为,占主导地位的“传统”美国式管理风格(“斯隆模型 vs 丰田模型”)会导致“烟囱式自动化”,从而造成开发与运营之间的鸿沟,因此需要DevOps能力来克服由此引发的问题。

DevOps经常被描述为“开发团队与运营团队之间更具协作性、更高效的关系”。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。

DevOps对应用程序发布的影响

在很多企业中,应用程序发布是一项涉及多个团队、压力很大、风险很高的活动。然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下 [1]  :

(1)减少变更范围

与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。

(2)加强发布协调

靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。

(3)自动化

强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。

与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位) https://baike.baidu.com/item/devops/2613029

什么是DevOps?

https://docs.microsoft.com/en-us/azure/devops/learn/what-is-devops


创建人:Sam Guckenheimer

DevOps是人员,流程和产品的结合,可为我们的最终用户持续交付价值。 多诺万·布朗

“开发”和“运营”的收缩是指取代孤立的开发和运营来创建多学科的团队,这些团队现在可以与共享的高效实践和工具一起工作。DevOps的基本实践包括敏捷计划,持续集成,持续交付以及对应用程序的监视。

进入DevOps

不要害怕DevOps。有些团队是DevOps诞生的。有些实现了DevOps;其他人则对他们施加了DevOps。3什么是DevOps?DevOps为什么重要?为什么现在?您如何成功实现DevOps?这些是我们想要研究的主题。

了解您的周期时间

让我们从有关软件开发的基本假设开始。我们将通过OODA循环对其进行描述。4最初设计目的是防止战斗机飞行员从空中射击,OODA循环是考虑保持领先竞争对手的好方法。您首先要观察业务,市场,需求,当前用户行为以及可用的遥测数据。然后,您可以针对可能提供的选项进行枚举(也许是通过实验)。接下来,您决定要追求什么,然后通过向实际用户交付有效的软件来采取行动。所有这些都在某个周期时间内发生。

成为数据通知者

希望您可以使用数据来告知下一个周期该做什么。许多经验报告告诉我们,大约三分之一的部署将产生负面的业务成果,大约三分之一的将取得积极的成果,而三分之一将没有任何影响。理想情况下,您希望对那些无法推动业务发展的企业迅速失败,而对那些能够支持业务发展的企业却要加倍努力。有时这称为枢轴或坚持不懈。

努力进行有效学习

快速失败或翻倍失败的速度取决于循环所需的时间,或者精简而言,取决于循环时间。您的周期时间决定了您收集反馈以确定下一个循环中发生的情况的速度。您在每个周期中收集的反馈应该是真实的,可操作的数据。这称为验证学习。

缩短周期时间

当您采用DevOps做法时,可以通过较小的批次工作,使用更多的自动化功能,强化发布管道,改进遥测和更频繁地部署来缩短周期时间。6

优化经过验证的学习

您部署的频率越多,您可以进行的实验就越多,则必须进行枢转或坚持不懈的机会就越多,并且每个周期都需要经过验证的学习。经过验证的学习的这种加速是改进的价值。将其视为您实现的改进与避免的失败的总和。

如何实现DevOps

请记住,目标是缩短周期时间。从发布管道开始。部署一行代码或配置更改需要多长时间?最终,这就是您的速度刹车。

Continuous Integration drives the ongoing merging and testing of code, which leads to finding defects early. Other benefits include less time wasted on fighting merge issues and rapid feedback for development teams.持续集成推动了代码的持续合并和测试,从而导致尽早发现缺陷。 其他好处包括更少的时间用于解决合并问题,以及为开发团队提供快速反馈。

持续向生产和测试环境交付软件解决方案可帮助组织快速修复错误并响应不断变化的业务需求。

通常使用Git进行版本控制,可使位于世界各地的团队在日常开发活动中进行有效的沟通,并与软件开发工具集成以监视活动(如部署)。

敏捷计划和精益项目管理技术用于将工作计划和隔离为冲刺,管理团队容量并帮助团队快速适应不断变化的业务需求。DevOps定义为Done的工作软件正在收集针对预期业务目标的遥测。

监视和记录正在运行的应用程序,包括用于应用程序运行状况和客户使用情况的生产环境,可帮助组织形成假设并快速验证或否定策略。捕获丰富的数据并以各种日志记录格式存储。

公共云和混合云使不可能成为可能。云消除了传统的瓶颈,并使基础设施商品化。无论您是使用基础架构即服务(IaaS)来提升和转移现有应用程序,还是使用平台即服务(PaaS)来获得空前的生产力,云都可以为您提供无限制的数据中心。

基础设施即代码(IaC)是一种实践,可实现环境创建和拆卸的自动化和验证,以帮助交付安全稳定的应用程序托管平台。

微服务架构被利用来将业务用例隔离成可小型重用的服务,这些服务通过接口合同进行通信。这种架构可实现可伸缩性和效率。

容器是虚拟化的下一步发展。它们比虚拟机轻巧得多,可以更快地进行水合作用,并且可以通过文件轻松配置。

DevOps首先可能会受到伤害

如果很痛,请经常做。就像去体育馆一样,采取新的练习一开始可能会受到伤害。您练习新习惯的次数越多,它们就会变得越容易。就像在健身房训练一样,先锻炼大块肌肉,然后再锻炼小块肌肉,首先采用影响最大的方法,并进行交叉训练以产生协同作用。

参考文献

1(Gartner)“ Gartner表示,到2016年,DevOps将从利基市场发展成为全球25%的2000组织所采用的主流策略”,http://www.gartner.com/newsroom/id/2999017

2 Gene Kim,Jez Humble,Patrick Debois和John Willis,《 DevOps手册》,2016年,第1页。xi

第十二夜向莎士比亚致敬3道歉

4约翰·R·博伊德,《得与失的本质》,1995年6月28日,博伊德写的五张幻灯片。另请参阅Adrian Cockcroft,http: //www.slideshare.net/adriancockcroft/speeding-up-31799721

5 Kohavi等。http://ai.stanford.edu/~ronnyk/ExPThinkWeek2009Public.pdf

6埃里克·里斯(Eric Ries),精益创业

DevOps模型已定义

https://aws.amazon.com/devops/what-is-devops/


DevOps是文化理念,实践和工具的组合,可提高组织高速交付应用程序和服务的能力:与使用传统软件开发和基础架构管理流程的组织相比,产品的发展和改进速度更快。这种速度使组织可以更好地为客户提供服务,并在市场上更有效地竞争。

DevOps如何运作

在DevOps模式下,开发和运营团队不再“孤立”。有时,这两个团队合并为一个团队,工程师在整个应用程序生命周期(从开发和测试到部署再到运营)中进行工作,并开发了不仅限于单个功能的一系列技能。

在某些DevOps模型中,质量保证和安全团队也可能与开发和运营以及整个应用程序生命周期紧密集成在一起。当安全是DevOps团队中每个人的重点时,有时将其称为DevSecOps。

这些团队使用实践来自动化过去一直是手动且缓慢的流程。他们使用技术堆栈和工具来帮助他们快速,可靠地操作和发展应用程序。这些工具还可以帮助工程师独立完成通常需要其他团队帮助的任务(例如,部署代码或配置基础结构),这进一步提高了团队的工作效率。

了解有关AWS DevOps工具和服务的信息»

DevOps的好处

速度

高速发展,您可以更快地为客户进行创新,更好地适应不断变化的市场,并在提高业务业绩方面更加高效。DevOps模型使您的开发人员和运营团队能够获得这些结果。例如,微服务和持续交付使团队可以拥有服务所有权,然后更快地向其发布更新。

快速交货

提高发布频率和发布速度,以便您可以更快地创新和改进产品。您可以越快地发布新功能并修复错误,就可以更快地响应客户的需求并建立竞争优势。持续集成和持续交付是使软件发布过程(从构建到部署)自动化的实践。

可靠性

确保应用程序更新和基础架构更改的质量,以便您可以以更快的速度可靠地交付,同时为最终用户保持良好的体验。使用诸如持续集成和持续交付之类的实践来测试每个更改的功能和安全性。监视和日志记录做法可帮助您实时了解性能。

规模

大规模运营和管理您的基础架构和开发流程。自动化和一致性可帮助您有效地管理复杂或不断变化的系统,并降低风险。例如,基础架构即代码可帮助您以可重复且更有效的方式管理开发,测试和生产环境。

改善协作

在DevOps文化模型下建立更有效的团队,该模型强调所有权和责任制等价值观。开发人员和运营团队紧密协作,共同承担许多责任,并结合他们的工作流程。这样可以降低效率,并节省时间(例如,减少开发人员和操作之间的切换时间,编写考虑到运行环境的代码)。

安全

快速移动,同时保持控制力并保持合规性。您可以通过使用自动遵从性策略,细粒度的控件和配置管理技术,在不牺牲安全性的情况下采用DevOps模型。例如,将基础结构用作代码,将策略用作代码,则可以定义并跟踪大规模合规性。

为什么DevOps很重要

软件和互联网已经改变了世界及其行业,从购物到娱乐再到银行。软件不再仅仅支持业务。相反,它成为业务每个部分不可或缺的组成部分。公司通过作为在线服务或应用程序以及在各种设备上交付的软件与客户互动。他们还使用软件,通过改变价值链的各个部分(例如物流,通讯和运营)来提高运营效率。整个20世纪,实物商品公司使用工业自动化改变了他们设计,构建和交付产品的方式,当今世界的公司必须改变其构建和交付软件的方式。

如何采用DevOps模型

DevOps文化哲学

向DevOps过渡需要文化和思维方式的转变。最简单的说,DevOps就是要消除两个传统上孤立的团队,开发和运营之间的障碍。在某些组织中,甚至可能没有单独的开发和运营团队。工程师可能会同时做。借助DevOps,这两个团队可以共同努力,以优化开发人员的生产力和运营的可靠性。他们努力进行频繁的沟通,提高效率,并改善向客户提供的服务质量。他们对服务拥有完全的所有权,通常超出了他们通常通过考虑最终客户的需求以及如何为解决这些需求做出贡献来确定其角色或职务的范围。质量保证和安全团队也可能与这些团队紧密集成。

DevOps实践说明

有一些关键实践可以通过自动化和简化软件开发和基础架构管理流程来帮助组织更快地进行创新。这些实践大多数都是通过适当的工具来完成的。

一种基本实践是执行非常频繁但很小的更新。这就是组织为客户更快地进行创新的方式。这些更新在本质上通常比在传统发行惯例下执行的偶然更新更具增量性。频繁但较小的更新使每个部署的风险降低。他们可以帮助团队更快地解决错误,因为团队可以确定导致错误的最后部署。尽管更新的节奏和大小会有所不同,但是使用DevOps模型的组织比使用传统软件开发实践的组织更频繁地部署更新。

组织还可以使用微服务架构来使其应用程序更加灵活并实现更快的创新。微服务架构将大型,复杂的系统分离为简单,独立的项目。应用程序分为许多单独的组件(服务),每个服务的范围仅限于一个目的或功能,并且独立于其对等服务和整个应用程序运行。这种体系结构减少了更新应用程序的协调开销,并且当每个服务与拥有每个服务所有权的小型敏捷团队配对时,组织可以更快地移动。

但是,微服务和更高的发布频率的组合导致显着更多的部署,这可能带来运营挑战。因此,诸如持续集成和持续交付之类的DevOps实践解决了这些问题,并使组织以安全可靠的方式快速交付。基础架构自动化实践(例如基础架构,如代码和配置管理)有助于保持计算资源的弹性并响应频繁的更改。此外,使用监视和日志记录可帮助工程师跟踪应用程序和基础结构的性能,以便他们可以对问题做出快速反应。

这些实践共同帮助组织为客户提供更快,更可靠的更新。这是重要的DevOps实践的概述。

DevOps实践

以下是DevOps的最佳做法:

  • 持续集成
  • 持续交付
  • 微服务
  • 基础架构即代码
  • 监控和记录
  • 沟通与合作

持续集成

持续集成是一种软件开发实践,其中,开发人员定期将其代码更改合并到中央存储库中,然后运行自动构建和测试。持续集成的主要目标是更快地发现和解决错误,提高软件质量,并减少验证和发布新软件更新所花费的时间。

了解有关持续集成的更多信息»

持续交付

持续交付是一种软件开发实践,在该实践中,将自动构建,测试和准备将代码更改发布到生产环境。它通过在构建阶段之后将所有代码更改部署到测试环境和/或生产环境来扩展持续集成。如果正确实现了持续交付,则开发人员将始终具有已通过标准化测试过程的可部署的构建工件。

了解有关连续交付和AWS CodePipeline的更多信息»

微服务

微服务架构是一种将单个应用程序构建为一组小型服务的设计方法。每个服务都在自己的进程中运行,并使用轻量级机制(通常是基于HTTP的应用程序编程接口(API))通过定义明确的接口与其他服务进行通信。微服务是围绕业务功能构建的;每项服务的范围仅限于一个目的。您可以使用不同的框架或编程语言来编写微服务并作为单个服务或一组服务独立部署它们。

了解有关Amazon Container Service(Amazon ECS)的更多信息»

了解有关AWS Lambda的更多信息»

基础架构即代码

基础架构即代码是一种实践,其中使用代码和软件开发技术(例如版本控制和持续集成)来配置和管理基础架构。云的API驱动模型使开发人员和系统管理员能够以编程方式大规模地与基础架构进行交互,而无需手动设置和配置资源。因此,工程师可以使用基于代码的工具与基础架构进行交互,并以类似于对待应用程序代码的方式来对待基础架构。因为它们是由代码定义的,所以可以使用标准化模式快速部署基础结构和服务器,可以使用最新的补丁程序和版本对其进行更新,或者以可重复的方式进行复制。

了解如何使用AWS CloudFormation以代码形式管理基础架构»

配置管理

开发人员和系统管理员使用代码来自动化操作系统和主机配置,操作任务等。使用代码使配置更改可重复且标准化。它使开发人员和系统管理员无需手动配置操作系统,系统应用程序或服务器软件。

了解如何使用Amazon EC2 Systems Manager配置和管理Amazon EC2和本地系统»

了解如何在AWS OpsWorks中使用配置管理»

政策即代码

通过将基础设施及其配置与云一起整理,组织可以动态地大规模监视和实施合规性。因此,可以以自动化方式跟踪,验证和重新配置由代码描述的基础结构。这使组织可以更轻松地管理资源变更,并确保以分布式方式正确实施安全措施(例如,信息安全或符合PCI-DSS或HIPAA)。由于不合规的资源可以被自动标记以进行进一步调查,甚至可以自动恢复到合规状态,因此组织内的团队可以以更高的速度前进。

了解如何使用AWS Config和Config Rules监视和强制实施基础架构的合规性»

监控和记录

组织监视指标和日志,以查看应用程序和基础架构性能如何影响其产品最终用户的体验。通过捕获,分类和分析由应用程序和基础架构生成的数据和日志,组织可以了解更改或更新如何影响用户,从而洞悉问题或意外更改的根本原因。随着服务必须24/7全天可用以及应用程序和基础结构更新频率的增加,主动监视变得越来越重要。创建警报或对此数据进行实时分析还有助于组织更主动地监视其服务。

了解如何使用Amazon CloudWatch监视基础架构指标和日志»

了解如何使用AWS CloudTrail记录和记录AWS API调用»

沟通与合作

组织中加强沟通与协作是DevOps的关键文化方面之一。DevOps工具的使用和软件交付过程的自动化通过将工作流程以及开发和运营职责实际整合在一起来建立协作。在此基础上,这些团队围绕信息共享设定了强大的文化规范,并通过使用聊天应用程序,问题或项目跟踪系统以及Wiki促进了交流。这有助于加速开发人员,运营部门以及其他团队(如市场营销或销售)之间的沟通,使组织的各个部门更紧密地结合目标和项目。

DevOps工具

DevOps模型依靠有效的工具来帮助团队快速,可靠地为其客户进行部署和创新。这些工具可自动执行手动任务,帮助团队大规模管理复杂环境,并使工程师能够控制DevOps所实现的高速运行。AWS提供了专为DevOps设计的服务,并且这些服务首先构建为与AWS云一起使用。这些服务可帮助您使用上述DevOps实践。

了解有关AWS DevOps服务的信息»

了解有关AWS合作伙伴解决方案的信息»

什么是DevOps?人员,流程和产品的结合,过程、方法与系统的统称相关推荐

  1. DevOps(过程、方法与系统的统称)是什么

    DevOps (过程.方法与系统的统称) DevOps(Development和Operations的组合词)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA ...

  2. 如何使用 CODING 实践 DevOps 全流程

    你好,欢迎使用 CODING!这份最佳实践将帮助你通过 CODING 研发管理系统来更好地实践 DevOps 流程. DevOps 的本质是打破各个部门之间的隔阂,打通企业的前中后台,推进跨部门协作. ...

  3. DevOps教程:DevOps 工作流程

    [注]本文译自:https://www.javatpoint.com/devops-workflow-and-principles DevOps 工作流程   DevOps 工作流程提供了输入顺序的直 ...

  4. devops工作流程_DevOps会偷我的工作吗?

    devops工作流程 人们普遍担心:DevOps会结束我的工作吗? 毕竟,DevOps意味着开发人员可以进行操作,对吗? DevOps是自动化的. 如果我自动失业,该怎么办? 连续交付和装箱是否意味着 ...

  5. 艺赛旗首席科学家、南京大学人工智能学院副院长黎铭教授出席iS-RPM流程挖掘产品发布会演讲分享

    <AI赋能的流程挖掘> 内容回顾 分享嘉宾:黎铭 2022年4月22日,艺赛旗联合RPA中国共同举办的<透视全业务 精进全流程-艺赛旗iS-RPM产品(流程挖掘)产品发布会>在 ...

  6. 从艺赛旗iS-RPM,看国产流程挖掘产品的发展与特性

    从艺赛旗iS-RPM,看国产流程挖掘产品的发展与特性 艺赛旗发布iS-RPM,国产流程挖掘产品有哪些特性与优势? 文/王吉伟 要问2022年业务流程领域哪个技术最火,绝对非流程挖掘莫属. 2019年, ...

  7. Mattermost+Jira集成加速DevOps工作流程

    Mattermost Jira集成可确保在正确的时间将通知发送给正确的团队和人员,使他们能够在不离开Mattermost的情况下进行项目管理配置. Mattermost Mattermost是为开发团 ...

  8. 技术人员如何参与产品设计讨论:激活那一潭死水

    http://www.csdn.net/article/2014-05-06/2819643-How-To-Get-To-Participate-In-Product-Design 很多时候,程序员与 ...

  9. 电子产品设计流程_产品设计“学习、就业、留学”全攻略

    近年来,产品设计一直是艺术留学的热门专业,而且这个专业也深受艺术留学生的欢迎,不管是本专业的继续深造还是跨专业的申请,许多小伙伴都对这个专业充满着兴趣和热爱,那什么是产品设计,都需要学习什么内容,如何 ...

最新文章

  1. feign调用走不走网关全局拦截_feign服务端出异常客户端处理的方法
  2. cqueue结构pop_c++ stl栈容器stack的pop(),push()等用法介绍及头文件
  3. debian apt-get 更新源文件格式说明
  4. Linux颜色所代表的文件类型
  5. leetcode 464. Can I Win | 464. 我能赢吗(博弈论,动态规划)
  6. 阮一峰react demo代码研究的学习笔记 - demo 3 debug
  7. Confluence 6 配置服务器基础地址示例
  8. KVM虚拟化查看虚拟机IP
  9. lower_bound
  10. JavaScript 简介 1
  11. 爱奇艺NLP:BiLSTM_CRF的关键词自动抽取
  12. 利用nginx-rtmp搭建视频点播、直播、HLS服务器
  13. spring学习-xml属性注入-数组--list--map--set类型
  14. 云计算:大数据时代的系统工程(二)
  15. 《剑指offer》面试题42——翻转单词顺序列
  16. 用计算机进行绘画教案,第二课 用鼠标键盘创作作品--电脑绘画教学设计(教案)...
  17. Arcgis 10.2坡度分析
  18. 斜杠【/】 与 反斜杠【\】
  19. AT24C256读取数据
  20. sdcard里边的东西能删除吗_手机内存中有一个sdcard文件夹删除不了

热门文章

  1. 在Docker上删除Solr的core
  2. Federated Machine Learning: Concept and Applications
  3. 02-CSS基础与进阶-day4__2018-08-31-21-33-03
  4. java之struts2的执行流程讲解(1)
  5. 使用Flexible实现H5页面的终端适配
  6. 【原创】基于日志增量,统计qps,并基于ip排序
  7. php 实现 java com.sun.org.apache.xml.internal.security.utils.Base64 Byte数组加密
  8. ORACLE数据库的备份和还原。
  9. 《关于莉莉周的一切》
  10. 转:采用geodatabase做乡界的一点总结