Conférence · 2026

Data-first or Contract-first?

Jochen Christ (CTO & Co-Founder, Entropy Data) · 11 juin 2026

Quand vous construisez un produit de données, par où commencez-vous ? Jochen parcourt deux itinéraires qui mènent à la même destination. La voie traditionnelle, data-first, extrait les données de production, les explore et livre ce qui s'y trouve. La voie contract-first commence par une conversation, écrit le contrat avant même que les données existent et laisse un agent de code construire le produit à partir de là. En chemin : les Data Contracts, l'Open Data Contract Standard, la Data Contract CLI et la construction en direct du fameux produit shelf warmers, en une dizaine de minutes.

Diapositive de titre : Data-first or Contract-first ? par Jochen Christ, Entropy Data

Notes annotées des diapositives de la conférence de Jochen Christ. Le texte ci-dessous est un résumé édité.

Jochen Christ : co-fondateur d'Entropy Data, auteur de datamesh-architecture.com, mainteneur de la Data Contract CLI, membre du TSC Bitol (ODCS)

L'intervenant

Jochen Christ est un ingénieur logiciel passionné de data qui, selon ses propres mots, construit des outils pour faire travailler ensemble les données, les gens et l'IA. Il est co-fondateur et CTO d'Entropy Data, auteur du site Data Mesh Architecture, mainteneur de la Data Contract CLI et membre du TSC du projet Bitol de la Linux Foundation, qui héberge l'Open Data Contract Standard.

Entropy Data est une marketplace de produits de données bâtie sur les Data Contracts et la sémantique, avec un objectif : rendre des données de qualité accessibles aussi bien aux humains qu'aux agents.

La question : où commence le parcours de votre produit de données ? Voie A, partir des données ; voie B, partir du contrat

Où commence le parcours ?

Une seule question structure toute la conférence : quand vous vous lancez dans la construction d'un produit de données, quel est votre point de départ ?

  • Voie A, la traditionnelle : partir des données. Vous extrayez les données de production, vous les explorez, vous construisez un produit, puis vous définissez le contrat correspondant.
  • Voie B, l'alternative : partir du contrat. Vous vous mettez d'abord d'accord sur l'interface avec les Data Consumers, vous spécifiez le contrat, puis vous le construisez.

Le second itinéraire est-il un détour, un raccourci, ou simplement un autre chemin vers le même objectif ? C'est ce à quoi la conférence veut répondre.

Voie A : data-first

« Partez des données que vous avez déjà et voyez ce que vous pouvez en tirer. »

La voie data-first : extraire, explorer, construire
C'est un chemin naturel : créativité, rapidité, ancrage dans le réel

Utiliser les données que vous avez

C'est ainsi que les Data Engineers ont toujours travaillé. Vous extrayez les données de production vers votre plateforme data, vous les explorez pour découvrir des cas d'usage et des tendances, puis vous construisez un jeu de données, un tableau de bord ou un rapport à livrer. C'est le rythme naturel du data engineering et de l'analytique.

Cette approche a de vraies qualités : la créativité (vous repérez des tendances et des erreurs que vous n'auriez jamais pensé à demander), la rapidité (une requête SQL vous donne un prototype en quelques minutes) et un ancrage dans le réel, puisque vous travaillez sur les données qui existent vraiment.

L'exploration seule ne fait pas un produit : propriété non définie, absence de documentation, pas encore prêt pour la production, jeux de données techniques massifs
Mettez vos données sous contrat : extraire, explorer, construire et maintenant tester

Mais l'exploration seule ne fait pas un produit

Le hic avec le data-first, c'est que ce que vous obtenez n'est pas encore un produit. Quatre problèmes reviennent sans cesse :

  • Propriété non définie, le problème central du Data Mesh : qui possède ce jeu de données sur la durée ?
  • Aucune documentation : une colonne nommée TX021 contient un horodatage, mais est-ce la date de commande, l'heure du paiement, ou tout autre chose ?
  • Pas encore prêt pour la production : aucune règle de qualité, aucun contrôle, aucune attente exprimée.
  • Jeux de données techniques massifs : copier la production vous donne des tables larges et brutes dans lesquelles personne ne sait naviguer.

Le premier remède, c'est de mettre les données sous contrat, ce qui ajoute une quatrième étape au parcours : tester.

Voici un Data Contract : un document YAML qui décrit la propriété, les conditions d'utilisation, le schéma, la sémantique, la qualité et les SLA
Les Data Contracts sont comme une API, mais pour les données : OpenAPI pour les API, AsyncAPI pour les messages, ODCS pour les données

Qu'est-ce qu'un Data Contract ?

Un Data Contract est un document YAML qui consigne qui possède les données, leurs conditions d'utilisation, une description, ainsi que leur schéma, leur sémantique, leur qualité et leurs SLA.

Voyez-le comme une spécification d'API, mais pour les données. Les API REST ont OpenAPI, les messages et les topics Kafka ont AsyncAPI, et les jeux de données partagés ont l'Open Data Contract Standard. Même idée, interface différente.

L'Open Data Contract Standard, gouverné par le projet Bitol de la Linux Foundation
À l'intérieur d'un contrat ODCS : les fondamentaux comme le nom, la version et le statut
À l'intérieur d'un contrat ODCS : la qualité as code, par exemple un nombre de valeurs invalides qui doit être nul, ou des contrôles SQL libres
À l'intérieur d'un contrat ODCS : conditions d'utilisation, SLA et informations sur les serveurs

Le standard : ODCS

Le standard du marché pour les Data Contracts, c'est ODCS, l'Open Data Contract Standard, gouverné par le projet Bitol de la Linux Foundation. Un seul fichier YAML contient tout ce dont un consommateur a besoin :

  • Les fondamentaux : nom, version, statut.
  • Le schéma : tables et colonnes, avec exemples, classifications et tags, donc bien plus qu'un simple schéma SQL.
  • La qualité as code : des règles prédéfinies comme « le nombre de valeurs invalides doit être nul », ou des contrôles SQL libres qui s'exécutent réellement.
  • L'équipe : le propriétaire du produit de données et ses coordonnées.
  • Les conditions d'utilisation : la finalité prévue et les limites, par exemple « ces données de commande ne peuvent pas servir au marketing ».
  • Les SLA et les serveurs : les garanties, et l'endroit où vivent réellement les données.

Les conditions d'utilisation sont sans doute la partie la plus importante : elles disent à quoi sert le produit et à quoi il ne doit jamais servir.

La Data Contract CLI transforme un contrat en test : elle se connecte au produit de données et exécute le SQL généré
Tests dérivés du schéma : présence des champs, type et contrôles d'obligation
Résultats des tests de Data Contract dans GitHub Actions : 27 réussis, 1 en échec, avec une incohérence de type signalée

Transformer le contrat en test

Un contrat n'a de valeur que si vous pouvez le faire respecter. La Data Contract CLI open source lit le YAML, se connecte à votre produit de données sur Snowflake, Databricks, BigQuery, Postgres ou ailleurs, et convertit le schéma, les règles de qualité et les SLA en requêtes SQL qu'elle exécute sur les vraies données.

Lancez datacontract test et vous obtenez un code de sortie : zéro, tout va bien ; autre chose, quelque chose a cassé. Intégrez-le à un pipeline de déploiement, à un DAG Airflow ou à un job Databricks pour vérifier, à chaque changement, que le produit en production honore encore toutes les garanties du YAML.

Dans l'exécution CI de la diapositive, 27 contrôles passent et un échoue : il attrape une incohérence de type, une colonne que le contrat attend en nombre alors qu'elle contient du texte.

Ce n'est pas fini : publier s'ajoute comme cinquième étape après extraire, explorer, construire et tester
Le YAML publié dans une marketplace de produits de données, rendu lisible et découvrable
Un agent qui lit des produits de données depuis la marketplace en respectant les conditions d'utilisation

Ce n'est pas fini : publiez-le

Le Data Mesh consiste à partager des produits de données par-delà les frontières des équipes : le parcours gagne donc une cinquième étape, publier. Le même YAML peut être poussé dans un outil de métadonnées, un catalogue ou une marketplace comme Entropy Data, ce qui rend le produit découvrable, lisible et abordable, au lieu d'un simple fichier YAML brut.

Et comme ce sont des métadonnées sur un standard ouvert, les agents peuvent les lire aussi. Ils peuvent chercher dans la marketplace, puis dialoguer avec les données ou les interroger de façon autonome, tout en respectant les conditions d'utilisation définies dans le contrat, la finalité et les limites : l'accès reste ainsi sécurisé.

Le contrat résout trois des quatre problèmes : un propriétaire nommé, une interface convenue, des tests de qualité exécutables, mais les jeux de données techniques massifs restent
Données de production typiques : une multitude de colonnes qui se ressemblent, sans que personne sache lesquelles comptent pour le métier

Trois problèmes sur quatre, réglés

Mettre les données sous contrat règle trois des quatre problèmes : vous avez désormais un propriétaire nommé, une interface convenue et documentée, et des tests de qualité exécutables.

Ce que cela ne règle pas, c'est le jeu de données technique massif. Le data-first a tendance à publier tout ce qui sort du système source : vous vous retrouvez toujours avec de larges tables de colonnes qui se ressemblent, sans que personne sache lesquelles intéressent vraiment le métier. Pour résoudre ça, il faut changer de point de départ.

Voie B : contract-first

« Définissez d'abord les besoins. Ensuite, construisez le produit de données pour vos consommateurs. »

La voie contract-first : comprendre, spécifier, construire, tester, en commençant par une conversation
Les bénéfices du contract-first : collaboration et empathie, langage métier, attentes réelles, produit de données à la bonne taille

Commencer par une conversation

Le contract-first ne part pas des données. Il part d'une conversation. Avant même de regarder une seule colonne, vous rencontrez vos Data Consumers et vous comprenez ce qu'ils veulent vraiment faire : un modèle d'IA, un tableau de bord pour le CFO, un cas d'usage opérationnel. Ensuite, vous spécifiez ces besoins sous forme de contrat, vous construisez le produit et vous le testez.

Écrire le contrat en amont vous donne aussi la meilleure documentation que vous aurez jamais, parce que vous avez encore l'énergie de l'écrire. Personne n'écrit de bonne doc une fois le produit livré.

Les bénéfices s'accumulent : la collaboration et l'empathie (vous savez que quelqu'un en a réellement besoin), le langage métier (vous employez les termes du consommateur, pas des noms de colonnes bruts), des attentes réelles (des règles de qualité qui veulent dire quelque chose) et un produit de données à la bonne taille, avec uniquement les champs vraiment nécessaires, ce qui règle précisément le problème des jeux de données trop larges.

Piloter le développement d'un produit de données par le cas d'usage métier : un atelier sur site avec les parties prenantes
Un data product canvas, rempli en partant de la droite pour laisser le cas d'usage métier piloter l'interface
Cas d'usage métier : Maxi, category manager, veut un inventaire des shelf warmers ; John, Product Owner côté ventes, demande ce qui compte comme une vente

Se laisser piloter par le cas d'usage métier

Vous commencez par un atelier, idéalement sur site, avec les parties prenantes et le futur Data Product Owner. Un data product canvas le structure : vous le remplissez en partant de la droite, du cas d'usage métier, et vous laissez celui-ci piloter l'interface et les sources dont vous aurez besoin.

L'exemple fil rouge : Maxi, category manager dans une entreprise de e-commerce, veut l'inventaire des produits qui ne se sont pas vendus depuis six mois, ces fameux shelf warmers qui prennent la poussière en entrepôt. « Shelf warmer » est le terme métier, et c'est bien là tout l'intérêt.

John, Product Owner dans l'équipe ventes, pousse les questions qui affûtent le contrat : qu'est-ce qui compte comme une vente ? Les retours comptent-ils ? Et les mises au rebut ou les vols ? Ces réponses deviennent la sémantique du contrat.

Le modèle Excel ODCS pour recueillir les exigences du contrat avec les utilisateurs métier
Le Data Contract Editor open source avec ses vues diagramme et entité-relation

Le recueillir là où le métier sait le faire

Le YAML brut n'est pas accessible aux utilisateurs métier. Après avoir vu trois clients saisir leurs contrats dans Excel de leur propre initiative, l'équipe a publié un modèle Excel ODCS officiel, accompagné d'un convertisseur CLI entre Excel et YAML dans les deux sens. Les Product Owners remplissent la feuille, la font circuler et la convertissent quand elle leur convient.

Pour les Engineers, le Data Contract Editor open source transforme un contrat en expérience visuelle, avec des vues diagramme et entité-relation. Il est désormais intégré à la CLI : datacontract edit <name> ouvre l'éditeur directement.

Le contrat shelf warmers : une petite table avec le SKU, le nom de l'article, l'horodatage de la dernière vente et l'horodatage de traitement

Un contrat à la bonne taille

Une fois le besoin compris, il est minuscule. Maxi n'a besoin ni de toute la table des commandes ni de toute la table des stocks. Il lui faut une seule table, shelf_warmers, avec quatre colonnes : un SKU (le numéro d'article), un nom d'article, un horodatage de dernière vente et, par convention interne, un horodatage de traitement.

Le vrai travail ici, c'est la sémantique : expliciter ce que « dernière vente » veut dire exactement. La description précise qu'il s'agit de l'horodatage du dernier mouvement de stock négatif, que cela peut inclure des événements qui ne sont pas des ventes comme les mises au rebut, et que la valeur est nulle si l'article n'a jamais enregistré de vente. Cette phrase fait toute la différence entre un produit utilisable et un jeu de devinettes.

Contract-first : construire le produit de données en implémentant le contrat
Laissez coder les agents de code : le YAML du contrat plus des skills qui décrivent comment construire des produits de données dans votre organisation

Le construire avec un agent de code

Une fois le contrat spécifié, vous construisez, et aujourd'hui cela veut dire avec un agent de code (Claude Code, Codex, Copilot CLI). L'agent a besoin de deux entrées. La première, c'est le YAML du contrat : quoi construire. La seconde, c'est comment votre organisation construit ses produits de données, parce que l'agent ignore si vous utilisez Snowflake, dbt ou vos propres conventions de nommage.

Ce « comment » est fourni sous forme de skills : des instructions pour l'agent de code, conservées dans un dépôt git.

Le template dbt Data Product Builder : des skills comme bootstrap et implement, avec des modèles de projets dbt

Les skills : apprendre votre stack à l'agent

Le dbt Data Product Builder open source est un dépôt modèle que vous clonez et adaptez à vos conventions. Chaque skill n'est qu'un document markdown listant les étapes à suivre : une skill bootstrap pour un produit tout neuf, une skill implement pour les évolutions, plus des skills pour les métadonnées et les tests.

Une skill peut par exemple définir comment un champ ODCS se traduit en modèle dbt, ou embarquer un template décrivant à quoi ressemble un projet dbt chez vous, que l'agent respectera ensuite. Vous l'installez via la marketplace de plugins de votre agent et vous la reliez à vos métadonnées et à votre projet dbt.

« Tester ne coûte pas cher, vous pouvez donc ajouter de plus en plus de skills, et les skills peuvent se référencer entre elles. »

Un seul prompt, environ onze minutes…

« Implémente le produit de données correspondant au Data Contract que je viens de créer. »

Claude Code démarré dans le projet dp_shelf_warmers_v1 avec un seul prompt pour implémenter le produit de données à partir du contrat

La construction

Toute l'instruction tient en une ligne : implémente le produit de données correspondant au contrat. L'agent lit le contrat, reconnaît qu'il s'agit d'un nouveau produit, charge la skill bootstrap avec son template dbt et se met au travail en mode YOLO, en mettant en place les modèles dbt et le câblage OpenLineage que prescrivent les skills. Montré dans la conférence sous forme d'enregistrement d'écran ; la construction en direct prend environ onze minutes.

Point crucial : il utilise aussi la marketplace pour trouver ses sources en amont. Pour satisfaire le contrat, il cherche les événements de mise à jour de stock et les données de référence des articles, trouve les produits de données existants correspondants et demande les accès dans le code généré.

Le projet dbt généré : shelf_warmers.sql avec ses Input Ports, ses Output Ports et la transformation qui fait les jointures
La table SHELF_WARMERS obtenue et alimentée dans Snowflake
Le produit de données Shelf Warmers publié dans la marketplace en mode privé, avec son lineage et son contrôle de conformité

Le résultat

Environ onze minutes plus tard, le produit est construit : un projet dbt complet avec ses Input Ports et Output Ports, la table SHELF_WARMERS alimentée dans Snowflake, et le produit de données publié dans la marketplace en mode privé, prêt à être rendu public par son propriétaire.

Les tests de contrat, eux aussi fournis par les skills, s'exécutent comme une étape de votre CI ou de votre pipeline de données. Quand le contrat est au vert, vous livrez. L'implémentation est faite par un agent de code, mais les besoins, la sémantique et les garanties restent les vôtres.

La voie contract-first au complet : comprendre, spécifier, construire, tester, livrer quand les tests de contrat sont au vert

Livrer quand les tests sont au vert

Le contract-first se déroule ainsi : comprendre, spécifier, construire, tester. Vous investissez du temps en amont pour comprendre et spécifier les besoins sous forme de contrat, l'agent de code l'implémente, les tests de contrat tournent dans votre pipeline, et quand ils sont au vert, vous livrez.

Il n'y a pas de mauvais chemin : c'est le contrat qui rend les données fiables, parlez avec vos parties prenantes data, les agents de code implémentent ce que vous spécifiez

Il n'y a pas de mauvais chemin

Les deux itinéraires arrivent à la même destination : un produit en production qui délivre de la valeur. Alors, quelle est la réponse ? Trois enseignements :

  • C'est le contrat qui rend les données fiables. Il consigne les besoins et la sémantique et automatise les tests : dès que quelque chose romprait les attentes d'un consommateur, ça passe au rouge et vous êtes averti.
  • Parlez avec vos parties prenantes data. Il n'y a pas de raccourci. Si vous ne comprenez pas la valeur métier d'un produit de données, il ne vaut probablement pas la peine d'être construit. Prenez le product ownership au sérieux.
  • Les agents de code implémentent ce que vous spécifiez. Meilleures sont vos spécifications et vos descriptions, mieux l'agent construit, et mieux il sait signaler ce qui manque ou ce qui cloche.

« Ce sont les Data Contracts qui font la différence. Ce sont eux qui rendent votre produit de données digne de confiance. »

Questions du public

Une sélection de questions du public après la conférence.

Q : Si l'agent génère les modèles dbt, qui les maintient ensuite ? Est-ce que je modifie le code dbt, ou est-ce que je reviens au contrat pour régénérer ?

Cela dépend de votre culture et de votre maturité en engineering, mais personnellement je ne regarderais plus trop le code dbt. Je changerais les besoins dans le contrat, et si le résultat n'est pas bon, j'améliorerais les skills. Mettez en place une boucle de feedback dans votre dépôt de skills et optimisez à partir de là, plutôt que de rafistoler le code généré à la main.

Q : Faites-vous une distinction entre une marketplace et un catalogue de données, ou est-ce la même chose pour vous ?

Nous faisons la distinction. Un catalogue est un index technique de tous les jeux de données qui existent, souvent des millions d'actifs. Une marketplace ne contient que les produits de données destinés à être partagés et consommés par d'autres équipes, en général quelques centaines. C'est dans la marketplace que vivent les informations contextuelles, au niveau du contrat.

Q : Le data-first fait souvent émerger des enseignements que personne n'avait demandés. En faisant systématiquement du contract-first, ne répond-on pas seulement aux questions que les gens savent déjà poser ?

La remarque est juste, et il faut effectivement conserver une capacité d'exploration. La clé, c'est la frontière : à l'intérieur de votre propre domaine, où vous comprenez déjà ce que veulent dire les données, gardez un accès exploratoire simple, en data-first. Les Data Contracts prennent leur sens quand vous franchissez une frontière organisationnelle, parce que c'est là que commence un nouveau bounded context et que les données partagées ont besoin d'une interface convenue et documentée.

Q : Le contrat doit-il spécifier le schéma physique dès le départ, ou seulement la finalité et le modèle conceptuel, en laissant l'agent déterminer le schéma physique ?

Dans le contrat, je définirais le modèle conceptuel et logique et je laisserais l'implémentation physique et technique à la skill ou à la plateforme data cible. La connaissance métier va dans le modèle ; les détails spécifiques à la plateforme vont dans les skills.

Q : Nous voyons les Data Contracts aux extrémités du flux de données, sur les sources et juste avant la consommation. Les voyez-vous aussi au milieu, à chaque étape du lineage ?

Pour moi, un Data Contract crée une nouvelle frontière de confiance. Vous n'avez sans doute pas besoin d'un contrat qui remonte jusqu'à la toute première source à chaque saut ; il vous faut un lineage qui remonte jusqu'au dernier Data Contract sur lequel vous vous appuyez. Entre deux contrats, vous pouvez utiliser le lineage technique, c'est-à-dire le câblage interne du pipeline d'un produit de données. La confiance est ancrée au contrat source.