こんばんは。今回は、Azure DataFactoryについて調べてみたことをこの記事にまとめていきたいと思います。
それではまいります。
Contents
Azure DataFactoryとは?
一言でいうと、AzureのETL & データ統合サービスです。
公式Docの説明は以下です。
クラウドベースの ETL およびデータ統合サービスを通じて、データの移動と変換を大規模に制御するデータ ドリブンのワークフローを作成できます。 Azure Data Factory を使えば、各種のデータ ストアからデータを取り込むことができるデータ主導型のワークフロー (パイプライン) を作成し、スケジューリングできます。 コンピューティング サービス (Azure HDInsight Hadoop、Azure Databricks、Azure SQL Database など) やデータ フローを使用してデータを変換する複雑な ETL プロセスを視覚的に作成できます。
https://docs.microsoft.com/ja-jp/azure/data-factory/introduction
ウリとなるポイントは以下です。サービスページのキャプチャを拝借しまして・・
https://azure.microsoft.com/ja-jp/services/data-factory/#overview
1,ノーコードでデータフローを定義できる
2,SSISからの移行が簡単
3,さまざまなデータと簡単に接続できる
参考ですが、Gartnerのレポートによると、MicrosoftはData Integration Toolsの分野でもLeaderに選出されています。Azure Data Factory以外にもいくつかのIntegrationサービスがあるため、このプロット=Data Factoryと考えることはできないと思いますが、総合力ということですね。(ところで、AWSやGoogleといった他クラウドベンダーがいない・・?)
AWS, GCPに同様のサービスはある?
AWSのサービスでは、Data Pipeline, Glueが同様の役割を担っているようですね。
https://docs.microsoft.com/ja-jp/azure/architecture/aws-professional/services#data-orchestration–etl
GCPだとCloud Data Fusionというサービスが対応しているようです。
トレンドは?流行ってるの?
トレンドはどうでしょう。一指標として、Google検索のトレンドをData Factory/Glue/Cloud Data Fusionで比較してみました。
まずは世界全体。特にAzure/AWSは右肩上がりのトレンドで、全体として上昇トレンドは続きそうです。2020年末?頃にAmazon GlueのトレンドががくっとおちてAzure Data Factoryのトレンドを下回るようになりました。なにがあったんだろう・・?
というわけで、現在はAzure Data Factoryのトレンドがもっとも高い状況です。
続けて日本でのトレンド。日本ではまだAmazon Glueのトレンドが一番強いようですが、Data Factoryも着実に伸びてきているようです。
また、Gartnerの提供するグローバルのサービスレビューも参考にできそうです。
Azure Data Factoryの機能
公式Docベースでもう少しだけ機能の概要をみておきます。
こちらのドキュメントに全体像の説明がありますが、以下のことができます。
- データを取り込んで(Ingest)
- 加工する(Data Flow)
- パイプラインを作成して(Control Flow)
- 実行スケジューリングができて(Schedule)
- モニタリングまでできる(Monitor)
https://docs.microsoft.com/ja-jp/azure/data-factory/introduction#how-does-it-work
各機能の説明をもう少し確認しておきます。なお、実際の操作感は最後の章で取り上げていますので、そちらもご覧いただければと思います。
Ingest
Data Factory を使用していない企業では、カスタムのデータ移動コンポーネントを構築するか、これらのデータ ソースと処理を統合するカスタム サービスを作成しなければなりません。 このようなシステムの統合と保守は高コストで、容易ではありません。 そのうえ、エンタープライズ クラスの監視やアラートが欠け、フル マネージドのサービスが提供できるような制御機能を用意できないことも少なくありません。
Data Factory を使用すれば、データ パイプラインのコピー アクティビティで、オンプレミスとクラウドの両方のソース データ ストアからクラウド内の一元化されたデータ ストアにデータを移動し、詳しく分析することができます。 たとえば、Azure Data Lake Storage でデータを収集し、後で Azure Data Lake Analytics コンピューティング サービスを使用してデータを変換することができます。 または、Azure Blob Storage でデータを収集し、後で Azure HDInsight Hadoop クラスターを使用してデータを変換することもできます。
https://docs.microsoft.com/ja-jp/azure/data-factory/introduction#connect-and-collect
Data Flow
クラウド上の一元的なデータ ストアにデータが集まったら、ADF マッピング データ フローを使用して、その収集されたデータを処理または変換します。 データ エンジニアは、Spark クラスターや Spark プログラミングの知識がなくても、データ フローを使用して、Spark 上で実行されるデータ変換グラフを作成、維持することができます。
変換を手動でコーディングしたい場合でも、ADF は、HDInsight Hadoop、Spark、Data Lake Analytics、Machine Learning などのコンピューティング サービス上で目的の変換を実行するための外部アクティビティをサポートしています。
https://docs.microsoft.com/ja-jp/azure/data-factory/introduction#transform-and-enrich
Code Flow
データ ファクトリには、1 つまたは複数のパイプラインを設定できます。 パイプラインは、1 つの作業単位を実行するための複数のアクティビティから成る論理的なグループです。 パイプライン内のアクティビティがまとまって 1 つのタスクを実行します。 たとえば、パイプラインに Azure BLOB からデータを取り込むアクティビティのグループを含め、HDInsight クラスターで Hive クエリを実行してデータをパーティション分割することができます。
パイプラインのメリットは、アクティビティを個別にではなく、セットとして管理できることです。 パイプライン内のアクティビティは、連鎖して順次処理することも、独立して並行処理することもできます。
https://docs.microsoft.com/ja-jp/azure/data-factory/introduction#pipeline
Scheduling
パイプライン実行は、パイプラインを実行するインスタンスです。 パイプライン実行は、通常、パイプラインで定義されたパラメーターに引数を渡してインスタンス化されます。 引数は、手動で渡すか、トリガー定義内で渡すことができます。
https://docs.microsoft.com/ja-jp/azure/data-factory/introduction#triggers
Monitor
データ統合パイプラインを正常に構築してデプロイし、変換したデータからビジネス価値を生み出せるようになったなら、スケジュール化したアクティビティとパイプラインを監視して、成功率と失敗率を確認することができます。 Azure Data Factory には、Azure Monitor、API、PowerShell、Azure Monitor ログ、Azure portal の正常性パネルを利用してパイプラインを監視する、ビルトイン サポートが用意されています。
https://docs.microsoft.com/ja-jp/azure/data-factory/introduction#monitor
Azure Data Factoryの実行環境
Azure Data Factoryには3つの実行環境(統合ランタイム/Integration Runtime : IR)が用意されています。
https://docs.microsoft.com/ja-jp/azure/data-factory/concepts-integration-runtime
- Azure IR
- Self-Hosted IR
- Azure SSIS IR
Azure IRはフルマネージドなので、スケーリングやデータの冗長性などはAzureがManageしてくれるので便利ですが、オンプレミスのデータ操作が必要な場合など、用途によってはSelf-Hosted, Azure SSIS IRなどを検討する必要があります。
Azure Data Factoryの価格
最新の価格については以下から確認できます。
https://azure.microsoft.com/ja-jp/pricing/details/data-factory/data-pipeline/
以下に基づいて算出されるとあります。
- パイプラインのオーケストレーションと実行
- データ フローの実行とデバッグ
- Data Factory の操作 (パイプラインの作成やパイプラインの監視など) の数。
料金計算シミュレーションツールから実際の使用量に合わせた見積もりができます。
https://azure.microsoft.com/ja-jp/pricing/calculator/
Azure Data Factoryの導入事例
ここからMicrosoft公式の導入事例を確認できます。
Azure Data Factoryを組み込んだアーキテクチャ例
こちらにアーキテクチャの照会がありますので、大変参考にできると思います。
https://docs.microsoft.com/ja-jp/azure/architecture/browse/?terms=data%20factory
いくつか見てみます。
パターン1:自動化されたエンタープライズ BI
https://docs.microsoft.com/ja-jp/azure/architecture/reference-architectures/data/enterprise-bi-adf
- Data FactoryでETLをかけたデータは、分析やBIでの可視化が目的なので、Azure SQL DatabaseなどではなくSyanapse Analyticsに取り込んでいる。
パターン2:ハイブリッドETL
https://docs.microsoft.com/ja-jp/azure/architecture/example-scenario/data/hybrid-etl-with-adf
- オンプレで既にSSISを動かしていて、それをなるべく変更することなくデータのクラウド移行を実現したい場合に有効なアーキテクチャ。
実際に使ってみた
それでは、実際の使用感についても確認しておきたいと思います。
Azure Data Factoryリソースの作成
リソースの作成が完了したら、概要ページからData Factory Studioを起動します。
こちらがData Factory StudioのUI。SynapseやPurviewなどと似た感じのUIになっています。ここでパイプラインなどを構築していくことになります。
データソースとの連携
次にデータソースとの連携を構成します。ここで連携を構成したリソースは、後程パイプライン構築の中で自由に使うことができるようになります。
さまざまなデータソースと連携することができます。
パイプラインを作成する
続いてパイプラインの作成です。UIはこんな感じで、ドラッグアンドドロップによる直感的な構築ができます。
下の例は、①Azure SQL DatabaseからAzure Data Lake Storage Gen2にCSVを出力(データコピーのステップ)した後、②そのデータと別のデータを使ってごそごそと加工を施して最終的にAzure Synapse Analytics上のデータベースに データを格納する(データフローのステップ)パイプラインの例です。
データフローステップの中身はこんな感じ。
デバッグ
パイプラインを作成した後は、デバッグができます。デバッグとはいえ、本番実行さながらの詳細な情報を確認することができます。
スケジューリング・トリガー
パイプラインにはトリガーを設定することもできます。
監視・アラート
パイプラインの実行状況を監視して、アラートなどを仕込むこともできます。
ソースコード管理
https://docs.microsoft.com/ja-jp/azure/data-factory/source-control
Data Factoryで作成したパイプラインの実体(ソースコード)は、Gitで管理することができ、GithubやAzure DevOpsとのCI/CDが可能です。
また、Data Factory Studioの中でブランチの切り替えができたりもします。
Microsoft Purviewとの連携
おまけですが、Microsoft Purviewと組み合わせてデータガバナンスを強化することもできます。
機能の詳細は以下。また自分でも試してみたらUpdateしたいと思います。
https://docs.microsoft.com/ja-jp/azure/data-factory/connect-data-factory-to-azure-purview
https://docs.microsoft.com/ja-jp/azure/data-factory/tutorial-push-lineage-to-purview
さて、全体感をつかむ編の記事はこのあたりでいったん終わろうかと思いますが、また思いついた観点があれば追記していきたいと思います・・!
最後までご覧いただき有難うございました、この記事が少しでも役に立った!という方は下のいいねボタンをポチっていただけると励みになります!
おしまい
コメントを残す