Passend zum Thema: Wir bieten das interaktive Training »Data Mesh« für Softwarearchitekt:innen und Datenexpert:innen an.

Ein Data Contract regelt den Zweck der Datennutzung, das Format und den Inhalt der bereitgestellten 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
Data Product Consumer Domain Team: Controlling
Responsible contact: Aubrey Harlow ([email protected])
Purpose Build a demand forecasting model
Schema https://example.com/checkout/webshop-orders/bigquery_orders_latest_npii_v1/schema.yaml
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:[email protected]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

Ein Consumer-Team stellt einen Antrag, dass es über einen bestimmten Output-Port 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. Ein Data Contract kommt also nur dann zustande, wenn sich Data Consumer und Data Provider einigen.

In einem Data Contract können die genutzten und benötigten Felder 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.

Ein Data Contract 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 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 Contract abgeschlossen wurde, kann eventbasiert in der Datenplattform automatisiert eine Berechtigung für das jeweilige Datenprodukt bzw. Output-Port eingerichtet werden. Bei Beendigung des Vertrags 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 ähnlich wie Data Product Spezifikationen in einem Git Repository verwaltet werden können und die Grundlage für die weitere Automatisierung bilden. Der Prozess für die Erstellung von Verwaltung von Data Contracts wird damit aber nicht unterstützt.

Da es sonst kein gutes Tool für die Verwaltung von Data Contracts gab, haben wir bei INNOQ den Data Mesh Manager entwickelt, mit dem Data Contracts, Datenprodukte und Global Policies über Self-Services verwaltet und über APIs automatisiert werden.

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.