Ein Data Contract regelt das Format und den Inhalt bereitgestellter Daten, die zugesicherte Qualität, die Nutzungsbedingungen und ggf. eine Kostenvereinbarung.

In Data Mesh werden Data Contracts verwendet, um Abhängigkeiten und Zugriffe zwischen Datenprodukten bilateral zwischen Domänenteams zu regeln.

Data Contract Beispiel

Schauen wir uns dazu ein Beispiel für einen Data Contract an:

Name Value
Data Product Provider Domain Team: Checkout
Data Product: Webshop Orders
Data Product Owner: Nicky Cree ([email protected])
Output Port: bigquery_orders_latest_npii_v1
Purpose Build a demand forecasting model
Schema
models:
- name: orders
  description: >
    One record per order. Includes cancelled and deleted orders.
  columns:
    - name: order_id
      data_type: string
      description: Primary key of the orders table
    - name: order_timestamp
      data_type: timestamptz
      description: The business timestamp in UTC when the order was successfully registered in the source system and the payment was successful.
    - name: order_total
      data_type: integer
      description: "Total amount of the order in the smallest monetary unit (e.g., cents)."
- name: line_items
  description: >
    The items that are part of an order
  columns:
    - name: lines_item_id
      data_type: string
      description: Primary key of the lines_item_id table
    - name: order_id
      data_type: string
      description: Foreign key to the orders table
    - name: sku
      data_type: string
      description: The purchased article number
Service-level objectives Interval of change: Continuous streaming
Latency: < 60 seconds
Completeness: All orders since 2020-01-01T00:00:00Z
Freshness: Near real time, max. 60 seconds delay
Availability: 99.9%
Performance: Query all orders of last 12 months < 30 seconds
Data volume: 5,000-10,000 orders per day expected, ~50 KiB / order
Terms Max queries per minute: 10
Max data processing per day: 1 TiB
Pub/Sub subscriptions
Security IAM service-account: serviceAccount:controlling-data-consumer@example-prod-data.iam.gserviceaccount.com
Costs and Billing Implementation and operational costs are covered by the checkout domain until 2023-12-31.
Start date 2023-04-01
End date
Notice Period 3 months
Next reassessment date 2024-04-01

Prozess und Inhalt

In einem Data Contract werden alle Attribute eines Datenmodells mit ihrer Syntax und Semantik genau beschrieben und festgelegt werden. Dies kann in Form eines technologiespezifischen oder technologieneutralen Schemas (z. B. SQL DDL, dbt model contract, Protobuf, JSON Schema) erfolgen. Diese bilden für das Provider-Team die Fixpunkte, die immer eingehalten werden müssen und zeigen gleichzeitig aber auch Freiheitsgrade auf, wo Änderungen stattfinden können. Consumer können darauf vertrauen, dass die aufgeführten Felder stabil und in der festgelegten Qualität vorliegen.

In der Praxis handelt es sich bei einem Data Contract nicht um einen Vertrag im juristischen Sinne, bei der zwei Parteien einen Vertrag abschließen. Ein Data Contract ist eher als ein Angebot für die Nutzung von Daten zu verstehen.

Die bilaterale Vereinbarung kommt über einen Genehmigungsprozess zustande:

Ein Consumer-Team stellt einen Antrag, dass es auf Grundlage eines Data Contracts auf ein bestehendes Datenprodukt eines anderen Teams (Provider-Team) zugreifen möchte. Es gibt dabei den fachlichen Zweck (Purpose) und die notwendigen Qualitätsanforderungen (Service-Level Objectives) des Datenzugriffs an. Das Provider-Team entscheidet dann, ob es den Zugriff gewährt (z. B. wenn personenbezogene Daten enthalten sind), oder ob es mit dem Consumer-Team bilateral die Bedingungen weiter verhandeln möchte. Dabei können auch einschränkende Zugriffsmuster, Compliance- und Sicherheitsanforderungen festgelegt oder die innerbetriebliche Kostenverrechnung geregelt werden. Diese gegenseitige Vereinbarung zwischen einem Data Provider und einem Data Consumer nennt man Data Usage Agreement oder Subscription.

Ein Data Usage Agreement hat eine bestimmte Laufzeit und kann auch, mit einer vereinbarten Frist beidseitig gekündigt werden. Dadurch ist es für das Anbieter-Team insbesondere möglich, ein Datenprodukt weiterzuentwickeln und bestehende Consumer auf eine neuere Version des Datenprodukts bzw. des Output-Ports zu verweisen. Außerdem ist es so auch möglich, Datenprodukte, die sich betriebswirtschaftlich nicht lohnen, auslaufen zu lassen. Darüber hinaus empfiehlt es sich auch, regelmäßige Assessments durchzuführen, also beispielsweise einmal im Jahr gemeinsam über die aktiven Data Contracts zu sprechen und den Nutzen und die Weiterentwicklungspotenziale zu bewerten.

Data Contracts und Federated Governance

Mit Data Contracts können Datenzugriffe dezentral verwaltet werden. Sie sind somit ein wichtiges Werkzeug der Federated Governance.

Im Data Mesh bilden Datenprodukte die Knoten des Netzes, während Data Contracts bzw. Data Usage Agreements die Kanten (Verbindungen) darstellen.

Data Contracts verknüpfen Datenprodukte zu einem Data Mesh
Data Contracts verknüpfen Datenprodukte zu einem Data Mesh

Sie sind somit auch ein Mittel, um die Verwendung von Daten im Unternehmen domänenübergreifend nachvollziehbar und übersichtlich zu machen.

Automatisierung

Data Contracts lassen sich auch zur Automatisierung (Computational Governance) verwenden: Sobald ein Data Usage Agreement abgeschlossen wurde, kann eventbasiert in der Datenplattform automatisiert eine Berechtigung für das jeweilige Datenprodukt bzw. Output-Port eingerichtet werden. Bei Beendigung werden die Berechtigungen automatisch wieder gelöscht. Der Request-Flow sollte entsprechend der Data-Mesh-Prinzipien im Self-Service möglich sein. Dazu gehören Benachrichtigungen bei neuen Request-Anträgen, Reassessments und Kündigungen, sowie eine entsprechende Prozessunterstützung.

Data Contracts können außerdem verwendet werden, um automatisierte Tests in der CI/CD-Pipeline durchzuführen, die beispielsweise sicherstellen, dass die Schemas der Output-Ports den vereinbarten Data Contracts entsprechen. Ein ähnliches Konzept ist in der Software-Entwicklung als Consumer-Driven Contract Testing bekannt.

Tools

Data Contracts müssen effizient und nachvollziehbar verwaltet werden. Viele unserer Kunden nutzen dazu ein Wiki, was aber schnell an seine Grenzen stößt und kaum Automatisierung ermöglicht.

PayPal hat ihr Data Contract Template in Form einer ausführlichen YAML-Spezifikation veröffentlicht, die aber sehr auf ihre Datenplattform optimiert ist.

Wir haben eine generelle Spezifikation unter datacontract.com veröffentlicht.

Für die Verwaltung von Data Contracts haben wir den Data Mesh Manager entwickelt, um Data Usage Agreements, Datenprodukte und Global Policies über Self-Services zu verwalten und über APIs zu automatisieren.

Data Mesh Manager
Data Mesh Manager

Der Data Mesh Manager unterstützt neben einem Data Product Inventory zum Auffinden und Bewerten von Datenprodukten auch einen Request- und Accept-Flow für die Erstellung von Data Contracts, sowie eine Event-basierte API, um Berechtigungen automatisch in der Datenplattform anzulegen bzw. auch wieder zurückzunehmen. Durch die Visualisierung wird das Mesh übersichtlich und die Nutzung der Datenprodukte nachvollziehbar.

Mehr Informationen zum Data Mesh Manager und eine klickbare Demo finden sich auf der Webseite www.datamesh-manager.com.

Training

Data Mesh: Einführung

In diesem Training zeigen wir dir, was die vier Prinzipien von Data Mesh bedeuten.