Azure Data Factory に FinOps を適用する

この記事では、Azure Data Factory で FinOps を適用する方法について説明します。

FinOps とは

FinOps Foundation の Technical Advisory Council では、FinOps を次のように定義しています。

FinOps は、組織がビジネス価値を最大化することを可能にする、進化するクラウドの財務管理規律と文化的実践です。エンジニアリング、財務、テクノロジ、ビジネスの各チームが、共同作業を通じて支出に関するデータドリブン型の意思決定を行えるように支援します。

FinOps の中核となるのは、文化的実践です。 これは、各チームがそれぞれのクラウド コストを管理する方法です。各チームは、中央のベスト プラクティス グループによってサポートされているそれぞれのクラウド使用量の所有権を取得します。 エンジニアリング、財務、製品などの機能横断型チームは、より迅速な製品の提供を可能にする一方で、同時に財務管理と予測可能性を強化するために、協力します。

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

Azure Data Factory に FinOps を適用する方法

Azure Data Factory は、Microsoft が提供するクラウドでのデータ統合と ETL (抽出、変換、読み込み) のサービスです。 データ ファクトリで効果的な予算作成とコスト管理を実現するために、最初に、価格モデルを理解する方法を確認します。 次に、ファクトリ レベルとパイプライン レベルで支出を分析することが重要です。 これは、データ ファクトリの組み込みの消費量レポートを使用しながら、Azure のコスト管理とコスト分析の機能を使用して Azure サブスクリプション レベルで行うことができます。 最後に、コスト管理に役立つように、Azure サブスクリプションに対する支出制限を設定する方法について説明します。

Azure Data Factory の価格を理解する

次の図では、データ ファクトリの価格を計算する一般的なフローについて説明します。 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 Data Factory の価格を実例から理解する

例: Azure Databricks を使用して 1 時間ごとにデータをコピーして変換する

このシナリオでは、AWS S3 から Azure Blob ストレージにデータをコピーし、Azure Databricks で 30 日間、1 日 8 時間、 時間単位のスケジュールでデータを変換します。

この例で使用されている価格は架空のものであり、実際の正確な価格を暗に示すものではありません。 読み取りと書き込みおよび監視のコストは、通常はごくわずかであり、全体的なコストに大きな影響を与えないため、表示されません。 アクティビティの実行も、価格計算ツールの見積もりで最も近い 1000 に丸められます。

構成

シナリオを実現させるには、次の項目を含むパイプラインを作成する必要があります:

  1. AWS S3 からコピーされるデータの入力データセットと、Azure Storage のデータの出力データセットを含む 1 つのコピーアクティビティです。
  2. データ変換のための1つの Azure Databricks アクティビティ。
  3. パイプラインを 1 時間ごとに実行する 1 つのスケジュールされたトリガー。 パイプラインを実行する場合は、すぐにトリガーするか、スケジュールを設定することができます。 パイプライン自体に加え、各トリガー インスタンスは 1 つのアクティビティの実行としてカウントされます。

コスト見積もり

次の手順に従って、Azure 料金計算ツールとフローを参照してください。

  1. ソースとシンクの両方が Azure マネージド VNET を使用していない場合は、手順 2 に進みます。
  2. ソースとシンクの両方がセルフホステッド IR を使用していない場合、オーケストレーションと実行は Azure IR を使用して計算されます。
  3. ここでは、コピー アクティビティと外部アクティビティのみを使用します。 データ フロー アクティビティは使用しないため、合計コストはオーケストレーションと実行のコストの合計と等しくなります。

1 か月の推定価格 (1 日あたり 8 時間、30 日間):

種類 計算
オーケストレーション (アクティビティの実行回数 (1,000 回単位)) 実行ごとに 3 つのアクティビティ実行 (トリガーの実行用に 1 つ、アクティビティの実行用に 2 つ)。
アクティビティの実行回数/月 = 3 * 8 * 30 = 720
アクティビティの実行回数 (1,000 回単位)/月 = 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 Data Factory エンジニア

Data Factory エンジニアは、毎日マッピング データ フローを設計、構築、テストする責任があります。 エンジニアは、朝に Azure Data Factory Studio にログインし、データ フローのデバッグ モードを有効にします。 デバッグ セッションの既定の有効期限 (TTL) は、60 分です。 エンジニアは 1 日 8 時間働いているので、デバッグ セッションは期限切れになりません。 したがって、1 日のエンジニアの料金は次のとおりです。

8 時間 * 8 個のコンピューティング最適化コア * 1 時間あたりコアあたり $0.193 = $12.35

予算作成

Azure Data Factory の実装を計画するときには、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 Cost Management、Azure Advisor、データ ファクトリ内の予約インスタンスを使用したコストの最適化について説明します。

Microsoft Cost Management

Microsoft Azure には、Azure の支出を追跡、最適化、管理するために役立つツールが用意されています。 データ ファクトリの支出が最優先事項である場合は、Azure 内でデータ ファクトリごとに個別のリソース グループを作成することをお勧めします。 これにより、Microsoft Cost Management を使用して、予算の作成、支出の追跡、コスト管理の適用を簡単に行うことができます。

Screenshot showing the Microsoft cost management page in Azure.

今日の組織は、支出を管理し、より少ない予算でより多くのことを行えるように、これまで以上に懸命に取り組んでいます。 Azure の予算機能を使用して、Azure Data Factory v2 の使用量と、データ ファクトリに使用している Azure リソース グループ全体に対して、支出制限を設定できます。

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

[予算の作成] ウィンドウから、フィルターを使用して、Azure Data Factory サービスまたはリソース グループのいずれかを選択します。

Azure Advisor

Azure の予算を最適化するためのもう 1 つの重要なツールは、Azure Advisor です。 Azure Advisor を使用すると、Azure の支出全体を削減するための推奨事項を受け取ることができます。 これには、マッピング データ フローのコストを削減するための Azure Data Factory の予約インスタンス価格の使用が含まれます。 Azure Data Factory の料金は、Azure 前払いのクレジットで支払うこともできます。

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

Azure Data Factory 内の予約インスタンス

予約インスタンスは、Azure Data Factory 内でマッピング データ フローのために使用できます。これを使用すると、データ フローの通常の表示価格よりも節約できます。 予約インスタンスを使用して、予約の期間に基づいた割引レベルで 1 年または 3 年の予約を事前購入します。 予約インスタンスを使用したコスト削減のカスタマイズされたビューを表示するには、Azure portal に移動し、[予約] を選択し、データ ファクトリを選択します。 そこから、通常使用するデータ フローの種類を選択すると、Azure portal は、以前のデータ ファクトリの使用状況に基づいて将来の削減額を見積もります。

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.

データ ファクトリの課金のパイプライン レベルのビューは、データ ファクトリのコスト全体を各パイプライン リソースに帰属させるために役立ちます。 また、内部の組織による消費量と、外部の顧客またはパートナーによる使用量の両方について、ファクトリのユーザーへのチャージバックを実装するための使いやすいメカニズムを提供するためにも役立ちます。

パイプライン コストの帰属のためにタグを使用する方法

データ ファクトリ リソースのコストの帰属を追跡するためのもう 1 つのメカニズムは、ファクトリでのタグ付けを使用することです。 データ ファクトリとその他の Azure リソースに同じタグを割り当てて、それらを同じカテゴリにまとめ、統合された課金を表示できます。 ファクトリ内のすべての SSIS (SQL Server Integration Services) IR は、このタグを継承します。 データ ファクトリ タグを変更する場合は、ファクトリ内のすべての SSIS IR を停止してから再起動して、それらに新しいタグを継承させる必要があることに注意してください。 詳細については、SSIS IR の再構成に関するセクションを参照してください。