从系统工程师的角度对比 DevOps 程序外文翻译资料

 2022-08-07 02:08

英语原文共 9 页,剩余内容已隐藏,支付完成后下载完整资料


从系统工程师的角度对比 DevOps 程序

1. 介绍

如今,DevOps的开发过程是通过不断地提供小的补丁来给客户提供源源不断的价值,而不是一次提交一个很大的更新。这种方式既可以帮助刚接手项目的开发人员更快融入开发节奏,也可以帮助客户更好地接受项目。通过这些小的更新,客户可以贴近开发,并提升他们对开发进度的掌控。也给了他们反馈问题的可能性。字如其名,DevOps力将开发和运营的流程结合起来,使两个团队更紧密地合作。因为DevOps不仅仅是一个软件平台,它更像是将文化、实践,组合到工作流中的一种方式,是一项较为困难的任务。当将DevOps文化渐进地应用到项目中时,需要提前了解这种开发方式是需要额外的开发资源的。开始新的工作流程的最好方法是首先确定什么流程的优先级是最高的,而不是为了使用 DevOps而使用。本文将更多地介绍DevOps的含义,并比较两种最常用的DevOps云解决方案之间的差异,他们分别是“微软Azure DevOps”和 ”亚马逊网络服务(AWS)”。这项工作是我在 “Valamis Group Oy”的工作内容,我正在这家公司工作。作为基础, Valamis需要为新员工提供有关Azure DevOps工作流的文档。Valamis和我决定扩展团队,所以也想要选择其他的DevOps平台,这些平台在Valamis集团的项目中很少用到,不过我还是想要比较一下两个平台之间的差异。

2. 开发过程

引入敏捷开发是为了朝着更有条理、更理想化的开发方式迈出的一大步。但是,敏捷开发也要解决开发人员的交流问题,而客户端 DevOps 也努力解决开发人员和操作之间的类似问题。因此,许多人认为 DevOps 是敏捷方法的逻辑延续。在研究 DevOps 文化时,也可以注意到这一点,因为 DevOps 与敏捷开发有着多个相似之处。DevOps 文化之所以被引入,是因为我们注意到开发人员和运维很少作为团队一起朝着同一目标前进,他们经常各自为战。

DevOps不应该让开发人员去做运维工作,也不应该让运维去做开发工作,这样就可以发布另一个单元。它使开发人员和运维人员尽可能少的出现交流障碍。另外,将DevOps文化引入工作流的一个重要原因是使软件的更新变得更小、更高频,并使软件工作流的某些部分自动化,这样开发人员和运维人员就能够更高效地工作,而不必为每个小的更新自己进行多个构建测试。

由于DevOps是一个不断增长的趋势,越来越多的公司开始将DevOps使用到他们的开发中,只有一小部分公司没有听说过DevOps

在DevOps的理想场景中,开发人员会不断收到关于其工作的反馈,这使得开发人员能够更快地处理可能的错误,并以一定的速度实现、验证和部署新的代码更改到生产环境中。通过这种方式,将代码更改部署到环境中所需的时间缩短,公司和客户在工作质量的提高后会获得更多价值。这种持续的代码验证和部署过程在DevOps环境中称为连续集成/连续交付或CI/CD

持续集成可以尽早地发现问题,并将这个流程所需要的大部分内容展现在同一网页上。另一方面,持续交付确保了客户可以不断获得功能性的更新。 因为DevOps服务的很大一部分发生在云端,所以系统的活动和管理任务也可以作为软件代码来管理。这称为基础设施代码,简称IaC。在DevOps环境中,这意味着使用不同的配置文件来处理系统操作和自动匹配某些任务,例如在必要时重新启动虚拟机或物理机。DevOps过程很容易被混淆为一个持续集成/持续交付(CI/CD),但不应该混淆,因为DevOps和CI/CD是相关的,但不是一回事。DevOps不仅仅是CI/CD,通常CI和CD都包含在DevOps中,CI/CD过程的很大一部分是通过使用称为流水线的东西来实现自动化的。可以针对特定环境制作具有不同阶段和阶段内作业的多条流水线,例如一条流水线用于开发环境、一条流水线用于阶段环境、一条流水线用于生产环境。因为开发人员可能无需在开发和生产环境中用一样的脚手架,因此可以为不同的环境定制流水线。DevOps的第一个阶段是“规划”,在这个阶段,开发者可能会召开会议,与客户一起立下目标。在这个阶段,开发人员将目标和可能存在的困难提出来是很有必要的。在这一阶段使用的工具包括敏捷开发的看板。在目标确定之后,就可以开始进行开发了。第二个阶段是开发,在这个阶段,代码不断地提交到仓库中,并合打一个可部署的包。这是DevOps的连续集成阶段。在部署构建之前,需要建立自动测试单元和代码质量单元。用这些来确保稳定性,并尽可能收集可以与之前的构建版本进行比较的量化数据。此外,在将更改交付给客户环境之前,可以在测试环境中进行一些手动回归测试。第三阶段:交付,当早期测试成功,并且项目团队准备好向客户部署更新时,就可以进入持续交付阶段了。这一阶段需要IT运营团队提供帮助,以确保部署成功。另外这个阶段的某些部分可以根据流水线的配置自动完成。当在生产环境中部署完成时,团队可以开始进入第四阶段:监控或称为“操作”。顾名思义,在这个阶段中,当客户使用新部署的构建包版本时,我们将对其进行进一步的监控。在这个阶段跟踪产生的的问题,如果发现任何问题产生,它们将被记录到问题跟踪服务中,根据问题的重要性尽快修复。在交付和监控阶段,运营团队与开发团队密切合作。这就是DevOps的意义所在。DevOps工作流类似于敏捷开发,但是在DevOps文化中,运维操作和自动化是和谐共存的。在工作的流程中,保持团队内部开发人员和运营部门之间的沟通非常重要,同时也要保持与客户的沟通。这样可以确保客户在截止日期内收到他们的产品。当IT运营部门与开发团队尽可能紧密地合作时,服务的质量被最大化,交流的障碍被最小化。这意味着更容易将运维团队和开发团队视作是一个团队,而不是割裂的团队。另一方面,自动化为开发人员提供了更多的时间来处理实际问题,而不是一次又一次地执行单调乏味的任务。

3. DevOps云平台

DevOps也导致了不同云服务提供商之间的竞争加剧,因为DevOps流程和自动化的很大一部分发生在云端。这些云解决方案中最引人注目的是Amazon Web服务(AWS)、Microsoft Azure和Google云平台(GCP)。截至目前,AWS是历史最长、也是目前最大的平台。AWS于2006年推出,Azure于2010年推出,GCP于2011年推出。因为AWS是第一个服务商,所以它有充足的时间在全世界范围内扩张,而且它也有时间开发其平台和各种各样不同的工具,与其他提供商相比,AWS存在的时间更长。2019年,AWS占据云市场约30%的份额,其次是Azure,占16%,GCP占10%。

AWS和Microsoft Azure中的工作流似乎非常相似,因为它们在集成、构建和测试、自动化、部署和监视方面提供了类似的功能,但它们提供了自己独特的服务。另外,这两种云服务都支持第三方工具。

3.1. 微软Azure DevOps

Microsoft Azure DevOps是Microsoft针对DevOps的解决方案。此解决方案是前visual studio团队服务的演化形式。Azure DevOps包括五种不同的服务:Azure Boards、Azure Repos、Azure Pipe-lines、Azure Test Plans和Azure Artifacts。这些服务是可扩展的、灵活的,它们可以与不同的平台和云服务一起使用,因此用户在使用这些Azure工具时可以选择不使用默认的Azure云解决方案。Azure DevOps还提供了多种扩展,并支持用户自己开发的扩展程序。例如Docker、Slack、GitHub、Sonar Qube和AWS工具。其中许多扩展是免费的,但有些可能需要付费订阅。

Azure boards是用于跟踪项目的工作和积压的计划工具。Azure repos是一个Git托管服务,提供请求、评论和无限制的存储库。Azure测试计划用于手动和自动化测试,Azure工具包用于管理项目的公共和私有包。Azure回购、测试计划和工具包可以与Azure管道的CI/CD集成。Azure DevOps服务的定价主要取决于使用azure cloud的团队有多大。即使是免费版本,用户也可以访问Azure Boards、Azure Repos、Azure Arti-facts、Azure测试计划和Azure管道。这些CI/CD管道决定了可以开启多少作业,以及可以同时完成多少个并行作业。在部署测试应用程序时,还需要Azure门户来运行虚拟机。Azure门户的指出可以通过不同的收费计划进行更改。对于本研究中的测试,我将使用Azure DevOps和azure portal的免费计划。

3.2. 亚马逊网络服务(AWS)

亚马逊网络服务(Amazon Web Services,简称AWS)是比较市场份额时最大的云解决方案。因为AWS比其他竞争对手要老得多,所以它有时间开发多种不同的开发工具,以在DevOps过程中使用。这些工具包括AWS代码构建、AWS代码管道、AWS代码部署、AWS Code Star、AWS云开发工具包、AWS X-Ray、AWS Cloud Watch、AWS代码提交和AWS设备场等等。

在AWS中,代码管道是通过代码提交或仓库源头来触发构建的,比如GitHub。之后可以配置构建和部署阶段。然后可以将工作流配置为在构建和部署阶段也使用其他服务和扩展。AWS代码构建是一个可以同时处理多个构建的云构建服务。AWS代码部署服务可以将代码部署到环境中。对于项目的监控,AWS提供了AWS X-Ray和Amazon CloudWatch。用户可以选择使用其中之一,这样工具会随AWS订阅一起提供,但它们不是必须使用的。在AWS中,用户只需要为单个服务付费,因此如果用户不使用某个服务,就不会额外收费。有些服务是分层的;这意味着用户可以通过选择更昂贵的计划获得更大的价值。对于这项工作,我将使用非常简单的版本,并重点使用AWS提供的基本存储库、构建、部署和管道工具。

3.3. 谷歌云平台

GCP是谷歌的DevOps平台,于2011年底推出。GCP使用与谷歌搜索引擎和YouTube相同的基础设施,这使得它在DevOps竞争中成为一个有力的竞争者。GCP还专注于使用人工智能(AI)和机器学习来帮助DevOps构建。与其他竞争对手一样,GCP非常灵活,可以与其他云提供商一起使用。GCP内的不同服务范围从计算、存储和数据库到大数据、人工智能和安全服务。我们在项目会议上决定,把谷歌云平台排除在比较之外,因为我们在Valamis Group的工作中不使用GCP。

4. DevOps过程测试

该计划是为了找出Valamis中使用的两种云服务之间是否存在显著差异。测试包括工作流程和多个部署流程的耗时。同时还将记录环境的设置。通过工作流测试,我想知道这两个服务提供的工具是否会改变这两个服务之间的流程。我还想知道这是否会导致处理时间上的差异,因为至少我认为在使用最便宜的订阅时,两者在处理速度上存在差异。在这些测试中,我也会留意UI是否有值得注意的地方,所以可用性是需要经过测试的。

测试计划是在DevOps服务自己的存储库中创建一个分支,将分支拉到本地环境,进行更改,提交,将测试应用程序推到DevOps远程存储库,在管道中构建应用程序,查看它通过JUnit测试并将其部署到虚拟机。另一个测试是类似的,但是涉及到让JUnit测试失败,看是否有不同的反应,或者构建时间是否有差异。对于测试,我将使用我的电脑,操作系统是Windows10 Home 64位,英特尔酷睿i5 3.80GHz和16GB内存(DDR4)。我用于测试的应用程序是一个简单的“helloworld”Java应用程序,内置了JUnit测试。JUnit测试查找在函数中设置的两个整数。只有当整数2大于整数1时,测试才会成功。存储库是在我的个人Git中创建的,然后将其克隆到DevOps服务中。我将尝试使用不同平台提供的工具使管道尽可能相似,以便测试具有可比性。我将使用两种云服务的“免费”或最基本的订阅/版本。集成开发环境IDE,使用的是visual studio。

我选择使用简单的数据作为测试,因为我想更多地关注工作流中的差异,以及是否可以在两个服务管道流程中发现差异。更复杂的测试数据可能会使进程时间上的差异更加明显,但不幸的是,这将花费更多的时间和资源。希望在使用这些平台的免费订阅时,即使是最简单的测试应用程序也能在处理时间上提供一些差异。

4.1. DevOps工作流过程

由于这两个环境现在都已设置,因此我将介绍开发工作流如何在每个环境中进行,以及我为这两个平台创建的管道。测试期间将使用此类型的工作流。我还将比较在设置过程中发现的UI差异。

  1. Azure中的工作流

使用Azure的工作流非常简单,需要注意的事情很少。这是我创建的管道中最简单的工作流。第一个用户在Azure DevOps中创建一个分支,然后克隆Azure存储库(仅第一次使用project需要克隆),如果用户已经在本地环境中设置了存储库,那么他们可以拉取新的分支并开始使用。在提交更改并且用户准备将更改推送到存储库之后,需要进行一个描述更改的提交。提交之后,用户可以将更改推送到Azure DevOps。然后,在Azure DevOps 网页上,单击“Repos”选项卡后,会出现通知,说明分支中有新的更改。它还建议从中提出一个pull request。

pull request由开发团队用来检查代码的更改。更改可以被批准、拒绝和删除,其他团队成员可以对这次更改进行评论,并建议对代码进行修改。拉取请求可以在“back”选项卡下进行管理,选择“pull request”。在这里,用户可以为他们正在处理的分支创建一个新的pull request。如果有人被设置为其他人所做代码更改的审阅者,他们将在这里看到这些请求。当审阅者接受了更改时,可以创建合并请求。这将把更改的分支合并到主分支。接下来轮到连续管道开始发挥作用。你可

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[259913],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。