迁移到 Google Cloud:优化您的环境

本文档可以帮助您规划和设计向 Google Cloud 迁移的优化阶段。在 Google Cloud 中部署工作负载后,您可以开始优化您的环境。

本文档是关于迁移到 Google Cloud 的系列文章中的一篇。如果您想要了解该系列文章,请参阅迁移到 Google Cloud:选择迁移路径

本文档是以下系列文章中的一篇:

下图说明了迁移过程的路径。

迁移路径包含四个阶段。

在优化阶段,您将优化环境,使其比初始部署更加高效。

如果您打算在迁移到 Google Cloud 后优化现有环境,或者评估优化机会并想要了解优化效果,则本文档非常有用。

优化阶段的结构遵循本系列文章中描述的迁移框架:评估、规划、部署和优化。您可以使用此通用框架规划整个迁移并细分每个阶段的独立操作。完成优化阶段的最后一步后,您可以重新开始这一阶段并寻找新的优化目标。优化阶段被定义为优化循环。执行循环被定义为优化迭代

优化是一项持续进行的任务。在环境演化过程中,您需要不断优化环境。为避免工作量无法控制和出现重复,您可以设置可衡量的优化目标,并在达到这些目标时停止优化。之后,您可以随时设定更大的新目标,但要考虑到优化在资源、时间、工作量和技术方面的成本。

下图展示了优化循环。

优化决策树。 如需获取大图,请参阅优化决策树

在本文档中,您将执行以下可重复的优化循环步骤:

  1. 评估您的环境、团队以及您所采用的优化循环。
  2. 确定优化要求和目标。
  3. 优化您的环境并培训您的团队。
  4. 调整优化循环。

本文档将介绍一些站点可靠性工程 (SRE) 原则和概念。为了高效可靠地运行具有数十亿用户的全球基础架构,Google 制定了 SRE 规则。如果您需要修改许多业务和协作流程,则在组织中采用完整的 SRE 规则可能不切实际,但应用一些最适合您组织的 SRE 规则可能要简单得多。

评估您的环境、团队和优化循环

在开始任何优化任务之前,您均需要评估您的环境。您还需要评估团队的技能水平,因为您的团队可能缺乏一些优化环境必需的技能。最后,您需要评估优化循环。与其他所有资源一样,循环是一种您可以优化的资源。

评估您的环境

您需要深入了解自己的环境。若要成功实现优化,您需要了解环境的运作方式,并且需要找出可能需要改进的地方。通过评估,您可以将建立一个基准,以便将您的评估与优化阶段和后续优化迭代进行比较。

迁移到 Google Cloud:评估和发现您的工作负载包含大量有关工作负载评估和环境评估的指导。如果您最近已完成过迁移到 Google Cloud 的任务,那么您已经详细了解了环境的配置、管理和维护方式。否则,请使用该指南来评估您的环境。

评估您的团队

当您清楚了解自己的环境后,请评估您的团队以了解他们的技能水平。您需要先列出所有技能、每项技能的专业水平以及对每项技能最为熟悉的团队成员。在下一阶段利用此评估发现实现优化目标所需但被遗漏的技能。例如,如果您开始使用代管式服务,则需要具备预配、配置和与该服务交互的技能。如果要使用 Memorystore 将缓存层添加到向您环境中的应用,您需要使用该服务的专业知识。

请注意,优化环境可能会影响您的业务和协作流程。例如,如果您开始使用全代管式服务而不是自行管理的服务,则可以给您的操作员更多时间来消除繁重的工作

评估您的优化循环

优化循环也是您可以优化的资源。利用在此次评估中收集的数据,您可以清楚地了解您的团队在上次优化迭代中的表现。例如,如果您想要缩短迭代时长,则需要有关上次迭代的数据,包括迭代复杂程度和要实现的目标。您还需要有关在上次迭代期间遇到的所有阻碍的信息,以确保在这些阻碍再次出现时您有缓解策略。

如果此优化循环是第一次迭代,则您可能没有足够的数据来建立基准以对比表现。提出一系列有关您期望团队成员在第一次迭代期间如何表现的假设。在第一次优化迭代后,评估循环和团队的表现,并将其与假设进行比较。

确定优化要求和目标

在开始任何优化任务之前,请先为迭代制定一系列可清楚衡量的目标。

在此步骤中,您将执行以下操作:

  1. 定义您的优化要求。
  2. 根据您的优化要求设置可衡量的优化目标。

定义您的优化要求

请列出优化阶段的要求。要求表明需要进行改进,但不一定是可衡量的改进。

根据您的工作负载、环境和优化循环的一组质量特征,您可以草拟一份调查问卷来帮助您设置您的要求。此调查问卷涵盖您认为对环境、流程和工作负载有价值的特征。

您可以利用许多资料来帮助您定义质量特征。例如,ISO/IEC 25010 标准定义了软件产品的质量特征。或者,您可以查看企业新手入门核对清单

以下是调查问卷中可包含的一些示例问题:

  • 您的基础架构及其组件可以垂直或水平扩缩吗?
  • 您的基础架构是否支持在无人为干预的情况下回滚更改?
  • 您是否已拥有覆盖基础架构和工作负载的监控系统?
  • 您的基础架构是否有突发事件管理系统?
  • 实施规划的优化需要多少时间和工作量?
  • 您过去的迭代是否达到了所有目标?

根据调查问卷的答案,起草本次优化迭代的要求。例如,您的要求可能包含如下内容:

  • 提高应用的性能。
  • 提高环境组件的可用性。
  • 提高环境组件的可靠性。
  • 降低环境的运营成本。
  • 缩短优化迭代的时长以降低内在风险。
  • 提高开发速度和缩短上市期。

了解需要改进的地方后,请评估此列表中的要求。在此次评估中,您将分析优化要求,查找冲突并确定列表中的要求的优先顺序。例如,提高应用性能可能与降低运营成本产生冲突。

设置可衡量的目标

最终确定各项要求后,请为每项要求定义可衡量的目标。一个目标可能有助于满足多个要求。如果您有任何不确定的地方,或者无法定义满足要求所需的所有目标,请返回到此迭代的评估阶段以收集任何遗漏信息,然后优化您的要求。

如需有关定义目标的帮助,您可以遵循其中一个 SRE 规则,即服务等级指标 (SLI) 定义和服务等级目标 (SLO) 的定义

  • SLI 是对您提供的服务等级进行定量衡量的指标。例如,关键的 SLI 可能包括平均请求延迟时间、错误率或系统吞吐量。
  • SLO 是由 SLI 衡量的某个服务等级的目标值或值范围。例如,SLO 可以是平均请求延迟低于 100 毫秒。

定义 SLI 和 SLO 后,您可能会发现自己并未收集衡量 SLI 所需的所有指标。此指标集合是您可以处理的第一个优化目标。您可以设置与扩展监控系统相关的目标,以收集 SLI 所需的所有指标。

优化您的环境和团队

评估环境、团队和优化循环并确定此迭代的要求和目标后,您就可以执行优化步骤了。

在此步骤中,您将执行以下操作:

  1. 衡量您的环境、团队和优化循环。
  2. 分析这些衡量结果数据。
  3. 执行优化操作。
  4. 再次衡量和分析。

衡量您的环境、团队和优化循环

您通过扩展监控系统来收集有关环境、团队和优化循环表现的数据,从而建立一个用于在优化后进行比较的基准。

此操作以您在评估阶段执行的步骤为基础,但涵盖内容更多。确定要求和目标后,您就知道需要收集哪些与优化目标相关的指标进行衡量。例如,如果您定义了 SLO 和相应的 SLI 来降低环境中某个工作负载的响应延迟,则需要收集用以衡量该指标的数据。

了解这些指标同样适用于您的团队和优化循环。您可以扩展监控系统以收集数据,以便衡量与您的团队和优化循环相关的指标。例如,如果您使用 SLO 和 SLI 来缩短优化迭代的时长,则需要收集用以衡量该指标的数据。

在您设计扩展监控系统所需的指标时,请注意,收集数据可能会影响环境和进程的性能。评估衡量时所需实现的指标以及采样间隔,以了解它们是否可能影响性能。例如,采样频率较高的指标可能会降低性能,因此您需要进一步优化。

在 Google Cloud 上,您可以使用 Cloud Monitoring 来实现收集数据所需的指标。您还可以实现自定义指标并从本地或混合云环境中收集数据。若要直接在工作负载中实现自定义指标,您可以使用适用于 Cloud Monitoring 的 Cloud 客户端库OpenCensus。如果您使用的是 Google Kubernetes Engine (GKE),则可以通过 GKE 用量计量来收集有关资源用量的信息(例如 CPU、GPU 和 TPU 使用率),并且然后按命名空间标签划分资源用量。

最后,您可以从 Google Cloud 解决方案库Google Cloud 白皮书中寻找您的团队优化环境时可能需要的新技能。

分析数据

收集数据后,请对照优化要求和目标分析并评估数据,以了解您的环境、团队和优化循环的表现。

特别是,您需要对照以下各项评估您的环境:

  • SLO。
  • 业界最佳做法。
  • 没有任何技术债务的环境。

您根据优化目标确定的 SLO 可以帮助您了解是否达到了预期结果。如果您未达到 SLO,则需要增强您的团队或优化循环。例如,如果您将某个工作负载响应延迟的 SLO 确定为特定百分数,但该工作负载未达到该目标,这就表明您需要优化工作负载的相应部分。

此外,您还可以将自己的情况与业界认可的一系列最佳做法进行比较。例如,企业新手入门核对清单可帮助您为企业工作负载配置可直接用于生产的环境。或者,如果您使用的是 GKE,则可以检查您的环境是否可直接用于生产以及您是否遵循容器运营最佳做法

收集数据后,您可以考虑如何优化环境以使其更具成本效益。您可以将 Cloud Billing 数据导出到 BigQuery,并使用数据洞察创建 Cloud Billing 信息中心来分析数据,了解您正在使用的资源数量以及从中发现存在的支出模式。

最后,您可以将自己的环境与没有任何技术债务的环境进行比较,看看您是否实现了长期目标以及技术债务是否在增加。例如,您可以建立一个 SLO,以衡量环境中受您监控的资源数与自上次迭代以来您已预配的资源数。如果您没有扩展监控系统来涵盖这些新资源,则您的技术债务会有所增加。在分析技术债务的变化时,还要考虑导致这些变化的因素。例如,技术债务增加可能是出于业务需要,或者可能由意外原因所致。了解导致技术债务发生变化的因素有助于您深入了解未来的优化目标。

若要在 Google Cloud 上监控您的环境,您可以使用 Monitoring 设计图表信息中心提醒。然后,您可以导出 Cloud Logging 数据以进行更深入的分析和实现更长的保留期限。例如,您可以创建汇总接收器并将 Cloud Storage、Pub/Sub 或 BigQuery 作为目标位置。如果您将数据导出到 BigQuery,则可以使用数据洞察直观呈现数据,以便发现趋势和进行预测。您还可以使用 RecommenderSecurity Command CenterForseti 等评估工具自动分析您的环境和流程,从而发现优化目标。

分析完所有衡量结果数据后,您需要回答两个问题:

  1. 您是否达到了优化目标?

    如果您的答案为“是”,则表示此优化迭代已完成,您可以开始新的优化迭代。如果您答案为“否”,请转到第二个问题。

  2. 如果提供您预算的资源,您是否能够实现为该迭代设置的优化目标?

回答此问题时,请考虑您需要的所有资源,例如时间、资金和专业知识。如果您的答案为“是”,则可以转到下一部分;否则,请考虑可以用于此迭代的资源,优化您的优化目标。例如,如果您受到固定时间表的限制,则可能需要为下一次迭代安排一些优化目标。

优化您的团队

优化环境是一项持续的挑战,可能需要一些您的团队目前缺乏的技能。在评估分析阶段可以发现这些缺乏的技能。因此,通过培养新技能和提高流程效率来优化团队是成功进行优化活动的关键。

为了优化您的团队,您需要执行以下操作:

  • 设计并开展培训课程。
  • 优化您的团队结构和文化。

为了让您的团队掌握他们缺乏的技能,您需要设计和开展培训课程,或者选择专业的 Google Cloud 培训师准备的课程。如需了解详情,请参阅《迁移到 Google Cloud:评估和发现您的工作负载

在优化团队时,您可能会发现结构和文化存在改进的空间。由于每个公司都有推动自身团队结构和文化发展的历史和特点,因此预先设定一个理想的情况非常困难。

通过 DevOps 文化:如何进行转型一文,您可以很好地了解有关为采用 DevOps 做法而执行和衡量组织更改的总体框架。原则常见误区部分可以帮助您避免在优化团队时遇到障碍。如需获得介绍如何在组织中实现高效 DevOps 文化的实践指南,请参阅站点可靠性工程,它全面介绍了 SRE 方法。站点可靠性工作簿是该书的实践手册,通过具体的示例向您展示了如何将 SRE 原则和做法运用于实践。

SRE 建议您培养无责备的事后分析文化,让您的团队从失败中学习。如果您有兴趣通过开启 SRE 之旅来优化您的团队,您可以在 SRE 书籍客户可靠性工程 (CRE) 博客中查找相应资源。您还可以阅读 re:Work 简介指南案例研究,研究并介绍以数据为依据的流程改进做法。

优化您的环境

在衡量和分析指标数据之后,您能够知道需要优化哪些地方。

本部分介绍了 Google Cloud 环境的一般优化技巧。您还可以执行任何特定于您的基础架构和所用服务的优化活动。

将所有内容标准化

采用 Google Cloud 等公有云环境的最大优势之一是,您可以使用 Cloud API 等明确定义的界面来预配、配置和管理资源。您可以使用 Deployment ManagerTerraform 等工具来定义基础架构即代码 (IaC),并使用所选的版本控制系统管理其版本。

您可以使用 Deployment ManagerTerraform 等工具进行预配,并使用 AnsibleChefPuppet部署您的 Google Cloud 资源。IaC 流程可帮助您实现有效的优化任务回滚策略。您可以还原对描述基础架构的代码所做的任何更改。此外,您还可以通过测试更改避免在更新基础架构时遇到意外故障。

此外,您可以应用类似的流程将环境的其他方面标准化,例如使用 Open Policy Agent 等工具将政策标准化为代码以及使用 GitOps 等工具将操作标准化为代码。

因此,如果您在早期优化迭代中采用 IaC 流程,则可以将后续优化活动定义为代码。您还可以逐步采用该流程,以便评估其是否适合您的环境。

自动处理各项内容

要完全优化整个环境,您需要高效地使用资源。也就是说,您需要消除繁复操作才能节省资源,在优化活动等能带来价值的更重要的任务上进行再投资。

根据 SRE 建议,消除繁复操作的方式是提高自动化程度。并非所有自动化任务都需要高度专业化的软件工程技能或很大的投入。有时,定期执行的短执行脚本每天可能节省数小时。Google Cloud 提供了 Cloud SDK 等工具以及 Cloud API、Cloud SchedulerCloud ComposerCloud Functions 等代管式服务以供您的团队用于自动执行重复性任务。

例如,您可以使用 Spinnaker 和 Google Kubernetes Engine 部署持续交付流水线,以通过 Cloud Build 自动执行构建、测试和部署任务。或者,您可以通过集成多个 Google Cloud 服务来为您的服务生成数据集,从而实现复杂数据处理工作流的自动化。

监控所有内容

如果您无法收集有关环境的详细衡量数据,则您无法优化环境,因为您没有数据来支持您假设。也就是说,您不知道如何做才能实现您的优化目标。

全面的监控系统是您环境的一个必要组件。该系统会监控您针对优化目标需要评估的所有基本指标。在设计监控系统时,请计划至少监控四个黄金信号

您可以使用 Monitoring 和 Logging 等代管式服务来监控您的环境,而无需设置复杂的监控解决方案。您还可以通过与开源应用集成来使用 Monitoring 扩展您的监控系统。例如,您可以使用 Prometheus 对 GKE 进行白盒应用监控使用 OpenCensus 捕获 Cloud Bigtable 跟踪记录和指标

您可能需要实现一个可以监控混合环境和多云端环境的监控系统,以符合仅在特定物理位置或同时使用多个云环境的服务中存储数据这一数据限制政策。

采用云原生方法

云原生是一种描述在云端设计和运行应用的高效方式的范例。Cloud Native Computing Foundation (CNCF)云原生应用定义为可扩缩、能复原、可管理且可通过容器、服务网格、微服务、不可变基础架构和声明性 API 等技术观测的应用。Google Cloud 提供 GKE、Cloud RunTraffic Director、Logging 和 Monitoring 等代管式服务,让用户能够设计和运行云原生应用。

如果您的旧版单体式应用很难通过应用云原生范例实现现代化,则可以将应用迁移到 GKE 上的微服务

如需详细了解云原生技术,请参阅 CNCF 路线图CNCF Cloud 原生交互式概览

费用管理

因为结算和费用模型不同,所以优化 Google Cloud 等公有云环境的费用与优化本地环境不同。本部分介绍可以用于管理 Google Cloud 费用的优化技巧。

首先,在 Cloud Billing创建预算以跟踪费用,按 Cloud 项目或标签进行细分。您还可以配置提醒通过 Pub/Sub 消息和 Cloud Functions 函数触发后续操作来管理费用。

如果您使用的是 Compute Engine,则可以根据 Monitoring 中的指标,使用虚拟机 (VM) 实例机器类型 Recommender 来优化虚拟机的资源利用率。或者,您可以使用有关 IaC 的建议创建自动化工作流来降低成本。

如果您的工作负载允许,您可以使用抢占式虚拟机实例,这些实例是非常实惠的短期虚拟机实例。

Google Cloud 服务采用亲民价格模型计费。为了进一步降低您的费用,Google Cloud 提供了承诺使用折扣等功能,您可以预先签订合约以获得折扣价格。或者,您可以应用持续使用折扣对 Compute Engine 帐单自动打折。

对于某些 Google Cloud 服务,您可以通过一些折扣方案来降低费用和使用更可预测的价格模式来规划预算(例如适用于 BigQuery 的固定费率价格和适用于 Cloud Storage 的存储空间增长方案)。

最后,应用这些成本管理方法时,请不要忘记考虑自动化。由于您可以应用 IaC,您可以将费用管理任务定义为代码,并且不使用任何手动交互,自动执行这些任务以降低费用

再次衡量和分析

当您完成此迭代的优化活动时,请重复进行衡量和分析以检查是否达到您的目标。请回答以下问题:

  • 您是否实现了优化目标?

    如果您的答案为“是”,您可以进入下一部分

    如果您的答案为“否”,请返回本阶段的开始部分

调整优化循环

在本部分中,您将更新和修改在该迭代中采用的优化循环,让其更好地适应您的团队结构和环境。

将优化循环标准化

为了高效地优化您的优化循环,您需要以标准化、直接且易于管理的形式记录和定义循环,以此留出更改的余地。您可以使用 Cloud Composer 等全代管式服务来创建、安排、监控和管理工作流。您还可以先使用业务流程模型和标记法 (BPMN) 等语言表示流程。之后,您可以使用业务流程执行语言 (BPEL) 等标准化语言将这些流程标准化。在采用 IaC 之后,通过使用代码描述流程,您可以像采用 IaC 后处理环境的其余部分那样管理流程。

自动执行优化循环

将优化循环标准化后,您可以自动执行重复性任务来消除繁复工作,节省时间和提高优化循环的效率。您可以开始自动执行所有不需要人工决策的任务,例如衡量数据和生成汇总报告供团队分析。例如,您可以使用 Cloud Monitoring 服务监控自动执行数据分析,以检查您的环境是否满足您定义的 SLO。由于优化是一项永无止境的任务,并且您需要对优化循环进行迭代,因此即使是少量的自动化任务也可以显着提高效率。

监控优化循环

与您处理环境中的所有资源的方式一样,您需要监控优化循环以验证其是否按预期运行,并发现瓶颈和未来的优化目标。您可以通过跟踪您的团队在每个优化步骤上花费的时间和资源数量来开始监控优化循环。例如,您可以使用问题跟踪系统和项目管理工具来监控您的流程,并提取问题解决时间和完成时间等指标的相关统计信息。

寻求帮助

Google Cloud 提供以下支持资源:

  • 自助资源。如果您不需要专属支持,则可以按照自己的进度使用各种选项。
  • 技术合作伙伴Google Cloud 已与多家公司达成合作,便于您使用 Google Cloud 产品和服务。
  • Google Cloud 专业服务。我们的专业服务可以帮助您充分利用在 Google Cloud 中的投资。

Google Cloud 迁移中心提供了更多资源来帮助您将工作负载迁移到 Google Cloud。如需详细了解这些资源,请参阅迁移到 Google Cloud:使用入门中的“寻求帮助”部分

后续步骤

  • 阅读 SRE 书籍,了解其他概念和方法,以便为优化做好准备。
  • 请访问 Google Cloud 博客,查看是否有可帮助您优化环境的新帖子和用例。
  • 探索有关 Google Cloud 的参考架构、图表、教程和最佳做法。查看我们的云架构中心