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

Consumer-Driven Contracts für Daten

By Michael Kutz

Consumer-Driven Contracts für Daten

Viele Teams würden keinen Service ohne Tests ausliefern – doch dieselben Teams liefern täglich Daten an Dashboards, ML-Modelle und andere Teams: ohne Vertrag, ohne Test, ohne Garantie. Nach 15 Jahren in der Software-Qualität bin ich in die Datenwelt gewechselt und habe festgestellt: Sie steht dort, wo Testing vor 15 Jahren stand. Der Vortrag schlägt die Brücke – wie sich Consumer-Driven Contracts, Contract-Tests und Ports-and-Adapters-Denken auf Datenprodukte übertragen lassen, mit Data Contracts und ODCS. Und wo die Analogie bewusst bricht. Zielpublikum: Jeder, der mit Daten arbeitet oder von ihnen abhängtKeywords: Data Engineering, Contract Testing, ODCS Voraussetzungen: keine Level: Introductory Extended Abstract: Wir würden keinen Service ohne Tests in Produktion bringen. Wir kennen Consumer-Driven Contracts, wir mocken Ports und Adapter, wir versionieren APIs sorgfältig. Doch dieselben Teams liefern täglich Daten an nachgelagerte Konsumenten aus – an Dashboards, ML-Modelle, oder andere Teams – ganz ohne Vertrag, ohne Test, ohne Garantie. Bricht ein Schema, merkt es niemand, bis das Dashboard leer bleibt. Ich habe 15 Jahre lang an der Qualität von Software gearbeitet und bin dann in die Datenwelt gewechselt. Die ernüchternde Erkenntnis: Die Datenseite steht ungefähr dort, wo Software-Testing vor 15 Jahren stand. Die gute Nachricht: Wir müssen das Rad nicht neu erfinden.

  • 119