tadata
← Retour à l'accueil

Data Contracts : Accords de Schéma entre Producteurs et Consommateurs

#data-engineering#data-governance#data-mesh#api

Le Problème que Résolvent les Data Contracts

Dans la plupart des organisations, les producteurs de données (équipes applicatives) et les consommateurs (équipes analytics, ML) n'ont aucun accord formel. L'équipe applicative change un nom de colonne, ajoute un champ ou modifie une valeur d'enum, et les pipelines en aval cassent silencieusement.

Les data contracts établissent un accord explicite entre producteurs et consommateurs sur la forme, la sémantique et la qualité des données.

Contenu d'un Data Contract

ÉlémentDescriptionExemple
SchémaNoms des champs, types, nullabilitéuser_id: string, not null
SémantiqueSens métier de chaque champ"user_id est l'identifiant unique global du système d'auth"
Garanties de qualitéSLOs pour fraîcheur, complétude, validité"Mis à jour sous 1h, < 0,01% de nulls"
PropriétéÉquipe responsable du contrat"Équipe: Plateforme Utilisateur"
VersioningComment le contrat évolue"Versioning sémantique"
Politiques d'accèsQui peut consommer, sous quelles conditions"Champs PII restreints"

Changements Cassants vs Non-Cassants

Type de ChangementCassantNon-Cassant
Supprimer un champOui--
Renommer un champOui--
Changer le type d'un champOui--
Ajouter un champ optionnel--Oui
Élargir un type (int32 vers int64)DépendGénéralement oui
Ajouter une valeur d'enumDépendSi les consommateurs gèrent les valeurs inconnues
Rendre non-nullable un champ nullableOui--

Les changements cassants nécessitent une coordination avec les consommateurs.

tadata
Conditions Remove Narrow Semantics Add Docs Column removed or renamed Y N N N N Type narrowed or nullability tightened – Y N N N Meaning, unit or grain changed – – Y N N Optional column added or type widened – – – Y N Docs or descriptions only – – – – Y Actions MAJOR bump, new version side by side X X X Deprecation window, notify consumers X X X MINOR bump X PATCH bump X Notes consumers failloudly values maytruncate orfail silent: sameschema, wrongnumbers safe forreaders no data impact
Conditions Remove Narrow Semantics Add Docs Column removed or renamed Y N N N N Type narrowed or nullability tightened – Y N N N Meaning, unit or grain changed – – Y N N Optional column added or type widened – – – Y N Docs or descriptions only – – – – Y Actions MAJOR bump, new version side by side X X X Deprecation window, notify consumers X X X MINOR bump X PATCH bump X Notes consumers failloudly values maytruncate orfail silent: sameschema, wrongnumbers safe forreaders no data impact
Ce changement est-il cassant ? Que faire

Extrait de la fiche « Data Contracts » · Demander la fiche complète

Registres de Schémas

Les registres de schémas appliquent la conformité des contrats à l'exécution :

RegistreFormats SupportésIntégration
Confluent Schema RegistryAvro, Protobuf, JSON SchemaKafka-natif
AWS Glue Schema RegistryAvro, JSON SchemaÉcosystème AWS
Apicurio RegistryAvro, Protobuf, JSON Schema, OpenAPIOpen source
BufProtobufWorkflows gRPC/Protobuf
tadata
ModeNew schema can readSafe changeDeploy first
BACKWARDdata written with the previous schemadelete a field, add an optional field with a defaultconsumers
FORWARDold schema can read new dataadd a field, delete an optional fieldproducers
FULLboth directionsadd or delete optional fields with defaults onlyeither
*_TRANSITIVEsame, against all earlier versionssame, checked against every version-
NONEno checkanything (breaks consumers silently)-
Modes de compatibilité d'un registre de schémas (Confluent Schema Registry et compatibles ; BACKWARD par défaut)

Extrait de la fiche « Event Streams and Kafka » · Demander la fiche complète

Test de Contrats

Le test de contrats vérifie que les données sont conformes. Cela peut se faire :

  • À l'écriture : le registre de schémas rejette les messages non conformes
  • En CI/CD : les changements de schéma validés avant le merge
  • À l'exécution du pipeline : dbt tests ou Great Expectations valident les specs
  • En continu : les outils d'observabilité surveillent la conformité aux SLOs
tadata
Producer dev CI Contract registry ML team 1. PR: rename amount ->amount_eur 2. fetch orders v2.1.0 3. contract + consumers 4. diff: column removed =breaking 5. fail: needs v3.0.0 6. publish v3.0.0, keep v2 for 60 days 7. deprecation notice
Producer dev CI Contract registry ML team 1. PR: rename amount ->amount_eur 2. fetch orders v2.1.0 3. contract + consumers 4. diff: column removed =breaking 5. fail: needs v3.0.0 6. publish v3.0.0, keep v2 for 60 days 7. deprecation notice
Shift left : un changement cassant est détecté dans la pull request du producteur, pas dans les métriques du modèle

Extrait de la fiche « Data Contracts » · Demander la fiche complète

Implications Organisationnelles

Les data contracts modifient la dynamique de pouvoir :

  • Les producteurs ne peuvent plus faire de changements cassants silencieux
  • Les consommateurs obtiennent de la prévisibilité
  • Un processus de négociation de contrat est nécessaire
  • Les politiques de versioning et de dépréciation doivent être définies

C'est un défi de gouvernance, pas seulement technique.

Quand Introduire les Data Contracts

  • Vous avez des cassures de pipeline récurrentes dues aux changements de schéma amont
  • Plusieurs équipes consomment les mêmes données avec des attentes différentes
  • Vous adoptez le Data Mesh et avez besoin de garanties d'interopérabilité
  • Les exigences réglementaires demandent du lignage et de l'auditabilité

Ressources

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.