你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

有关实现自动化的建议

适用于此 Well-Architected 框架卓越运营清单建议:

OE:09 自动执行所有无法从人工干预的见解和适应性中受益的任务,具有高度程序性,并且具有可带来自动化投资回报的保质期。 如果可能,请选择用于自动化的现成软件,而不是自定义实现。 将所有自动化视为工作负载组件,并将 Well-Architected 框架支柱应用于其设计和实现。

本指南介绍在工作负载中采用自动化的建议。 你可以自动执行重复且容易发生人为错误的任务,以帮助团队提高效率并遵守标准。 自动执行任务,使工作负载简化且一致。 自动化使运营和工程团队更高效,因为它给了他们更多时间进行其他改进。 自动化是工作负载管理的各个方面的强大工具。 深思熟虑地实现自动化,为组织赋能。

关键设计策略

开发工作负载时,请寻找利用自动化的机会,以减轻管理负担并最大程度地减少人为错误。 评估这些机会,并考虑它们为组织带来的价值。 若要最大化自动化投资的价值,请优先处理简单、过程化且保质期较长的任务。 应用自动化不是全有或全无的策略。 有些工作流可能有需要人工干预的操作,例如决策点。 这些工作流仍然可以从自动化中受益,以执行其他任务。

要自动执行的目标任务

请考虑以下建议,以确保确定从自动化中获益最大的任务的优先级:

  • 以轻松获胜为目标。 专注于过程性强且容易发生人为错误的任务。 这些任务高度可自动执行。 它们已明确定义,没有增加复杂性的变量,并且作为正常操作的一部分执行。 相反,不要优先考虑需要编写复杂脚本来解释可变现象或很少发生的任务的自动化任务。

    高度可自动执行的任务示例包括重新启动服务器、创建帐户以及将日志传输到数据存储。 这些任务可能会按计划执行,作为对事件或监视警报的响应,或者根据外部因素根据需要执行。

  • 寻找为运营商赋能和释放中小企业的方法。 你的组织中可能有专家依赖这些专家进行不必要的升级。 例如,当你将新客户加入多租户解决方案时,数据库管理员可能会定期收到创建新数据库的请求。 如果为技术支持团队构建自助服务门户,则可以让他们自行安全创建空数据库。 或者,作为中间步骤,可以通过创建要运行的脚本来自动执行请求和 SME 执行的步骤。

  • 专注于投资回报。 高价值自动化需要最少的管理开销,并增加了明显的效率。 例如,如果可以通过自动执行数据库条目每天为运营团队节省一小时,则可以给他们时间寻找其他改进方面。

实现自动化的领域

在整个工作负载生命周期(从开发到日常管理)中采用自动化。 使用以下示例列表来帮助你考虑工作负载生命周期中可从自动化中受益的广泛领域。 可以自动化:

  • 管道定义、执行和管理:使用持续集成和持续交付 (CI/CD) 工具(如 Azure DevOps 和其他 DevOps 工具)自动定义管道及其运行方式。 这些工具可以帮助你自动执行 CI/CD 任务或其他任务,例如创建报表。

  • 部署:使用 Azure 资源管理器模板、Bicep、Terraform 和 Ansible 等工具自动执行工作负载开发和发布过程。 使用基础结构作为代码 (IaC) 方法,使用相同的自动化平台部署和更新基础结构。

  • 测试:许多工具可用于自动执行测试过程。 这些工具可以减轻质量保证团队的沉重负担,并确保测试是标准化和可靠的。

  • 缩放:使用平台提供的功能和其他工具(如业务流程工具)在负载增加或减少时自动缩放基础结构。

  • 监视和警报:使用监视解决方案中可用的工具自动注册新部署的资源,并配置警报触发的操作,以帮助在出现问题时加快修正。

  • 自我修复:使用监视系统生成的警报自动执行操作并恢复发生故障的组件或作业。 有关详细信息,请参阅 自我修复和自我保存的建议

  • 配置管理:使用业务流程和策略工具确保所有资源运行相同的配置,并在整个工作负载中强制实施合规性要求。

  • 其他管理任务:使用脚本自动执行重复任务,例如更新数据库记录或 DNS 记录。

  • 审批:使系统能够根据预定义的规则自动做出审批决策,以提高具有审批入口的工作流的效率。 此方法鼓励使用标准化表单和模板,从而提高流程的效率。 在高环境中自动审批可能会有风险。 严格关注和测试自动审批,以确保定义特定条件以授予审批。

  • 新用户和新员工入职:可以自动执行与加入新应用程序用户或新员工相关的许多任务,例如数据库更新和凭据创建。

  • 监视和警报:利用可观测性平台提供的自动化功能。 自动注册新设备以监视异常并发出警报。

选择适当的自动化工具

在内部开发自己的自动化非常耗时,可能会给开发团队带来管理负担。 他们需要像维护任何其他内部软件一样维护内部自动化工具。 建议在满足需求时使用现成的工具。 在商业、开放源代码和云平台提供的工具之间,有许多可用选项。 你可能会使用各种工具来生成所需的自动化。 在评估工具时,依靠内部专业知识来帮助指导决策。 你的团队可能更熟悉某些开发语言和框架。 你最初可以专注于他们可以使用的现成工具,而无需较高的学习曲线。 反思计划通过自动化解决的任务,并投资可以专门解决这些任务的工具。 不要购买你通常喜欢的工具,然后考虑以后的任务。

请注意在生成自动化时可能会使操作复杂化的因素,例如版本锁定和插件过度使用。 插件(如 Jenkins 或 Azure DevOps 插件)是添加功能的好方法。 当插件有利于自动化目标时,应采用插件。 但是,使用多个插件执行单个任务时,可能会使自动化更新和故障排除变得困难。 谨慎使用插件。 此外,请避免使用具有框架版本依赖项的解决方案,因为它们是一段时间后要维护的负担。 为了帮助最大程度地降低这些类型问题的风险,请标准化自动化工具和插件的选择,并对所有自动化项目使用源代码管理。

将自动化集成到工作负载中

对于用于生成自动化的任何工具,请让操作员轻松访问和管理它。 为工作负载团队提供清晰且易于使用的界面。 可以提供对 CI/CD 管道、API 和库的访问权限。 与自动化支持的工作负载一样,需要全面管理自动化。 安全自动化的程度与其他工作负载组件相同。 监视自动化,并遵循与其他工作负载组件相同的测试协议。

注意事项

  • 有时,如果没有符合要求的现成解决方案,从自动化中获得的效率将超过开发自己的解决方案的管理负担。 在这些情况下,在开发工作中要谨慎。 仅专注于开发所需的内容,以弥补现成解决方案无法解决的差距,并最大程度地降低依赖项等复杂性。

  • 运营团队可能难以管理和排查需要高度维护的复杂自动化。 使自动化任务仅专注于执行离散作业。 尝试最大程度地减少对其他工具或组件的依赖。

  • 考虑使用手动流程。 如果决定不自动执行某个操作,请通过为操作员创建分步清单来全面记录手动过程。 这种做法可以减少人为错误的可能性,例如操作员错误地运行了错误的进程。 本文档还有助于将来为该过程设计自动化。

  • 使用混合手动和自动化方法时,需要特别小心。 如果脚本运行某个进程的大部分内容,但随后在特定部分或决策中服从于人工,请务必向人员提供必要的上下文和信息,以便做出明智的决策。

Azure 便利化

Azure 提供了许多工具来帮助自动执行工作负载的任务。

IaC 工具:可以使用 Terraform、Bicep 和 Azure 资源管理器进行 IaC 部署。 根据你的要求和团队对工具的熟悉程度,你可以使用其中一个或多个工具来部署和管理资源。

Azure FunctionsAzure Functions 是一种无服务器工具,可用于使用首选开发语言自动执行任务。 Functions 提供一组全面的事件驱动触发器和绑定,用于将函数连接到其他服务。 无需编写额外的代码。

适用于 Azure 的GitHub Actions:可以使用 GitHub Actions for Azure 来自动执行 CI/CD 过程。 GitHub Actions与 Azure 集成以简化部署。 可以创建工作流来生成和测试存储库中的每个拉取请求,或将合并的拉取请求部署到生产环境。

GitHub Actions不仅仅是 DevOps,还支持在存储库中发生其他事件时运行工作流。 例如,可以运行工作流,以便在有人在你的存储库中创建新问题时自动添加相应的标签。

Azure 自动化:PowerShell 和 Python 是用于自动执行操作任务的常用编程语言。 使用这些语言可以执行重启服务、在数据存储之间传输日志以及缩放基础结构以满足需求等操作。 可以在代码中表达这些操作,并按需运行这些操作。 仅凭这些语言并不能提供用于集中管理、版本控制或运行历史记录的平台。 这些语言还缺乏响应事件(如监视驱动警报)的本机机制。 若要提供这些功能,需要一个自动化平台。

自动化 提供了一个 Azure 托管的平台,用于跨云环境和非 Azure 环境托管和运行 PowerShell 和 Python 代码。 PowerShell 和 Python 代码存储在自动化 Runbook 中。 使用自动化可以:

  • 按需、按计划或通过 Webhook 触发 Runbook。

  • 运行历史记录和日志记录。

  • 集成机密存储。

  • 集成源代码管理。

Azure 更新管理器更新管理器是一项统一的服务,可帮助管理和治理虚拟机的更新。 可以监视整个工作负载的 Windows 和 Linux 更新符合性。 还可以使用更新管理器进行实时更新或在定义的维护时段内计划更新。 使用更新管理器可以:

  • 监督整个计算机群的合规性。
  • 安排重复更新
  • 部署关键更新

Azure 部署环境部署环境 使开发团队能够使用基于项目的模板快速创建一致的应用基础结构。 这些模板可最大程度地减少设置时间,并最大程度地提高安全性、合规性和成本效益。 部署环境是在预定义订阅中部署的 Azure 资源的集合。 开发基础结构管理员可以强制实施企业安全策略,并提供一组特选的预定义 IaC 模板。

开发基础结构管理员将部署环境定义为目录项。 目录项托管在 GitHub 或 Azure DevOps 存储库中,称为 目录。 目录项由 IaC 模板和 manifest.yaml 文件组成。

可以编写部署环境的创建脚本,并以编程方式管理环境。

Azure 逻辑应用和 Microsoft Power Automate:构建自定义数字流程自动化 (DPA) 来处理审批流或构建 ChatOps 集成等工作负荷任务时,请考虑使用 逻辑应用Power Automate。 可以从内置连接器和模板构造工作流。 逻辑应用和 Power Automate 基于相同的基础技术构建,非常适合基于触发器的任务或基于时间的任务。

自动缩放:许多 Azure 技术具有内置的自动缩放功能。 还可以使用 API 将其他服务编程为自动缩放。 有关详细信息,请参阅 设计可靠缩放策略的建议

Azure Monitor 操作组:若要在触发警报时自动运行自我修复操作,请使用 Azure Monitor 操作组。 可以使用 Runbook、Azure 函数或 Webhook 定义这些操作。

示例

有关将自动化与其他 Azure 服务结合使用的示例,请参阅使用 Azure 事件网格 实现运营自动化。 此示例使用逻辑应用和事件网格自动执行操作任务。

卓越运营清单

请参阅完整的一组建议。