你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
实现自动化的建议
适用于此精心构建的框架卓越运营清单建议:
OE:09 | 自动执行不受益于人工干预的见解和适应性的所有任务,具有高度程序性的任务,并且具有可产生自动化投资回报的保质期。 如果可能,请选择现成的软件进行自动化与自定义实现。 将所有自动化视为工作负载组件,并将精心构建的框架支柱应用于其设计和实现。 |
---|
本指南介绍了在工作负荷中采用自动化的建议。 你可以自动执行重复且容易出错的任务,以帮助团队提高效率并遵守标准。 自动执行任务,使工作负荷更加简化且一致。 自动化使运营和工程团队更高效,因为它为运营和工程团队提供了更多时间来处理其他改进。 自动化是工作负载管理的各个方面的强大工具。 深思熟虑地实现自动化,为组织提供支持。
关键设计策略
开发工作负荷时,寻找利用自动化的机会,以减少管理负担并尽量减少人为错误。 评估这些机会,并考虑它们为你的组织带来的价值。 若要最大限度地提高对自动化投资的价值,请确定直接、过程化且具有较长保质期的任务的优先级。 应用自动化并不是一种全无策略。 有些工作流可能有需要人工干预的操作,例如决策点。 这些工作流仍可从自动化中受益,以执行其他任务。
评估要自动执行的任务
请考虑以下建议,确保优先处理受益于自动化的任务:
瞄准轻松获胜。 专注于高度过程化且容易遭受人为错误的任务。 这些任务高度自动化。 它们已明确定义,它们不受增加复杂性的变量的影响,它们作为正常操作的一部分执行。 相反,不要优先考虑需要编写复杂脚本来考虑可变现象或很少发生的任务自动执行任务。
高度自动化的任务示例包括重新启动服务器、创建帐户以及将日志传输到数据存储。 这些任务可能会按计划进行,作为对事件或监视警报的响应,或者根据需要根据外部因素进行。
寻找为运营商提供授权和释放中小企业的方法。 你的组织中可能具有依赖于升级的专家,这些升级可能不必要。 例如,将新客户载入多租户解决方案时,数据库管理员可能会定期获取创建新数据库的请求。 如果为技术支持团队构建自助服务门户,则可以让他们安全地自行创建空数据库。 或者作为中间步骤,可以通过创建要运行的脚本来自动执行 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 Functions: Azure Functions 是一种无服务器工具,可用于使用首选开发语言自动执行任务。 Functions 提供一组全面的事件驱动触发器和绑定,用于将函数连接到其他服务。 无需编写额外的代码。
适用于 Azure 的 GitHub Actions:可以使用 适用于 Azure 的 GitHub Actions 自动执行 CI/CD 过程。 GitHub Actions 与 Azure 集成以简化部署。 可以创建工作流来生成和测试存储库中的每个拉取请求,或将合并拉取请求部署到生产环境。
GitHub Actions 不仅超出 DevOps,还可用于在存储库中发生其他事件时运行工作流。 例如,可以运行工作流,以便在存储库中有人创建新问题时自动添加相应的标签。
Azure 自动化:PowerShell 和 Python 是用于自动执行操作任务的常用编程语言。 使用这些语言可以执行重启服务、在数据存储之间传输日志以及缩放基础结构以满足需求等操作。 可以在代码中表达这些操作,并按需运行这些操作。 单独而言,这些语言不提供集中式管理、版本控制或运行历史记录的平台。 这些语言还缺乏响应监视驱动警报等事件的本机机制。 若要提供这些功能,需要一个自动化平台。
自动化 提供了一个 Azure 托管的平台,用于跨云和本地环境(包括 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 事件网格 实现 Ops 自动化。 此示例使用逻辑应用和事件网格自动执行操作任务。
相关链接
- 自动化
- Azure 更新管理器
- Azure Functions
- Azure Monitor 操作组
- 部署环境
- 适用于 Azure 的 GitHub Actions
- 逻辑应用程序
- 使用事件网格实现 Ops 自动化
- Power Automate
- 设计可靠性测试策略的建议
- 设计可靠缩放策略的建议
- 自我修复和自我保护的建议
卓越运营清单
请参阅完整的建议集。