Guida data engineering

Data Contracts: smettere di rompere i dashboard

Un rename di colonna non dovrebbe svegliare l on-call. Con un contract definisci cosa arriva, con quale qualita e come comunichi i cambi.

18 min di letturaPer data & platform engineersEsempi YAML inclusi

1. Perche i data contracts

Rendono i dati prevedibili: i consumer sanno cosa aspettarsi, i producer sanno chi viene impattato. La qualita viene gestita a monte.

Senza contract succede questo

Un rename rompe i dashboard, nessuno e avvisato, l on-call cerca ore la root cause. Un contract chiarisce regole e owner.

Pipeline piu stabili

I breaking changes vengono fermati prima della prod.

Ownership chiaro

Owner e canali di contatto definiti.

Incident piu rapidi

Schema, SLAs e runbook sono visibili.

2. Cosa deve stare in un data contract

Tienilo breve, versionato e leggibile dalla macchina (YAML/JSON). Queste sono le sezioni base.

Schema + semantica

  • • Campi, tipi, not null, range
  • • Definizione business per ogni campo
  • • Esempi di payload e casi di test

SLAs e qualita

  • • Freschezza (es. < 15 min), disponibilita
  • • Controlli (unicita, completezza, range attesi)
  • • Escalation, finestra incident, runbook

Owner & consumer

  • • Team responsabile, pager, Slack/Teams
  • • Consumer principali e dashboard
  • • Sensibilita dati e classi di accesso

Cambi & notifiche

  • • Versioning (SemVer), policy di deprecation
  • • Canale di comunicazione per breaking changes
  • • Piano di rollback e finestra di migrazione

3. Workflow: dalla bozza alla produzione

Parti con un team di dominio, poi automatizza i controlli. Obiettivo: bloccare i breaking changes nel CI, non alle 3 di notte.

1

Draft & review

Il producer scrive il contratto (YAML/JSON). Il consumer valida campi, semantica e SLAs.

2

CI e lint

Linter di schema, test dbt/Great Expectations nel PR. I breaking changes vengono bloccati.

3

Registry & rollout

La versione approvata finisce in registry/catalogo. Deploy in staging, poi prod.

4

Monitoring

Dashboard per freschezza, errori, qualita. Alert a owner + consumer.

4. Versioning & breaking changes

Usa SemVer: PATCH per bugfix, MINOR per aggiunte compatibili, MAJOR per breaking changes. Indica quanto dura il supporto alla versione precedente.

Cambi compatibili

  • • Nuovo campo con default
  • • Limiti o range aumentati
  • • Valori Enum aggiunti (comunicati)

Breaking changes

  • • Rimuovere o rinominare un campo
  • • Tipo piu restrittivo (es. string -> int)
  • • Cambiare la semantica senza annuncio
Annuncia i MAJOR in anticipo e mantieni vecchia + nuova versione in parallelo durante la migrazione.

5. Enforcement & monitoraggio

Shift-left

  • • Lint del contratto nel PR
  • • Schema registry che rifiuta schemi incompatibili
  • • Test dbt / Great Expectations nel CI

Runtime & osservabilita

  • • Alert su freschezza ed errori
  • • Dashboard di qualita e SLAs
  • • Runbook e reperibilita

6. Tooling & prossimi passi

Metti insieme definizione, registry e controlli di qualita. Parti leggero, poi automatizza.

Mattoncini utili

  • • Schema registry (OpenAPI/Avro/Protobuf)
  • • Test dbt, Great Expectations per i controlli
  • • Cataloghi/Lineage per l impact analysis

Con Datadef

  • • Documenta i contracts in DiagramAI
  • • Rendi visibili lineage e owner
  • • Gestisci versioni e SLAs per dataset

7. FAQ

Serve un tool dedicato?

No. Parti con YAML nel repo + CI. Poi collega una registry o un catalogo se serve.

Come gestire dati sensibili?

Aggiungi tag di sensibilita, classi di accesso e regole di mascheramento. Collegale alle policy della pipeline.

Chi possiede il contratto?

Il team produttore. I consumer fanno review, ma il producer resta responsabile di qualita e SLAs.