什么是DevOps,DevOps指南!

如今,人们希望看到他们喜欢的应用程序以及最新的消息。开发人员拥有多年开发和发布新软件产品的时代已经一去不复返了。

因此,每个软件开发公司都需要有效的DevOps管道来满足客户的需求。

本文介绍了DevOps管道的基本概念,管道在DevOps环境中的工作方式,并解释了代码在部署到生产之前必须经过的阶段。

什么是DevOps?

DevOps管道是开发团队(Dev)和运营团队(Ops)实施的一组实践,以更快,更轻松地构建,测试和部署软件。管道的主要目的之一是保持软件开发过程的组织性和重点。

但是,“管道”一词可能有点误导。因为软件开发是一个连续的周期,所以汽车工厂的装配线可能更合适。

在制造商向公众发布汽车之前,它必须经过许多组装阶段,测试和质量检查。工人必须建造底盘,增加电动机,轮子,门,电子设备和面漆工作,以使其对客户有吸引力。

DevOps管道的工作方式与此类似。

在向用户发布应用或新功能之前,您首先必须编写代码。然后,确保它不会导致可能导致应用程序崩溃的致命错误。避免这种情况涉及运行各种测试以找出任何错误,错别字或错误。最后,一旦一切正常运行,您就可以将代码发布给用户。

从这个简化的解释中,您可以得出结论,DevOps管道由构建,测试和部署阶段组成。

DevOps的组件

为了确保代码无缝地从一个阶段转移到下一个阶段,需要实施几种DevOps策略和实践。其中最重要的是持续集成持续交付(CI / CD)

持续集成

持续集成(CI)是一种将来自多个开发人员的小代码块尽可能多地集成到共享代码存储库中的方法。使用CI策略,您可以自动测试代码是否存在错误,而不必等待其他团队成员贡献代码。

CI的主要优点之一是,它可以帮助大型团队预防所谓的“集成地狱”

在软件开发的早期,开发人员不得不等待很长时间才能提交他们的代码。这种延迟大大增加了代码集成冲突和错误代码部署的风险。与旧的工作方式相反,CI鼓励开发人员每天提交其代码。结果,他们可以更快地发现错误,并最终花费更少的时间来修复它们。

CI的核心中央源代码控制系统。其主要目的是帮助团队组织代码,跟踪更改并启用自动化测试。

在典型的CI设置中,每当开发人员将新代码推送到共享代码存储库时,自动化就会启动,以将新代码和现有代码编译到构建中。如果构建过程失败,则开发人员将收到警报,通知他们需要重新编写哪些代码行。

确保只有质量代码通过管道才是最重要的。因此,每当有人向共享存储库提交新代码时,都会重复整个过程。

持续交付

连续交付(CD)是CI的扩展。它涉及通过鼓励开发人员以增量块的形式将代码发布到生产中来加快发布过程。

通过CI阶段后,代码构建将移至保留区域。在管道的这一点上,由您决定是将构建推送到生产环境还是保留它以进行进一步评估。

在典型的DevOps场景中,开发人员首先将其代码推送到类似生产的环境中,以评估其行为方式。但是,新版本也可以立即上线,开发人员可以随时按一下按钮来部署它。

要充分利用连续交付的优势,请尽可能频繁地部署代码更新。发布频率取决于工作流程,但通常是每天,每周或每月。与立即释放所有更改相比,以较小的块发布代码更容易解决问题。因此,您可以避免瓶颈和合并冲突,从而保持稳定,连续的集成流水线。

持续部署

连续交付和连续部署在许多方面都相似,但是两者之间存在重大差异。

持续交付使开发团队能够手动部署软件,功能和代码更新,而持续部署则是使整个发布周期自动化。

在连续部署阶段,代码更新将自动发布给最终用户,而无需任何手动干预。但是,实施自动发布策略可能很危险。如果无法缓解在此过程中检测到的所有错误,则会将错误的代码部署到生产中。在最坏的情况下,这可能会导致应用程序中断或用户经历停机时间。

仅当发布次要代码更新时才应使用自动部署。万一出现问题,您可以回滚所做的更改而不会导致应用程序出现故障。

为了充分利用连续部署的全部潜力,需要拥有强大的测试框架,以确保新代码真正没有错误,并可以立即将其部署到生产环境中。

连续测试

连续测试是一种在开发过程的每个阶段尽可能多地运行测试以在到达生产环境之前检测问题的实践。实施连续测试策略可以快速评估交付渠道中特定发行候选版本的业务风险。

测试范围应涵盖功能测试和非功能测试。这包括运行单元,系统,集成以及涉及应用程序和服务器基础结构的安全性和性能方面的测试。

连续测试涵盖了更广泛的质量控制意识,包括风险评估和对内部政策的遵守情况。

持续运营

制定全面的持续运营策略有助于保持应用程序和环境的最大可用性。目标是使用户不了解不断发布的代码更新,错误修复和补丁程序。持续的操作策略可以帮助防止在代码发布期间出现停机和可用性问题。

为了获得连续操作的好处,您需要拥有一个强大的自动化和编排架构,该架构可以处理服务器,数据库,容器,网络,服务和应用程序的连续性能监视。

DevOps管道的阶段

关于如何构造管道,没有固定的规则。DevOps团队根据其特定的工作流程添加和删除某些阶段。尽管如此,几乎每个流程都由四个核心阶段组成:开发构建测试部署

可以通过增加两个阶段(计划监视)来扩展该设置,因为它们在专业DevOps环境中也很常见。

计划

计划阶段包括在开发人员开始编码之前计划整个工作流程。在这个阶段,产品经理和项目经理扮演着至关重要的角色。他们的工作是创建一个发展路线图,该路线图将指导整个团队。

在收集了用户和利益相关者的反馈和相关信息之后,将工作分解为一系列任务。通过将项目分为较小的,可管理的部分,团队可以更快地交付结果,现场解决问题并更轻松地适应突然的变化。

在DevOps环境中,团队以sprint的方式工作-较短的时间段(通常为两周),在此期间,各个团队成员共同完成分配的任务。

发展

在开发阶段,开发人员开始进行编码。根据编程语言的不同,开发人员可以在本地计算机上安装适当的IDE,代码编辑器和其他技术,以实现最高的生产率。

在大多数情况下,开发人员必须遵循某些编码风格和标准,以确保统一的编码模式。这使任何团队成员都更容易阅读和理解代码。

当开发人员准备提交其代码时,他们向共享的源代码存储库发出拉取请求。然后,团队成员可以手动审核新提交的代码,并通过批准初始提取请求将其与master分支合并。

建立

DevOps管道的构建阶段至关重要,因为它使开发人员能够在代码出错之前就检测出代码中的错误,从而导致严重的灾难。

将新编写的代码与共享存储库合并之后,开发人员将运行一系列自动化测试。在典型情况下,拉取请求会启动一个自动化过程,该过程将代码编译为内部版本(可部署包或可执行文件)。

请记住,某些编程语言不需要编译。例如,用JavaC编写的应用程序需要编译才能运行,而用PHPPython编写的应用程序则不需要。

如果代码有问题,则构建将失败,并且将这些问题通知开发人员。如果发生这种情况,则初始拉取请求也会失败。

开发人员每次提交到共享存储库时都会重复此过程,以确保只有无错误的代码才能继续进行下去。

测试

如果构建成功,则进入测试阶段。在那里,开发人员运行手动和自动测试以进一步验证代码的完整性。

在大多数情况下,将执行用户验收测试。人们作为最终用户与该应用进行交互,以确定在将代码发送到生产环境之前,是否需要对其进行其他更改。在此阶段,执行安全性,性能和负载测试也很普遍。

部署

当构建到达Deploy阶段时,就可以将软件推送到生产环境了。如果代码仅需要微小的更改,则使用自动部署方法。但是,如果应用程序进行了大修,则首先将构建部署到生产环境中,以监视新添加的代码的行为。

发布重要更新时,实施蓝绿色部署策略也很常见。

蓝绿色部署意味着具有两个相同的生产环境,其中一个环境托管当前应用程序,而另一个环境托管更新的版本。要将更改发布给最终用户,开发人员可以简单地将所有请求转发到适当的服务器。如果出现问题,开发人员可以简单地恢复到先前的生产环境,而不会引起服务中断。

监控

在DevOps流程的最后阶段,运营团队会努力工作,不断监视基础架构,系统和应用程序,以确保一切正常运行。他们从日志,分析和监视系统中收集有价值的数据,以及用户的反馈,以发现任何性能问题。

在Monitor阶段收集的反馈可用于提高DevOps管道的整体效率。优良作法是在每个发布周期之后对管道进行调整,以消除潜在的瓶颈或其他可能影响生产率的问题。

如何创建DevOps管道

现在,您已经更好地了解了DevOps管道是什么以及它如何工作,让我们探索创建CI / CD管道时所需的步骤。

设置源代码管理环境

在您和团队开始构建和部署代码之前,请确定将源代码存储在何处。GitHub是迄今为止最受欢迎的代码托管网站。GitLab和BitBucket是功能强大的替代方案。

要开始使用GitHub,请打开一个免费帐户,然后创建一个共享存储库。要将代码推送到GitHub,请首先在本地计算机上安装Git。完成编写代码后,将其推送到共享的源代码存储库。如果多个开发人员在同一个项目上工作,其他团队成员通常会在将新代码与master分支合并之前,手动检查新代码。

设置构建服务器

一旦代码在GitHub上,下一步就是对其进行测试。针对代码运行测试有助于防止将错误,错误或错字部署到用户。

大量测试可以确定代码是否可以投入生产。确定要运行的分析取决于项目的范围以及用于运行该应用程序的编程语言。

JenkinsTravis-CI是创建构建的两个最受欢迎的解决方案。Jenkins是完全免费和开源的,而Travis-CI是一个托管解决方案,它也是免费的,但仅适用于开源项目。

要开始运行测试,请在服务器上安装Jenkins并将其连接到GitHub存储库。然后,您可以将Jenkins配置为在每次更改共享存储库中的代码时运行。它编译代码并创建一个构建。在构建过程中,Jenkins会在遇到任何问题时自动发出警报。

运行自动化测试

有很多测试,但是最常见的是单元测试集成测试功能测试

视开发环境而定,最好安排自动化测试以一个接一个地运行。通常,您希望在测试过程开始时运行最短的测试。

例如,您应该在功能测试之前运行单元测试,因为它们通常需要更多时间才能完成。如果生成的测试版本通过测试,您可以将代码部署到生产环境或类似生产环境中以进行进一步评估。

部署到生产

在将代码部署到生产环境之前,请先设置服务器基础结构。例如,要部署Web应用程序,您需要安装Web服务器(例如Apache)。假设该应用程序将在云中运行,您很可能会将其部署到虚拟机上。

对于需要充分利用物理硬件处理能力的应用程序,您可以部署到专用服务器或裸机云服务器。

部署应用程序有两种方法-手动自动。首先,最好手动部署代码以了解部署过程。后来,自动化可以加快过程,但是只有在您确信的情况下,存在一些障碍才能阻止不良代码最终投入生产。

将代码发布到生产是一个简单的过程。部署的最简单方法是将构建服务器配置为执行脚本,该脚本将代码自动发布到生产环境中。

收盘时

现在,您将了解什么是devops管道以及它如何帮助加快软件开发生命周期。

但是,这只是冰山一角。

DevOps管道是一个广泛的主题,每个组织都有将其集成到其工作流程中的方法。最终目标是创建一个可重复利用的系统,该系统利用自动化的优势并进行持续改进,以帮助更快,更轻松地交付高质量的产品。

原创文章,作者:长沙建站公司,如若转载,请注明出处:https://www.zhanlian.net/3307