本文档可帮助您规划和设计向 Google Cloud迁移的优化阶段。在 Google Cloud中部署工作负载后,您可以开始优化环境。
本文档是关于迁移到Google Cloud的以下系列文章中的一篇:
- 迁移到 Google Cloud:开始使用
- 迁移到 Google Cloud:评估和发现您的工作负载
- 迁移到 Google Cloud:规划和构建您的基础
- 迁移到 Google Cloud:转移您的大型数据集
- 迁移到 Google Cloud:部署您的工作负载
- 迁移到 Google Cloud:从手动部署迁移到自动容器化部署
- 迁移到 Google Cloud:优化您的环境(本文档)
- 迁移到 Google Cloud:验证迁移计划的最佳实践
- 迁移到 Google Cloud:最大限度地降低费用
下图说明了迁移过程的路径。
在优化阶段,您将优化环境,使其比初始部署更加高效。
如果您打算在迁移到 Google Cloud后优化现有环境,或者评估优化机会并想要了解优化效果,则本文档非常有用。
优化阶段的结构遵循本系列文章中描述的迁移框架:评估、规划、部署和优化。您可以使用此通用框架规划整个迁移并细分每个阶段的独立操作。完成优化阶段的最后一步后,您可以重新开始这一阶段并寻找新的优化目标。优化阶段被定义为优化循环。执行循环被定义为优化迭代。
优化是一项持续进行的任务。在环境演化过程中,您需要不断优化环境。为避免工作量无法控制和出现重复,您可以设置可衡量的优化目标,并在达到这些目标时停止优化。之后,您可以随时设定更大的新目标,但要考虑到优化在资源、时间、工作量和技术方面的成本。
下图展示了优化循环。
如需获取大图,请参阅优化决策树。
在本文档中,您将执行以下可重复的优化循环步骤:
- 评估您的环境、团队以及您所采用的优化循环。
- 确定优化要求和目标。
- 优化您的环境并培训您的团队。
- 调整优化循环。
本文档将介绍一些站点可靠性工程 (SRE) 原则和概念。为了高效可靠地运行具有数十亿用户的全球基础架构,Google 制定了 SRE 规则。如果您需要修改许多业务和协作流程,则在组织中采用完整的 SRE 规则可能不切实际,但应用一些最适合您组织的 SRE 规则可能要简单得多。
评估您的环境、团队和优化循环
在开始任何优化任务之前,您均需要评估您的环境。您还需要评估团队的技能水平,因为您的团队可能缺乏一些优化环境必需的技能。最后,您需要评估优化循环。与其他所有资源一样,循环是一种您可以优化的资源。
评估您的环境
您需要深入了解自己的环境。若要成功实现优化,您需要了解环境的运作方式,并且需要找出可能需要改进的地方。通过评估,您可以将建立一个基准,以便将您的评估与优化阶段和后续优化迭代进行比较。
迁移到 Google Cloud:评估和发现您的工作负载包含大量有关如何评估工作负载和评估环境的指导。如果您最近已完成过迁移到Google Cloud的任务,那么您已经详细了解了环境的配置、管理和维护方式。否则,请使用该指南来评估您的环境。
评估您的团队
当您清楚了解自己的环境后,请评估您的团队以了解他们的技能水平。您需要先列出所有技能、每项技能的专业水平以及对每项技能最为熟悉的团队成员。在下一阶段利用此评估发现实现优化目标所需但被遗漏的技能。例如,如果您开始使用代管式服务,则需要具备预配、配置和与该服务交互的技能。如果要使用 Memorystore 将缓存层添加到向您环境中的应用,您需要使用该服务的专业知识。
请注意,优化环境可能会影响您的业务和协作流程。例如,如果您开始使用全代管式服务而不是自行管理的服务,则可以给您的操作员更多时间来消除繁重的工作。
评估您的优化循环
优化循环也是您可以优化的资源。利用在此次评估中收集的数据,您可以清楚地了解您的团队在上次优化迭代中的表现。例如,如果您想要缩短迭代时长,则需要有关上次迭代的数据,包括迭代复杂程度和要实现的目标。您还需要有关在上次迭代期间遇到的所有阻碍的信息,以确保在这些阻碍再次出现时您有缓解策略。
如果此优化迭代是第一次,则您可能没有足够的数据来建立用于比较您的表现的基准。提出一系列有关您期望团队成员在第一次迭代期间如何表现的假设。在第一次优化迭代后,评估循环和团队的表现,并将其与假设进行比较。
确定您的优化要求和目标
在开始任何优化任务之前,请先为迭代制定一系列可清楚衡量的目标。
在此步骤中,您将执行以下操作:
- 定义您的优化要求。
- 根据您的优化要求设置可衡量的优化目标。
定义您的优化要求
请列出优化阶段的要求。要求表明需要进行改进,但不一定是可衡量的改进。
根据您的工作负载、环境和优化循环的一组质量特征,您可以草拟一份调查问卷来帮助您设置您的要求。此调查问卷涵盖您认为对环境、流程和工作负载有价值的特征。
您可以利用许多资料来帮助您定义质量特征。例如,ISO/IEC 25010 标准定义了软件产品的质量特征。或者,您可以查看 Google Cloud 设置核对清单。
以下是调查问卷中可包含的一些示例问题:
- 您的基础架构及其组件可以垂直或水平扩缩吗?
- 您的基础架构是否支持在无人为干预的情况下回滚更改?
- 您是否已拥有覆盖基础架构和工作负载的监控系统?
- 您的基础架构是否有突发事件管理系统?
- 实施规划的优化需要多少时间和工作量?
- 您过去的迭代是否达到了所有目标?
根据调查问卷的答案,起草本次优化迭代的要求。例如,您的要求可能包含如下内容:
- 提高应用的性能。
- 提高环境组件的可用性。
- 提高环境组件的可靠性。
- 降低环境的运营成本。
- 缩短优化迭代的时长以降低内在风险。
- 提高开发速度和缩短上市期。
了解需要改进的地方后,请评估此列表中的要求。在此次评估中,您将分析优化要求,查找冲突并确定列表中的要求的优先顺序。例如,提高应用性能可能与降低运营成本产生冲突。
设置可衡量的目标
最终确定各项要求后,请为每项要求定义可衡量的目标。一个目标可能有助于满足多个要求。如果您有任何不确定的地方,或者无法定义满足要求所需的所有目标,请返回到此迭代的评估阶段以收集任何遗漏信息,然后优化您的要求。
如需有关定义目标的帮助,您可以遵循其中一个 SRE 规则,即服务等级指标 (SLI) 定义和服务等级目标 (SLO) 的定义:
- SLI 是对您提供的服务等级进行定量衡量的指标。例如,关键的 SLI 可能包括平均请求延迟时间、错误率或系统吞吐量。
- SLO 是由 SLI 衡量的某个服务等级的目标值或值范围。例如,SLO 可以是平均请求延迟低于 100 毫秒。
定义 SLI 和 SLO 后,您可能会发现自己并未收集衡量 SLI 所需的所有指标。此指标集合是您可以处理的第一个优化目标。您可以设置与扩展监控系统相关的目标,以收集 SLI 所需的所有指标。
优化您的环境和团队
评估环境、团队和优化循环并确定此迭代的要求和目标后,您就可以执行优化步骤了。
在此步骤中,您将执行以下操作:
- 衡量您的环境、团队和优化循环。
- 分析这些衡量结果数据。
- 执行优化操作。
- 再次衡量和分析。
衡量您的环境、团队和优化循环
您通过扩展监控系统来收集有关环境、团队和优化循环表现的数据,从而建立一个用于在优化后进行比较的基准。
此操作以您在评估阶段执行的步骤为基础,但涵盖内容更多。确定要求和目标后,您就知道需要收集哪些与优化目标相关的指标进行衡量。例如,如果您定义了 SLO 和相应的 SLI 来降低环境中某个工作负载的响应延迟,则需要收集用以衡量该指标的数据。
了解这些指标同样适用于您的团队和优化循环。您可以扩展监控系统以收集数据,以便衡量与您的团队和优化循环相关的指标。例如,如果您使用 SLO 和 SLI 来缩短优化迭代的时长,则需要收集用以衡量该指标的数据。
在您设计扩展监控系统所需的指标时,请注意,收集数据可能会影响环境和进程的性能。评估衡量时所需实现的指标以及采样间隔,以了解它们是否可能影响性能。例如,采样频率较高的指标可能会降低性能,因此您需要进一步优化。
在 Google Cloud上,您可以使用 Cloud Monitoring 来实现收集数据所需的指标。如需直接在工作负载中实现自定义指标,您可以使用适用于 Cloud Monitoring 的 Cloud 客户端库或 OpenTelemetry。如果您使用的是 Google Kubernetes Engine (GKE),则可以通过 GKE 资源用量来收集有关资源用量的信息(例如 CPU、GPU 和 TPU 用量),然后按命名空间或标签划分资源用量。
最后,您可以将云架构中心和 Google Cloud 白皮书作为出发点,寻找您的团队开展环境优化需要能掌握的新技能。
分析数据
收集数据后,请对照优化要求和目标分析并评估数据,以了解您的环境、团队和优化循环的表现。
特别是,您需要对照以下各项评估您的环境:
- SLO。
- 业界最佳做法。
- 没有任何技术债务的环境。
您根据优化目标确定的 SLO 可以帮助您了解是否达到了预期结果。如果您未达到 SLO,则需要增强您的团队或优化循环。例如,如果您将某个工作负载响应延迟的 SLO 确定为给定百分数,但该工作负载未达到该目标,这就表明您需要优化工作负载的相应部分。
此外,您还可以将自己的情况与业界认可的一系列最佳做法进行比较。例如,Google Cloud 设置核对清单可帮助您为企业工作负载配置可直接用于生产的环境。
收集数据后,您可以考虑如何优化环境以使其更具成本效益。您可以将 Cloud Billing 数据导出到 BigQuery 并使用 Looker Studio 分析数据,以了解您正在使用的资源数量并从中发现任何支出模式。
最后,您可以将自己的环境与没有任何技术债务的环境进行比较,看看您是否实现了长期目标以及技术债务是否在增加。例如,您可以建立一个 SLO,以衡量环境中受您监控的资源数与自上次迭代以来您已预配的资源数。如果您没有扩展监控系统来涵盖这些新资源,则您的技术债务会有所增加。在分析技术债务的变化时,还要考虑导致这些变化的因素。例如,技术债务增加可能是出于业务需要,或者可能由意外原因所致。了解导致技术债务发生变化的因素有助于您深入了解未来的优化目标。
若要在 Google Cloud上监控您的环境,您可以使用 Monitoring 设计图表、信息中心和提醒。然后,您可以路由 Cloud Logging 数据以进行更深入的分析和实现更长的保留期限。例如,您可以创建汇总接收器并将 Cloud Storage、Pub/Sub 或 BigQuery 作为目标位置。如果您将数据导出到 BigQuery,则可以使用 Looker Studio 直观呈现数据,以便发现趋势和进行预测。您还可以使用 Recommender 和 Security Command Center 等评估工具自动分析您的环境和流程,从而发现优化目标。
分析完所有衡量结果数据后,您需要回答两个问题:
您是否达到了优化目标?
如果您的答案为“是”,则表示此优化迭代已完成,您可以开始新的优化迭代。如果您答案为“否”,请转到第二个问题。
如果提供您预算的资源,您是否能够实现为该迭代设置的优化目标?
回答此问题时,请考虑您需要的所有资源,例如时间、资金和专业知识。如果您的答案为“是”,则可以转到下一部分;否则,请考虑可以用于此迭代的资源,优化您的优化目标。例如,如果您受到固定时间表的限制,则可能需要为下一次迭代安排一些优化目标。
优化您的团队
优化环境是一项持续的挑战,可能需要一些您的团队目前缺乏的技能。在评估和分析阶段可以发现这些缺乏的技能。因此,通过培养新技能和提高流程效率来优化团队是成功进行优化活动的关键。
为了优化您的团队,您需要执行以下操作:
- 设计并开展培训课程。
- 优化您的团队结构和文化。
为了让您的团队掌握他们缺乏的技能,您需要设计和开展培训课程,或者选择专业的Google Cloud 培训师准备的课程。如需了解详情,请参阅迁移到 Google Cloud:评估和发现您的工作负载。
在优化团队时,您可能会发现结构和文化存在改进的空间。由于每个公司都有推动自身团队结构和文化发展的历史和特点,因此预先设定一个理想的情况非常困难。
变革型领导力是一个很好的起点,可了解为采用 DevOps 做法而执行和衡量组织更改的通用框架。如需查看有关如何在组织中实现高效 DevOps 文化的实用指导,请参阅站点可靠性工程,它全面介绍了 SRE 方法。站点可靠性工作簿是该书的配套文档,通过具体的示例介绍了如何将 SRE 原则和做法运用于实践。
优化您的环境
在衡量和分析指标数据之后,您能够知道需要优化哪些地方。
本部分介绍了Google Cloud 环境的一般优化技巧。您还可以执行任何特定于您的基础架构和所用服务的优化活动。
将所有内容标准化
采用Google Cloud等公有云环境的最大优势之一是,您可以使用 Cloud API 等明确定义的界面来预配、配置和管理资源。您可以使用自己选择的工具来定义基础架构即代码 (IaC) 流程,并使用自己选择的版本控制系统。
您可以使用 Terraform 等工具预配 Google Cloud 资源,然后使用 Ansible、Chef 或 Puppet 等工具来配置这些资源。IaC 流程可帮助您实现有效的优化任务回滚策略。您可以还原对描述基础架构的代码所做的任何更改。此外,您还可以通过测试更改避免在更新基础架构时遇到意外故障。
此外,您可以应用类似的流程将环境的其他方面标准化,例如使用 Open Policy Agent 等工具将政策标准化为代码以及使用 GitOps 等工具将操作标准化为代码。
因此,如果您在早期优化迭代中采用 IaC 流程,则可以将后续优化活动定义为代码。您还可以逐步采用该流程,以便评估其是否适合您的环境。
自动处理各项内容
要完全优化整个环境,您需要高效地使用资源。也就是说,您需要消除繁复操作才能节省资源,在优化活动等能带来价值的更重要的任务上进行再投资。
根据 SRE 建议,消除重复劳动的方式是提高自动化程度。并非所有自动化任务都需要高度专业化的软件工程技能或很大的投入。有时,定期执行的简短可执行脚本每天可以节省数小时的时间。 Google Cloud 提供了 Google Cloud CLI 等工具以及 Cloud API、Cloud Scheduler、Cloud Composer 和 Cloud Run 等托管式服务,您的团队可以使用这些工具和服务来自动执行重复性任务。
监控所有内容
如果您无法收集有关环境的详细衡量数据,则您无法优化环境,因为您没有数据来支持您假设。也就是说,您不知道如何做才能实现您的优化目标。
全面的监控系统是您环境的一个必要组件。该系统会监控您针对优化目标需要评估的所有基本指标。在设计监控系统时,请计划至少监控四个黄金信号。
您可以使用 Monitoring 和 Logging 等托管式服务来监控您的环境,而无需设置复杂的监控解决方案。
您可能需要实现一个可以监控混合环境和多云环境的监控系统,以符合仅在特定物理位置或同时使用多个云环境的服务中存储数据这一数据限制政策。
采用云就绪方法
云就绪是一种描述在云端设计和运行应用的高效方式的模式。Cloud Native Computing Foundation (CNCF) 将云原生应用定义为可伸缩、能复原、可管理且可通过容器、服务网格、微服务、不可变基础架构和声明性 API 等技术观测的应用。 Google Cloud 提供了 GKE、Cloud Run、Cloud Service Mesh、Logging 和 Monitoring 等托管式服务,让用户能够设计和运行云就绪应用。
如需详细了解云就绪技术,请参阅 CNCF 路线图和 CNCF 云原生交互式环境。
费用管理
由于结算和费用模式不同,因此优化 Google Cloud 等公有云环境的费用与优化本地环境的费用不同。
如需了解详情,请参阅迁移到 Google Cloud:最大限度地降低费用。
再次衡量和分析
当您完成此迭代的优化活动时,请重复进行衡量和分析以检查是否达到您的目标。请回答以下问题:
您是否实现了优化目标?
如果您的答案为“是”,您可以进入下一部分。
如果您的答案为否,请返回到优化您的环境和团队阶段的开头部分。
调整优化循环
在本部分中,您将更新和修改在该迭代中采用的优化循环,让其更好地适应您的团队结构和环境。
将优化循环标准化
为了高效地优化优化循环,您需要以标准化、简单且易于管理的形式记录和定义循环,以此留出更改的空间。您可以使用 Cloud Composer 等全代管式服务来创建、安排、监控和管理工作流。您还可以先使用业务流程模型和标记法 (BPMN) 等语言表示流程。之后,您可以使用业务流程执行语言 (BPEL) 等标准化语言将这些流程标准化。在采用 IaC 之后,通过使用代码描述流程,您可以像采用 IaC 后处理环境的其余部分那样管理流程。
自动执行优化循环
将优化循环标准化后,您可以自动执行重复性任务来消除繁复工作,节省时间和提高优化循环的效率。您可以开始自动执行所有不需要人工决策的任务,例如衡量数据和生成汇总报告供团队分析。例如,您可以使用 Cloud Monitoring 自动执行数据分析,以检查您的环境是否达到您定义的 SLO。由于优化是一项永无止境的任务,并且您需要对优化循环进行迭代,因此即使是少量的自动化任务也可以显着提高效率。
监控优化循环
与您处理环境中的所有资源的方式一样,您需要监控优化循环以验证其是否按预期运行,并发现瓶颈和未来的优化目标。您可以通过跟踪您的团队在每个优化步骤上花费的时间和资源数量来开始监控优化循环。例如,您可以使用问题跟踪系统和项目管理工具来监控您的流程,并提取问题解决时间和完成时间等指标的相关统计信息。
后续步骤
- 了解验证迁移计划的最佳实践。
- 阅读 SRE 书籍,了解其他概念和方法,以便为优化做好准备。
- 了解何时寻求迁移帮助。
- 如需查看更多参考架构、图表和最佳实践,请浏览 Cloud 架构中心。
贡献者
作者:Marco Ferrari | 云解决方案架构师