Databricksをベースとしたデータメッシュの構築、パート2

[Building a Data Mesh Based on the Databricks Lakehouse, Part 2 \- The Databricks Blog](https://www.databricks.com/blog/2022/10/19/building-data-mesh-based-databricks-lakehouse-part-2.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

以前の記事、[Databricksレイクハウスとデータメッシュ、パート1](https://qiita.com/taka_yayoi/items/4a46df653eb44e36ac57)では、Databricksレイクハウスをベースとしたデータメッシュをご紹介しました。本記事では、アーキテクチャの観点からDatabricksレイクハウスの能力がどのようにデータメッシュをサポートするのかを探っていきます。

データメッシュは、あなたが購入する技術やソリューションではなく、アーキテクチャや組織のパラダイムです。しかし、データメッシューを効果的に実装するには、データペルソナ間のコラボレーションを実現し、データ品質をデリバリーし、すべてのデータ&AIのワークロードの相互運用性と生産性を促進する柔軟なプラットフォームを必要とします。

[Databricksレイクハウス](https://www.databricks.com/jp/product/data-lakehouse)の機能がどのようにこれらの要件に対応しているのかを見ていきましょう。

データメッシュの基礎となるビルディングブロックは、通常は以下のコンポーネントから構成されるデータドメインとなります:

1. (ドメインによって所持される)ソースデータ
1. ([Databricksワークスペース](https://qiita.com/taka_yayoi/items/dd41cd715aca272ff5ce)内の)セルフサービス計算資源とオーケストレーション
1. 他のチームやドメインに提供されるドメイン指向のデータ製品
1. ビジネスユーザーが活用できる洞察
1. 総合的な計算資源に関するガバナンスポリシーの遵守

これは以下の図のように表現されます。
![](https://cms.databricks.com/sites/default/files/inline-images/db-363-blog-image-1.png)
*データドメインのコンポーネント*

ドメイン間のコラボレーションとセルフサービス分析を促進するために、アクセスコントロールの機構やデータカタログの機能に関する共通サービスは、多くの場合、集中管理的に提供されます。例えば、[DatabricksのUnity Catalog](https://www.databricks.com/jp/product/unity-catalog)は、データ発見やリネージのような*情報的*カタログ機能だけではなく、現在の多くの企業に望まれているきめ細かいアクセスコントロールの*強制*や監査機能も提供します。

様々なトポロジーでデータメッシュをデプロイすることができます。モダンなデジタルネイティブ企業の外で、完全独立のドメインを持つ高度に分散されたデータメッシュはデータチームにおける複雑性やオーバーヘッドを引き起こし、データチームがビジネスロジックや高品質のデータにフォーカスできなくなるため通常は推奨されません。企業で多く見かけられる2つの一般的なサンプルは、*調和したデータメッシュ*と*ハブ&スポークデータメッシュ*です。

# 1) 調和したデータメッシュに対するアプローチ

調和したデータメッシュはドメイン内の自律性を強調します:

- データドメインがドメイン固有のデータ製品を作成し公開します
- Unity Catalogによって自動でデータ発見が行われます
- データ製品はピア間で活用されます
- ドメインのインフラストラクチャは以下によって調和が取られます
    - セキュリティとコンプライアンスを保証するプラットフォームのブループリント
    - 自己提供するプラットフォームサービス([ドメインプロビジョンの自動化](https://qiita.com/taka_yayoi/items/691ee4909b0961de5ad1)、データカタログ、メタデータ公開、データ・計算資源に対するポリシー)

![](https://cms.databricks.com/sites/default/files/inline-images/db-363-blog-image-2.png)
*調和したデータメッシュのトポロジー*

調和型アプローチから得られる示唆は以下のようなものになるでしょう:

- それぞれが相互運用性やインフラストラクチャ管理の標準、ベストプラクティスに準拠する必要があるデータドメイン
- データドメインそれぞれで、アクセスコントロール、背後にあるストレージアカウント、さらなるインフラストラクチャ(ストリーミングデータ製品におけるイベントブローカーなど)のようなトピックに時間と労力を費やすことに

# 2) ハブ&スポークデータメッシュに対するアプローチ

ハブ&スポークデータメッシュは、共有可能なデータ資産や論理的には単一ドメインに存在しないデータを管理する集中管理のロケーションを取り入れます:

- データドメイン(スポーク)がドメイン固有データ製品を作成します
- データ製品は、Unity Catalogに要録された資産の大部分を所有、管理するデータハブに公開されます
- データハブは以下のようなデータドメイン向けの一般的なサービスプラットフォームオペレーションを提供します:
    - セルフサービスによるマネージドロケーションへのデータ公開
    - Unity Catalogを通じたデータカタログ、リネージ、監査、アクセスコントロール
    - タイムトラベルやドメイン横断の[GDPRプロセス(忘れさられる権利に関するリクエストなど)](https://docs.databricks.com/security/privacy/gdpr-delta.html)のようなデータ管理サービス
- また、データハブもデータドメインとして動作します。例えば、気候、市場調査、標準的なマクロ経済データのような一般的なデータセットや外部から取得されたデータセットに対するパイプラインやツールを提供します。

![](https://cms.databricks.com/sites/default/files/inline-images/db-363-blog-image-3.png)
*ハブ&スポークデータメッシュのトポロジー*

ハブ&スポークデータメッシュから得られる示唆は以下のようなものになるでしょう:

- データドメインは、集中管理的に開発、デプロイされたデータサービスのメリットを享受でき、さらにビジネスロジックやデータ変換ロジックにフォーカスできるようになります
- インフラストラクチャの自動化やセルフサービスの計算資源によって、データチームがデータ製品公開のボトルネックになることを避けることができます

これらのアプローチの両方においては、ドメインは以下のような共通かつ繰り返されるような要件を持つ場合があります:

- データ取り込みツールとコネクター
- MLOpsのフレームワーク、テンプレート、ベストプラクティス
- CI/CD、データ品質、モニタリングのためのパイプライン

センターオブエクセレンスのように集中管理されたスキル、専門性のプールを持つことで、ドメイン共有で繰り返されるアクティビティや個々のドメインでは対応できない可能性のあるニッチな専門性を必要とするあまり発生しないアクティビティの両方においてメリットを享受することができます。また、完全な調和型データメッシュとハブ&スポークモデルの間でいくつかのバリエーションを持つことも全く問題ありません。例えば、単一のドメインには論理的には存在しないデータ資産のみをホストし、複数ドメインで使用される外部データを管理する最小限のグローバルデータハブを持つことができます。Unity Catalogは、Databricksデプロイメント内で管理されてるデータに対して、認証を受けたデータ発見機能を提供する中心的な役割を担います。

# データメッシュのスケールと進化

デプロイされるデータメッシュの理論的アーキテクチャのタイプに関係なく、多くの企業はクラウドリージョン、クラウドプロバイダー、法務部門にまたがるオペレーションモデルの作成に課題を感じています。さらに、組織がデータ資産の製品化(さらには収益化)に向けて進化するに従い、企業レベルで相互運用可能なデータ共有が、内部のドメインだけでなく企業間でのコラボレーションにおいて重要となります。

[Delta Sharing](https://www.databricks.com/jp/product/delta-sharing)は、以下のメリットを提供することで、この問題に対するソリューションを提供します。

- Delta Sharingは、組織間、地域間、技術的境界を越えたドメイン間でのデータ製品をセキュアに共有するためのオープンプロトコルです
- Delta Sharingは(膨大な[クライアント](https://delta.io/sharing/#:~:text=Delta%20Sharing%20Ecosystem)のエコシステムを含み)ベンダー不可知であり、同じ技術スタックやクラウドプロバイダーを用いる必要なしに、異なるドメインや異なる企業間のブリッジを提供します

![](https://cms.databricks.com/sites/default/files/inline-images/db-363-blog-image-4.png)
*リージョン、クラウド、企業横断にデータメッシュをスケール*

# 結言

データメッシュとレイクハウスは両方とも、エンタープライズデータウェアハウスの従来型のデータレイクのペインポイントと短所から誕生しました[^1] [^2]。データメッシュは、生産性の改善やデータから得られる価値に対するビジネス上のビジョンと要件を包括的に明確にし、Databricksレイクハウスは最大の相互運用性、コスト効率、シンプルさを用いてこれらの要件に応えるためのオープンかつスケーラブルな基盤を提供します。

本書では、以下のように統合されたガバナンスをサポートしつつも、コラボレーションや生産性を改善するDatabricksレイクハウスプラットフォームの2つのサンプルの能力を強調しました。

- データメッシュにおける独立したデータ公開、集中管理されたデータ発見、統合された計算資源ガバナンスのイネーブラとしてのUnity Catalog
- クラウド、リージョン横断のデプロイメントを持つ大規模、グローバルな分散組織に対するDelta Sharing。Delta Sharingは複製を作成することなしに、異なる組織境界を越えて効率的かつセキュアに最新のデータを共有します。

しかし、様々なペルソナにおけるデータメッシュのジャーニーにおいて素晴らしいイネーブラとして動作するその他のDatabricks機能が多数あります。例えば:

- バッチとストリーミングワークロードの両方をサポートする高品質な**セルフサービス**データパイプラインのための[ワークフロー](https://www.databricks.com/jp/product/workflows)と[Delta Live Tables](https://www.databricks.com/jp/product/delta-live-tables)
- データレイクに対する直接実施する、高性能BIとSQLクエリーを実現し、データチームによるデータ製品に対する複数のコピー、データストアに要する負荷を削減する[Databricks SQL](https://www.databricks.com/jp/product/databricks-sql)
- データサイエンス&機械学習チーム間の共有、再利用を促進する[Databricks Feature Store](https://www.databricks.com/jp/product/feature-store)

データメッシュ向けレイクハウスの詳細については以下をご覧ください:

- [Matei Zaharia: Data Mesh and Lakehouse](https://www.youtube.com/watch?v=a00rdlNtW98&ab_channel=Thoughtworks)
- [Zalando & Thoughtworks: Data Lakehouse and Data Mesh—Two Sides of the Same Coin](https://www.youtube.com/watch?v=3znQs0MzZ-k&ab_channel=Databricks)
- [Databricks: Meshing About with Databricks](https://www.youtube.com/watch?v=cZwjL0vps5k&ab_channel=Databricks)

[^1]: https://martinfowler.com/articles/data-monolith-to-mesh.html#:~:text=nature%20of%20data.-,The%20current%20enterprise%20data%20platform%20architecture,-It%20is%20centralized
[^2]: レイクハウスとは何？ - Qiita https://qiita.com/taka_yayoi/items/438f762126f57868aa35

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)