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

将 FinOps 应用于 Azure 数据工厂

本文介绍如何将 FinOps 应用于 Azure 数据工厂。

什么是 FinOps?

FinOps 基金会技术顾问委员会对 FinOps 进行了相应的定义:

FinOps 是一种不断发展的云财务管理规则和文化实践,通过帮助工程、财务、技术和业务团队在数据驱动的支出决策上进行协作,使组织能够获得最大的业务价值。

FinOps 的核心是一种文化实践。 这是团队管理其云成本的方式,每个人都拥有由中央最佳实践小组支持的云使用所有权。 工程、财务、产品等部门的跨职能团队协同工作以实现更快的产品交付,同时获得更多的财务控制和可预测性。

Diagram showing a high-level overview of how FinOps works in an organization.

如何将 FinOps 应用于 Azure 数据工厂

Azure 数据工厂是 Microsoft 在云中的数据集成和 ETL(提取、转换和加载)服务。 为了在数据工厂中实现有效的预算和成本控制,我们首先回顾如何理解定价模型。 接下来,请务必分析在工厂和管道级别的支出。 可使用数据工厂的内置消耗报表,也可在 Azure 订阅级别使用 Azure 成本管理和成本分析功能进行分析。 最后,我们将讨论如何设置 Azure 订阅的支出限制,以帮助提供成本控制。

了解 Azure 数据工厂定价

下图说明了计算数据工厂价格的一般流程。 它演示如何使用 Azure 定价计算器来计算价格。 总体而言,要了解数据工厂计费,主要部分涉及到业务流程、执行、集成运行时 (IR) 类型、数据移动(复制)和数据流方面的成本。

  1. 检查数据工厂源或接收器集成运行时是否使用托管的虚拟网络 (VNET)。 如果是,则使用 Azure 托管 VNET IR 计算业务流程和执行成本。 若没有提示,请继续下一步。
  2. 确认源或接收器是否使用自承载集成运行时。 如果是,则通过自承载 IR 计算业务流程和执行成本,总成本等于业务流程和执行的成本之和。 如果不是,则通过 Azure IR 计算业务流程和执行成本。
  3. 对于 Azure IR 和 Azure 托管 VNET IR,请确认是否使用数据流。 如果是,则总成本等于数据流群集、业务流程和执行的成本之和。 否则,总成本就是业务流程成本和执行成本的总和。

Flow chart showing the process to calculate costs for Azure Data Factory.

示例方案

让我们看几个示例,来了解常见的数据工厂方案以及与每个工作负载关联的估计成本。 在查看每个示例时,请记住以下数据工厂成本标准:

  • 查看帐单时,请记住,对于每个活动持续时间,数据工厂向上舍入到分钟(即 1 分 1 秒按照 2 分钟进行计费)。
  • 以下示例基于常见方案并显示预估成本。
  • 在 Azure 中使用的数据存储和外部服务可能会产生其他成本。
  • 根据你与 Microsoft 签订的销售合同条款,实际成本可能与这些示例略有不同。
  • 此链接提供了更多示例:通过示例了解 Azure 数据工厂定价

示例:使用 Azure Databricks 按小时复制数据并进行转换

在此方案中,需持续 30 天(每天 8 小时)使用 Azure Databricks 按计划将数据每隔一小时从 AWS S3 复制到 Azure Blob 存储并对数据进行转换。

此示例中使用的是假定价格,并不是指实际的确切定价。 未显示读取/写入和监视成本,因为它们通常可以忽略不计,并且不会对总体成本产生显著影响。 在定价计算器估计中,活动运行也舍入到最接近的 1000。

配置

若要完成此方案,需使用以下项创建一个管道:

  1. 一个使用输入数据集(适用于将要从 AWS S3 复制的数据)和输出数据集(适用于 Azure 存储上的数据)的复制活动。
  2. 一个用于数据转换的 Azure Databricks 活动。
  3. 一个计划触发器,用于每一小时执行一次管道。 当你想要运行管道时,你可以立即触发管道或计划管道。 除了管道本身,每个触发器实例都算作单个活动运行。

成本估算

请查看 Azure 定价计算器,并按照以下步骤跳转:

  1. 如果源和接收器都未使用 Azure 托管 VNET,请转到步骤 2。
  2. 如果源和接收器都未使用自承载 IR,则使用 Azure IR 计算业务流程和执行成本。
  3. 在这里,我们仅使用复制活动和一个外部活动。 它不使用数据流活动,因此总成本等于业务流程和执行成本之和。

一个月的预估价格(每天 8 小时,持续 30 天):

类型 计算
业务流程(活动运行计数,以千为单位) 每次执行时运行 3 次活动(1 次用于触发器运行,2 次用于活动运行)。
活动运行计数/月 = 3 * 8 * 30 = 720。
活动运行计数 = 1(以千/月为单位)
执行 1. 数据集成单元 (DIU) 小时数:
   • 每次执行的 DIU 小时数 =10 分钟
   • 默认 DIU 设置 = 4
   • DIU 小时/月 = (10 分钟/60 分钟) * 4 * 8 * 30 = 160

2. 外部管道活动执行小时数:
   • 每次执行时间:10 分钟
   • 外部管道活动执行小时数 = (10 分钟/60 分钟) * 8 * 30 = 40

定价计算器示例

30 天的总方案定价:41.01 美元

Screenshot of the Azure pricing calculator showing the cost estimation for this scenario.

示例:在正常工作日使用映射数据流调试

此示例显示了数据工程师在典型工作日的映射数据流调试成本。 以下示例中使用的是假定价格,并不是指确切实际定价。 未显示读取/写入和监视成本,因为它们通常可以忽略不计,并且不会对总体成本产生显著影响。 在定价计算器估计中,活动运行也舍入到最接近的 1000。

Azure 数据工厂工程师

数据工厂工程师每天负责设计、构建和测试映射数据流。 工程师早上登录到 Azure 数据工厂工作室,为数据流启用调试模式。 调试会话的默认生存时间 (TTL) 为 60 分钟。 工程师一整天 8 小时都在工作,因此调试会话永不过期。 所以,工程师当天费用为:

8 小时 * 8 个计算优化的核心 * 每个核心每小时 0.193 美元 = 12.35 美元

预算

计划 Azure 数据工厂实现时,了解和预测成本非常重要,这有助于为 ETL 和数据集成项目制定预算。

Screenshot of the pipeline monitoring screen highlighting the consumption report button.

从管道监视视图中选择“消耗报表”按钮,获取每次运行的计费单位数的快照。

在监视页上,对于从调试或手动触发的运行中,甚至从自动触发器运行中运行的任何管道,你可以手动使用消耗报表。

Screenshot of the pipeline run consumption window showing the total units billed for a run.

数据工厂管道消耗报表提供了估计的计费单位数。 可以在较小的数据集上使用管道的调试执行来运行这些测试,然后根据这些估计值推断出生产预算。

消耗报表中的值带有单位。 若要从中得出货币估算值,请根据 Azure 定价计算器将此报表中的单位值乘以你所在区域的价格。 这将生成该管道执行的预估成本。 最佳做法是使用不同的数据集多次执行管道来获取成本的基线范围,并使用这些运行的平均值进行预算。

Azure 成本优化

本部分讨论使用 Microsoft 成本管理、使用 Azure 顾问和针对数据工厂中的预留实例进行成本优化。

Microsoft 成本管理

Microsoft Azure 提供了工具来帮助你跟踪、优化和控制 Azure 支出。 如果你的数据工厂支出是重中之重,建议在 Azure 中为每个数据工厂创建单独的资源组。 这样,就能使用 Microsoft 成本管理轻松制定预算、跟踪支出并应用成本控制措施。

Screenshot showing the Microsoft cost management page in Azure.

如今,组织比以往更努力地控制支出,用更少的钱做更多的事。 你可以使用 Azure 预算功能,针对 Azure 数据工厂 v2 使用量和用于数据工厂的整体 Azure 资源组设置支出限制。

Screenshot of the Azure budgets page showing how to set budgets for a service.

“创建预算”窗口中,使用筛选器来选择 Azure 数据工厂服务或资源组。

Azure 顾问

还有一个用于优化 Azure 预算的宝贵工具是 Azure 顾问。 使用 Azure 顾问,你可以收到有关减少 Azure 总支出的建议。 这包括利用用于降低映射数据流成本的 Azure 数据工厂预留实例定价。 还可以使用 Azure 预付款额度支付 Azure 数据工厂费用。

Screenshot showing the Azure Advisor window that can provide recommendations including cost reduction optimizations.

Azure 数据工厂中的预留实例

预留实例在 Azure 数据工厂中可用于映射数据流,你可用它来提供相对于数据流正常标价的成本节约。 使用预留实例时,可以根据预留的时长按折扣价预购 1 年或 3 年预留。 若要查看使用预留实例节省成本的自定义视图,请导航到 Azure 门户并选择“预留”,然后选择“数据工厂”。 从这里,你将选取通常使用的数据流类型,然后 Azure 门户会根据你之前的数据工厂利用率估算将来的节省额。

Screenshot showing the Azure reservations page with data factory highlighted.

通过使用预留实例来预留映射数据流容量,可立即降低与数据流使用直接相关的整体数据工厂支出。

跟踪数据工厂支出

在 Azure 中构建数据集成基础结构时,跟踪一段时间内的支出非常重要。 可通过多种方式跟踪数据工厂预算。 默认情况下,数据工厂会根据服务使用的不同计费计量为工厂提供汇总成本。

如何使用管道计费粒度视图

可在工厂设置下将工厂设置为使用按管道计费选项,要求数据工厂提供成本的管道级汇总。

Screenshot showing the Azure Data Factory Studio manage tab's settings page with the billing by pipeline setting selected.

此视图提供每个管道的数据工厂支出明细。 对于在行项级别而不是工厂汇总(默认)确定成本归因,这非常有用。

Screenshot showing the billing report for pipeline granular billing with a breakdown of costs per pipeline.

数据工厂帐单的管道级视图有助于将总体数据工厂成本归因于每个管道资源。 对于内部组织消耗和外部客户/合作伙伴使用,它还有助于提供一种易于使用的机制来实现对工厂用户的退款。

如何使用标记进行管道成本归因

跟踪数据工厂资源归因成本的另一种机制是在工厂中使用标记。 可以将同一个标记分配给你的数据工厂和其他 Azure 资源,将它们放在同一类别中来查看其合并帐单。 工厂中的所有 SSIS (SQL Server Integration Services) PR 都会继承此标记。 请记住,如果更改数据工厂标记,需要停止再重启工厂中的所有 SSIS IR,以便它们继承新标记。 有关更多详细信息,请参阅重新配置 SSIS IR 部分