Entropy Data

Entropy Data

Consumer-Driven Contracts für Daten

Was die Datenwelt von der Testpyramide lernen muss – und umgekehrt

Michael Kutz    OOP 2027    Februar 2027

OOP 2027 · 02.–05.02.2027

Montag, 9:00 Uhr

Entropy Data

● ● ●  dashboard.beispiel-shop.de/umsatz

Umsatz-Dashboard

● Zuletzt aktualisiert: vor 2 Minuten

Umsatz heute

48.230 € ▲ 12 %

Bestellungen

1.284 ▲ 8 %

Ø Warenkorb

37,55 € ▲ 3 %

OOP 2027 · 02.–05.02.2027

Drei Wochen später

Entropy Data

● ● ●  dashboard.beispiel-shop.de/umsatz

Umsatz-Dashboard

● Zuletzt aktualisiert: vor 21 Tagen

Umsatz heute

— keine Daten

Bestellungen

— keine Daten

Ø Warenkorb

— keine Daten

⚠ Query failed

column "order_total" does not exist

OOP 2027 · 02.–05.02.2027

Was ist passiert?

Entropy Data

Team Checkout

besitzt Service & Datenbank

order_total → total_amount

✅ Eigene Tests grün · deployed

Daten-Pipeline

liest die Tabelle – nachts um 3

⚠ Query scheitert – ohne Alarm

📊 Dashboard – leer

🤖 ML-Modell – veraltet

👥 Nachbarteam – blockiert

Tag 0 – deployed, alles grün

Tag 1–20 – niemand merkt etwas

Tag 21 – der Fachbereich ruft an

⚠ Kein Vertrag · kein Test · kein Alarm

OOP 2027 · 02.–05.02.2027

Hi, ich bin Micha

Entropy Data
🚀Staff Engineer @ Entropy Data
✅15+ Jahre Software-Qualität & Testing
🔧Open Source: ApproveJ, Stubit, Shakespeare
🎤Sprecher auf OOP, Agile Testing Days & Co.
🐛Bugs: fixen vermeiden mit und ohne KI

OOP 2027 · 02.–05.02.2027

Testdaten ≠ Daten testen

Entropy Data

Testdaten

Daten für Tests

  • Generieren, anonymisieren, verwalten
  • Eigene Disziplin mit ISTQB/GTB-Lehrplan
  • Sichert die Qualität der Software

→ Heute nicht unser Thema

≠

Daten testen

Tests für Daten

  • Schema, Semantik, Frische, Vollständigkeit
  • Die Daten selbst sind das Produkt
  • Sichert die Qualität der Daten

→ Darum geht es heute

OOP 2027 · 02.–05.02.2027

Was ist eigentlich ein Datenprodukt?

Entropy Data

Service mit API

Zweck

Geschäftsprozesse ausführen

Schnittstelle

Schmale API – definierte Operationen

Typischer Zugriff

Ein Datensatz, aktueller Zustand

Die Tabelle ist …

Implementierungsdetail – gekapselt

Konsumenten

Andere Services & Frontends

vs.

Datenprodukt

Zweck

Fragen beantworten – auch die von morgen

Schnittstelle

Query-Interface – SQL, Topics, Files

Typischer Zugriff

Millionen Zeilen, Historie, Joins

Die Tabelle ist …

Die Schnittstelle selbst – bewusst veröffentlicht

Konsumenten

Analysten, Dashboards, ML, KI-Agenten

Das Schema ist die API des Datenprodukts – und jede Schnittstelle braucht einen Vertrag.

OOP 2027 · 02.–05.02.2027

Risk Storming: eine Karte wird zum Deck

Entropy Data

OOP 2027 · 02.–05.02.2027

Risk Storming: eine Karte wird zum Deck

Entropy Data

OOP 2027 · 02.–05.02.2027

Risk Storming: eine Karte wird zum Deck

Entropy Data

Risk Storming: ein Workshop-Format aus dem agilen Testen – das Team diskutiert am Kartendeck (TestSphere), welche Qualitätsaspekte für sein Produkt die riskantesten sind. Eine von 20 Qualitäts-Karten heißt „Daten“:

✓

Leistungs­fähigkeit

✓

Schutz­maßnahmen

✓

Benutzer­freundlichkeit

◆

Daten

Für Datenprodukte fächert sich „Daten“ auf in:

01

Schema-Stabilität

Spalten & Typen – bricht wie eine API

◆

02

Aktualität

Wann kam die letzte Lieferung?

◆

03

Vollständigkeit

Alle Zeilen da? Wie viel null ist okay?

◆

04

Validität

Wertebereiche, Formate, Plausibilität

◆

05

Konsistenz

Passen die Zahlen zusammen – auch produktübergreifend?

◆

06

Semantik

Netto oder brutto? Bedeutung ist Teil der Qualität

◆

Genau diese Karten schreibt der Data Contract fest – maschinenlesbar und testbar.

OOP 2027 · 02.–05.02.2027

Rückblende: zwei Pipelines, ein Vertrag

Entropy Data

Zwischen Services lösen wir das so: Der Konsument schreibt seine Erwartungen als Vertrag auf – und beide Pipelines testen dagegen. Schritt für Schritt:

Consumer-Pipeline · Team Dashboard

Build & Unit-Tests

wie immer

Contract-Test

gegen einen Mock des Providers

Vertrag publizieren

an den Pact Broker

can-i-deploy ✓

dann Deploy

Pact Broker

verwahrt alle Verträge

Provider-Pipeline · Team Checkout

Build & Unit-Tests

wie immer

Verträge verifizieren

gegen alle Konsumenten-Verträge

Ergebnis melden

zurück an den Broker

can-i-deploy ✓

dann Deploy

Der Vertrag verbindet beide Pipelines – keiner deployt, was den anderen bricht.

OOP 2027 · 02.–05.02.2027

Consumer-Driven Contracts für Daten

Entropy Data

Fast dieselben Pipelines – mit einem Unterschied: Der Contract entsteht nicht in der Pipeline, sondern vorab und gemeinsam. Die Pipelines testen nur noch dagegen.

Consumer-Pipeline · Dashboard-Team

Build & Tests

wie immer

datacontract test ✓

prüft die gelieferten Daten

Ergebnis melden

zurück an die Registry

Deploy ✓

nur bei grünem Contract

Vorab · gemeinsam

Contract vereinbaren

Producer & Consumer, contract-first

Contract-Registry

verwahrt alle Contracts

Producer-Pipeline · Datenprodukt-Team

Build & Transform

z. B. dbt run – wie immer

datacontract test ✓

Schema & Qualität aller Contracts

Ergebnis melden

zurück an die Registry

Deploy ✓

nur bei grünen Contracts

Bricht das Schema, stoppt die Pipeline – nicht das Dashboard.

OOP 2027 · 02.–05.02.2027

Ein Datenvertrag hat vier Felder

Entropy Data

Ein Vertrag regelt mehr als die Erwartungen der Konsumenten – beide Seiten versprechen, beide Seiten erwarten:

Der Produzent …

Der Konsument …

… verspricht

… erwartet

SLAs

Frische, Verfügbarkeit, Qualitätsregeln – zugesichert und testbar

ODCS: slaProperties

Sorgsamer Umgang

Klassifizierte Daten schützen, nicht weitergeben, im eigenen Output anonymisieren

heute meist nur Policy-Prosa

Terms of Use

Nutzungszweck, Grenzen und Pflichten der Verwendung

ODCS: terms

Consumer-Driven Contract

Der Ausschnitt, den der Konsument wirklich braucht – Spalten, Typen, Frische

Idee: ODCS am Input Port

Ein Format trägt alle vier Felder: ODCS – an Output- wie an Input-Ports.

OOP 2027 · 02.–05.02.2027

Zweimal prüfen: Prävention & Reaktion

Entropy Data

Ein Deployment ist nicht der einzige Weg, einen Contract zu brechen – Daten schaffen das auch ganz ohne. Deshalb prüft der Contract an zwei Stellen:

Prävention

in der Pipeline · vor dem Deployment

Fängt die Known Knowns: Schema-Brüche, verletzte Qualitätsregeln – alles, was eine Änderung kaputt macht.

Unser order_total-Rename stirbt hier – im Code-Review, nicht im Dashboard.

CI/CD: datacontract test ✓

Reaktion

im Betrieb · kontinuierlich

Fängt die Known Unknowns: die kaputte Nachtlieferung, ausbleibende Daten, schleichenden Drift – ganz ohne Deployment.

Der Contract wird zum Monitor: SLAs laufend prüfen, verletzte Datensätze ausschleusen, Alarm an Producer und Konsumenten.

⚠ freshness: 26h > 24h → alert

Ein Contract, zwei Prüfpunkte: Die Pipeline schützt vor Änderungen, der Monitor vor der Wirklichkeit.

OOP 2027 · 02.–05.02.2027

Entropy Data

So weit trägt die Analogie.
Jetzt wird es ehrlich.

Drei Dinge funktionieren bei Daten grundlegend anders.

OOP 2027 · 02.–05.02.2027

Wo die Analogie bricht

Entropy Data

01

Kein Aufrufer, den du kontrollierst

Ein Service kennt seine Aufrufer – bei Pact meldet sich jeder Consumer mit seinem Vertrag an.

Daten werden abgefragt: Jeder mit Leserechten kann konsumieren – und niemand merkt es.

→ Konsumenten sichtbar machen ist Teil des Problems: Registry statt stiller SELECTs.

02

Kein Rollback für die Vergangenheit

Ein kaputtes Deployment rollst du zurück – der nächste Request ist wieder korrekt.

Drei Wochen falsche Daten stecken in jedem Downstream-System, Report und trainierten Modell.

→ Prävention schlägt Heilung: Der Test vor dem Deployment ist alles.

03

„Korrekt“ ist Semantik, nicht Typ

Bei einer API prüft der Compiler den Typ – total: Number ist entweder da oder nicht.

total = 47.11 ist ein valider Float – aber netto oder brutto? Mit oder ohne Storno?

→ Bedeutung gehört in den Contract: Definitionen, Semantik, Geschäftsbegriffe.

OOP 2027 · 02.–05.02.2027

Ausblick: Der nächste Konsument ist ein Agent

Entropy Data

Schon heute fragen LLMs und Agenten eure Datenprodukte ab – per MCP, direkt in SQL.

Ein Mensch stutzt, wenn die Zahlen seltsam aussehen, und fragt im Chat nach.
Ein Agent stutzt nicht. Er nimmt, was da ist – und antwortet selbstbewusst.

Der Data Contract wird damit zur einzigen Verteidigungslinie: Er sagt der Maschine, was die Daten bedeuten, wie frisch sie sind – und ob sie ihnen trauen darf.

🤖  „Wie lief der Umsatz letzte Woche?“

Ohne Contract

„48.230 €.“ – aus einer Tabelle, die seit 21 Tagen steht. Kein Zweifel, keine Warnung.

Mit Contract

„Achtung: Die Daten verletzen die zugesicherte Frische von 24 h – letzter Stand vor 21 Tagen.“

Der maschinenlesbare Vertrag über Bedeutung und Qualität wird vom Nice-to-have zur Voraussetzung.

OOP 2027 · 02.–05.02.2027

Montag, 9:00 Uhr – mit Contract

Entropy Data

Drei Wochen früher, in der Pipeline von Team Checkout

✗ datacontract test – breaking change: order_total

Der Rename fliegt auf, bevor er deployed wird. Team Checkout sieht in der Registry, wen er getroffen hätte – und spricht vorher mit den Konsumenten.

Und auf dem Dashboard des Fachbereichs

48.230 € ▲ 12 %

● Zuletzt aktualisiert: vor 2 Minuten

Fangt am Montag an – mit einem einzigen Datenprodukt:

1

Schreibt den Vertrag auf, den es implizit schon hat – als ODCS-YAML

2

datacontract test in die Pipeline – Producer wie Consumer

3

Macht eure Konsumenten sichtbar – ein Contract, ein Ort, alle wissen Bescheid

OOP 2027 · 02.–05.02.2027

Inhalts-Layout: drei Spalten

Entropy Data

Spaltentitel eins

Kurze Einordnung des Themas in ein bis zwei Sätzen.

  • Erster Punkt mit einer Kernaussage
  • Zweiter Punkt, gern etwas länger über zwei Zeilen
  • Dritter Punkt

Spaltentitel zwei

Kurze Einordnung des Themas in ein bis zwei Sätzen.

  • Erster Punkt mit einer Kernaussage
  • Zweiter Punkt
  • Dritter Punkt

Spaltentitel drei

Kurze Einordnung des Themas in ein bis zwei Sätzen.

  • Erster Punkt mit einer Kernaussage
  • Zweiter Punkt
  • Dritter Punkt

OOP 2027 · 02.–05.02.2027

Statement-Layout

Entropy Data

Warum testen wir Daten nicht wie Code?

OOP 2027 · 02.–05.02.2027

Vergleich: zwei Karten

Entropy Data

Software-Welt

  • Consumer-Driven Contracts mit Pact
  • Vertrag lebt am Port, Tests in der Pipeline
  • Bruch wird vor dem Deployment erkannt

Daten-Welt

  • Data Contracts mit ODCS
  • Contract-Tests mit der Data Contract CLI
  • Schema-Bruch wird vor dem Deployment erkannt
Entropy Data

DEMO

OOP 2027 · 02.–05.02.2027

Danke! Fragen?

Entropy Data

Ihr wollt mehr wissen?

Schreibt mir

michael.kutz@entropy-data.com

Folien & mehr von mir

michael-kutz.de

Probiert Data Contracts aus

Auf www.entropy-data.com die 1-Click-Demo starten