当前位置: 首页 > 科技观察

2021年DevOps的终极进化

时间:2023-03-21 10:36:28 科技观察

转载请联系新钛云服务公众号。1.文档说明DevOps,顾名思义,就是让机器自动处理软件部署和运维生命周期中的重复性工作,让运维人员能够更快、更高效地实现代码更新和部署迭代,让他们的系统运行得更可靠地。自2009年DevOps一词被创造以来,自动化已经从开发、集成和交付工作的自动化发展到今天的运营前沿,我们在其中看到了用于自动化可观察性、可靠性和补救的新工具。2.为什么要实施DevOps?从开发人员的角度来看,DevOps工具可以增强开发团队的能力并提高他们的效率。通过减少跨团队依赖并避免手动配置发布流程,开发人员可以更频繁地发布并更快地收到反馈,从而改善他们的整体体验。从业务角度来看,DevOps自动化减少了部署功能的准备时间。自动化将减少人为错误引起的问题、环境不一致引起的故障,并提高平台的可靠性和可用性。此外,它消除了对大型团队的需求,最大限度地减少了不同开发团队的重复工作,并减少了跨团队的摩擦。自动化如何启动?如果您正在寻找自动化工作的重点,我们建议您从最大的瓶颈所在开始。按需向开发人员提供用于事件响应的自动化资源应用程序根据业务手段重新架构安全团队参与设计和开发复杂或需要太多工作和跨团队协作)以及难以设置测试和部署管道。一旦他们实现了自动化,大大加快了流程中的构建速度,他们就开始研究在维护阶段可以自动化什么,当软件投入生产并提供业务价值时。这些任务被描述为手动、重复、可自动化且缺乏持久价值。减少重复性、重复性的工作可以让工程师做更有意义的工作。如何自动化DevOps流程既然您已经处理了自动化问题,请确定可以使用哪些工具来解决您的问题。作为一般规则,使用现成的工具和标准通常比构建和维护自己的工具和标准更有效。在您的技术堆栈中添加新工具时,请考虑:直接成本(许可和托管)推出工作(初始投资)维护工作(持续投资)系统增加的复杂性可靠性和支持要求该工具还可以帮助您理想情况下还需要解决哪些其他问题,您正在寻找一种工具,它不仅足够灵活以解决您当前的问题,而且对未来的挑战也很有价值。您正在寻找一种工具来代替工程师在流程中自动构建和部署,而不会给维护或使用它的团队带来很多负担。您应该能够决定自己托管哪些工具以及您更喜欢将哪些工具用作SaaS。CI/CDDevOps的原则之一是能够以一致的方式安全、可重复地将工件部署到所有环境。因此,最成熟和最受欢迎的DevOps工具类别是CI/CD编排器(例如Jenkins、GoCD等)也就不足为奇了,它们需要安全且一致地构建代码和部署工件。CI/CD工具允许您创建一个部署管道,该管道从Git或SVN等版本控制系统中的提交开始,将其与几种不同的QA工具(代码检查、单元测试、集成和端到端测试)对齐,以实现评估),如果所有QA通过,则将发布部署到生产中。部署管道包括持续集成(CI)、持续交付(CD)和基础架构配置,具体取决于您的架构。功能标记工具也是该组的一部分,因为它们用于以安全和可控的方式将代码快速部署到生产环境中。每个公司都应该使用CI/CD工具。允许您为您的场景选择最佳工具的问题包括:配置和维护该工具需要多少工作?支持和维护您的管道需要多少工作?为开发团队创建管道容易吗?为多个团队创建共享流水线流水线模板方便吗?您的工具需要哪些安全功能?配置和基础架构即代码工具在版本控制系统中存储所有基础架构、配置和应用程序代码是DevOps自动化的另一个重要部分。将基础架构和配置定义为代码的能力允许工程师对基础架构代码执行与应用程序代码相同的审查和审计。有几种不同类型的工具:基础设施供应:用于从代码供应基础设施组件(例如网络组件、托管服务、虚拟机)的工具。示例包括Terraform、Pulumi、CloudFormation配置管理:用于配置机器中的操作系统、软件需求、包依赖项和系统文件。示例包括Chef、Puppet、Ansible、Packer容器技术:用于提供供应商中立的容器编排器以运行容器化应用程序。示例包括Kubernetes、OpenShift、NomadServerlessFunctions:协助部署无服务器功能。示例包括无服务器、chalice、CDK成熟的DevOps团队将基础设施和配置工具组合用作代码。工具因技术堆栈和业务需求而异。在评估工具时,确保您的团队可以安全、轻松地部署基础架构,同时轻松共享模板和标准。可观察性和监控工具监控和可观察性是一类较新的工具,不像用于CI/CD的工具那样成熟。可观察性和监控空间中的工具包括应用程序日志记录服务,例如ELK堆栈、数据收集代理以及用于指标和检测数据的可视化工具。其中一些示例包括Prometheus、Grafana、Datadog和NewRelic。它还包括一个监控系统,用于在平台的性能状态(Sensu、Nagios、Dynatrace、CloudWatch)未根据指标、日志或健康状态检查时通知相关人员,并根据自定义规则生成警报。弹性和可靠性从长远来看,依靠人为干预来确保可靠性(无论是发现问题还是修复问题)是不可持续的。有许多创新管理、事件流程管理和补救自动化的组织事件。DevOps经典案例让我们考虑一个虚构的环境,其中所有底层基础设施都使用Terraform作为代码进行管理。当一个新的应用程序被创建时,它是通过使用其Jenkinsfile中的共享库来定义的,它自动包括所有默认步骤和所需的质量检查,以及向企业通信工具(例如,钉钉、飞书)发送构建通知。应用程序存储库还包含具有一些基本配置(例如,内存和CPU要求以及健康检查端点)的Terraform文件,并使用所有应用程序共享的模块。该模块包含所需的DNS、负载均衡器和容器配置,以及一些自动监控。开发人员无需设置他们的管道或默认基础设施,因为这些都由共享代码控制。如果他们需要额外的资源(例如数据存储),他们可以轻松地将额外的资源添加到Terraform文件中。提交存储库后,Jenkins运行新管道。在运行代码linting、单元测试和集成测试的命令后,管道会触发Terraform部署到暂存环境并运行端到端测试。DingTalk通知提醒开发人员检查结果并进一步运行他们想要的任何手动测试。如果开发人员对结果满意,他们可以通过在Jenkins中手动批处理构建来触发Terraform部署到生产环境。在为外部客户打开功能标志之前,工程师确保监控和弹性是足够的。一旦代码投入生产,运营团队就可以构建自动化来处理常见问题。例如,创建一个作业来自动调整空间不足的磁盘大小,或者创建一个作业来识别即将到期的TLS证书并使用HashiCorpVault自动更新它们。Terraform还可以自动执行存储操作。结论:用于自动化测试和部署的工具,例如CI/CD和Terraform,现在已经非常成熟,可以大大减少交付代码所需的时间(和人力)。通过优化和替换生产企业中操作软件的重复性工作,大大提高了业务可靠性和客户满意度。自动化成为新一代互联网生产链的趋势。尽快实现自动化结构,将大大改善公司的运营、人力成本和效率。原文:https://dzone.com/articles/what-is-devops-automation-in-2021