跳到内容

DevOps自动化入门

这是我们关于DevOps基础知识系列的第二篇文章。要了解什么是DevOps以及常见DevOps神话的答案,请参阅第一部分。什么角色…

DevOps自动化入门
作者

这是我们关于DevOps基础。了解什么是DevOps以及常见DevOps神话的答案查看第一部分.

自动化在DevOps中扮演什么角色?

首先,自动化是DevOps加速的关键原则之一。如前所述在我上一篇博客文章中它实现了组织内的一致性、可靠性和效率,使团队更容易发现和解决问题。

然而,当我们与组织合作时,我们发现并不是每个人都知道从哪里开始,或者哪些流程可以并且应该自动化。在本文中,我们将讨论一些最佳实践和见解,以使团队朝着正确的方向前进。

一些有用的指南

DevOps自动化的道路在不断发展。在我们深入研究最佳实践之前,在决定自动化的内容和方式时,需要记住一些常见的准则。

  • 选择开放标准。您的贡献者和团队可能会改变,但这并不意味着您的工具必须改变。通过维护遵循通用开放标准的工具,您可以简化入职培训并节省专门培训的时间。随着DevOps和部署向云方向发展,社区驱动的打包、运行时、配置甚至网络和存储标准(如Kubernetes中的标准)也变得更加重要。
  • 使用动态变量优先考虑可重用代码将减少现在和将来的返工和重复工作量。无论是在脚本还是专用工具中,安全地使用外部定义的变量是将自动化应用于不同环境而无需更改代码本身的简单方法。
  • 使用可以随身携带的灵活工具。不可能总是找到适合所有情况的工具,但使用允许您更改技术的DevOps工具也有助于减少公司更改方向时的返工。通过选择一个具有广泛的合作伙伴集成生态系统且适用于任何云的解决方案,您将能够定义独特的最佳实践集并实现目标,而不受工具链的限制。

DevOps自动化最佳实践

现在我们的指导方针已经到位,我们可以评估需要自动化哪些流程集。我们将DevOps自动化的一些最佳实践分为四类,以帮助您开始。

1.持续集成、持续交付和持续部署

我们经常认为术语“DevOps”是“CI/CD”的同义词。在GitHub,我们认识到DevOps包含了更多内容,从允许贡献者构建和运行代码(或部署配置)到提高开发人员生产力。反过来,这缩短了构建和交付应用程序所需的时间,帮助团队增加价值并更快地学习。虽然CI/CD和DevOps并不完全相同,但CI/CD仍然是DevOps自动化的核心组件。

  • 持续集成(CI)是一个对每个更改进行测试的流程,使用户能够查看其更改是否会破坏环境中的任何内容。
  • 连续交付(CD)是以允许您随时将任何成功的候选版本部署到生产环境中的方式构建软件的实践。
  • 连续部署(CD)使连续交付更进一步。通过持续部署,每一次成功的更改都会自动部署到生产中。由于某些行业和技术无法立即向客户发布新的变化(比如硬件和制造业),因此采用连续部署取决于您的组织和产品。

持续集成和持续交付(通常称为CI/CD)共同创建了一个协作过程,供人们通过共享所有权从事项目工作。同时,团队可以通过自动化维护质量控制,并通过持续部署为用户带来新功能。

2.变更管理

变更管理通常是业务流程的关键部分。像自动化指南一样,有一些通用的原则和工具开发和运营团队可以使用来创建一致性。

  • 版本控制:使用版本控制的实践由来已久,其根源在于帮助人们恢复更改并从过去的决策中学习。从RCS到SVN,从CVS到Perforce,从ClearCase到Git,版本控制是通过为个人提供通用工作流和代码库来实现团队协作的主要手段。
  • 变更控制:除了维护代码的版本历史记录外,有一个适当的系统来协调和促进更改有助于维护产品方向,降低代码发生有害更改的可能性,并鼓励协作过程。
  • 配置管理:配置管理使每个人都可以通过模板管理复杂的部署,并通过适当的控制和批准大规模管理更改。

3.“X”作为代码

到目前为止,您可能还听说过“基础设施作为代码”、“配置作为代码”,“策略作为代码”或其他一些“作为代码”模型。这些模型提供了一个声明性框架,用于通过高级抽象来管理操作环境的不同方面。换句话说,您为工具提供变量,并且输出一致,从而可以一致地重新创建资源。开发运营实现“作为代码”原则,有几个目标,包括:可审计的符合性更改跟踪、通过版本控制的协作更改过程、一致、可测试和可靠的资源部署方式,以及降低新团队成员学习曲线的方法。

  • 基础设施代码(IaC)提供了一个声明性模型,用于使用开发人员用于源代码的相同版本和工作流创建不可变的基础结构。随着基础架构需求的变化,新的基础架构将通过自动化的声明性管道定义、测试并部署新的配置。
  • 平台代码(PaC)为服务提供了一个声明性模型,类似于基础架构作为代码如何提供用于重新创建相同基础架构的框架,从而允许您使用高级抽象将服务快速部署到现有基础架构。
  • 配置为代码(CaC)通过将应用程序的配置定义为版本化资源,引入了下一级声明性管道。
  • 策略作为代码将版本控制和DevOps工作流引入安全和策略管理。

4.持续监测

运营洞察力是任何生产环境的宝贵组成部分。为了了解软件在生产中的行为,您需要了解它是如何运行的。持续监控—在整个软件生命周期中监控应用程序和基础设施性能和稳定性的过程和技术—为操作团队提供数据以帮助故障排除,为开发团队提供调试和修补所需的信息。这也导致了安全性的一个重要方面,其中开发安全操作以安全为重点,遵循这些原则。选择正确的监控工具可能是轻微服务中断和重大停机之间的区别。在获得运营洞察力时,有一些重要的考虑因素:

  • 登录中为您提供有关业务关键组件的连续数据流。应用程序日志、基础结构日志和审核日志都提供了重要的数据,可帮助团队学习和改进产品。
  • 监测为日志和度量中提供的原始数据提供一定程度的智能和解释。使用先进的工具,监控可以为团队提供原始数据所提供之外的相关见解。
  • 警报向各个团队提供主动通知,帮助他们领先于重大问题。有效实施后,这些警报不仅可以让您知道发生了什么问题,还可以为团队提供关键的调试信息,以帮助快速解决问题。
  • 追踪更进一步地记录日志,提供更深入的应用程序性能和行为洞察力,可以极大地影响生产环境中应用程序的稳定性和可伸缩性。

将DevOps自动化付诸行动

在这一点上,我们已经讨论了很多关于DevOps领域中的自动化的内容,那么DevOps都是关于自动化的吗?简单地说,不是。自动化是团队之间高效完成这项工作的重要手段。无论您是DevOps的新手还是从另一组自动化解决方案迁移过来的新手,用一个小项目或流程测试新工具都是一个很好的起点。它将为整个组织的自动化扩展和标准化奠定基础,包括如何衡量效率和实现目标的进展。

无论您选择哪个工具集来自动化您的DevOps工作流,评估您团队的当前工作流和您工作所需的信息都将有助于指导您选择工具和平台,并为成功奠定基础。这里还有一些其他资源可以帮助您:

想看看DevOps自动化在实践中的样子吗?了解Wiley的工程师如何使用GitHub Actions更快、更安全地构建.

 

从GitHub了解更多信息

工程类

工程类

直接来自GitHub工程团队的帖子。
GitHub环球2024

GitHub环球2024

获取AI、DevEx和安全全球开发者活动十周年门票。
GitHub Copilot公司

GitHub Copilot公司

不要独自飞行。免费试用30天。
在GitHub工作!

在GitHub工作!

查看我们当前的职位空缺。