Azure Data Factory と Azure Synapse Analytics (Synapse Pipeline) の相違点の調査

## はじめに
Azure Data Factory と Azure Synapse Analytics Synapse Pipeline の相違点を聞かれたため、本記事で整理します。

## 注意事項
本記事は2022年7月4日時点における情報をもとに記載しておりますので、ドキュメント等により最新情報を確認するようにしてください。

特に現時点で利用できない機能については、更新により相違点がなくなることが予想されます。

## 主に確認すべきドキュメント

- Azure サブスクリプションとサービスの制約等に関するドキュメント
    - [Azure Data Factory の制限](https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/management/azure-subscription-service-limits#azure-data-factory-limits)
    - [Azure Synapse Analytics の制限](https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/management/azure-subscription-service-limits#azure-synapse-analytics-limits)
- Azure Synapse Analytics と Azure Data Factoryの相違点に関するのドキュメント
    - [Azure Data Factory との違い - Azure Synapse Analytics | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/synapse-analytics/data-integration/concepts-data-factory-differences)
- 個別機能のドキュメント
    - [パイプラインとアクティビティ - Azure Data Factory & Azure Synapse | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/data-factory/concepts-pipelines-activities?tabs=data-factory)
    - [グローバル パラメーター - Azure Data Factory | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/data-factory/author-global-parameters)
    - [Synapse Notebook を実行してデータを変換する - Azure Synapse Analytics | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure///synapse-analytics/synapse-notebook-activity?tabs=classical)
    - [Azure Data Factory での資格情報の暗号化 - Azure Data Factory | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/data-factory/encrypt-credentials-self-hosted-integration-runtime)
    - [カスタマー マネージド キーを使用した Azure Data Factory の暗号化 - Azure Data Factory | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/data-factory/enable-customer-managed-key)
    - [組み込みのポリシー定義 - Azure Data Factory | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/data-factory/policy-reference)


個別機能のドキュメントにて、Azure Data Factory と Azure Synapse Analytics Synapse Pipeline における機能利用可否（適用対象）が記載されています。次の画像では、Azure Data Factory で利用できるが、 Azure Synapse Analytics Synapse Pipeline では利用できないことを表しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/33e9eb4a-3b1a-f91b-16d4-c4b44a5f4f71.png)
引用元：[PowerShell で共有のセルフホステッド統合ランタイムを作成する - Azure Data Factory | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/data-factory/create-shared-self-hosted-integration-runtime-powershell)


## Azure Data Factory と Azure Synapse Analytics Synapse Pipeline の利用指針

### 大規模なデータ統合ワークフロー（オーケストレーション）を構築する場合
大規模なデータ統合ワークフローを構築する場合には、次の理由により、 **複数のAzure Data Factory** の利用をすることがおすすめです。

#### 1. パイプラインの制限の観点

- `パイプライン数の上限`が、Azure Synapse Analytics Synapse Pipeline でのが 800 であること
- `Integration Runtime の共有`が、Azure Data Factory でのみ利用できること

Azure Synapse Analytics Synapse Pipeline でのが 800 であることは、次のように記載されています。Azure Data Factory の上限数の記載は確認できませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c0a7507d-1b55-6209-26c0-13688b923d70.png)
引用元：[Synapse パイプラインの制限](https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/management/azure-subscription-service-limits#synapse-pipeline-limits)

 `Integration Runtime の共有`への対応状況については、次のように記載されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/39e8da52-ef5e-40fa-7810-f8016d8a9455.png)
引用元：[ADF および Azure Synapse Analytics で利用可能な機能](https://docs.microsoft.com/ja-jp/azure/synapse-analytics/data-integration/concepts-data-factory-differences#available-features-in-adf--azure-synapse-analytics)

#### 2. アクセス制御の観点

DataFactory内ではリンクサービスに対して一部の開発者のみにアクセス権を与えるような権限制御はできません。
したがって、大人数での同Azure Data Factoryには向かず、同じアクセス権をもつ開発者グループに一つAzure Data Factory を割り当てるような運用が好ましいです。

一方で、Synapse Workspace内では一部のオブジェクトに対するアクセス制御を実装できるため、分析チーム内でのロールに応じて権限の管理をできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/52554f62-06a9-96e4-0185-37e330d1ac1d.png)


引用元：[ワークスペース項目スコープのロールの割り当てを追加する](https://docs.microsoft.com/ja-jp/azure/synapse-analytics/security/how-to-manage-synapse-rbac-role-assignments#add-workspace-item-scoped-role-assignment)


#### 3. リソース数の制限の観点（サブスクリプション内の制限で考える）

Synapse Workspace は分析に重点をおいたワークスペース環境であるため、既定の制限は控えめです。
また、Synapse はデータ接続用のsqlエンドポイントをもつことになるので、守るべき場所が増えるという見方もあります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/2d0aa23a-5528-1ec0-305c-313ef522a20f.png)

引用元：[Synapse ワークスペースの制限](https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/management/azure-subscription-service-limits#azure-synapse-analytics-limits)


※Azure Data Factoryについては確認できず。


#### 補足とまとめ

大規模ワークフローにおけるAzure Data Factory の分割単位についてはデータソースシステムか、それを事業領域でまとめた単位がよいでしょう。

Synapse Analyticsnの構成単位についても、データ統合後の分析プロジェクト単位（データ統合用途ではなく、キュレーションするための場所として考える）で利用するのがよりスケールしやすい仕組みとなるかと思います。

一方で、複数の事業領域やチームにまたがらない小中規模のデータプロジェクトであれば単一のSynapse Analyticsで統合からDWH化までカバーできるといえるでしょう。
この時、データ統合のためのチームと分析環境のためのチームが分かれるのであればAzure Data Factory と Synapse Analyticsをそれぞれ一つずつ併用するようなパターンも考えられます。

これらはデータ製品としてなにが土台になるかから決まります。

データ製品の考え方については以下の参考資料をご参照ください。

[What's Data Lake ? Azure Data Lake best practice](https://speakerdeck.com/ryomaru0825/whats-data-lake-azure-data-lake-best-practice?slide=31)