Contrato de datos
Una promesa escrita y verificable sobre la forma y la calidad de datos que se comparten.
Un contrato de datos (data contract) es un acuerdo entre el equipo que produce ciertos datos (por ejemplo, los desarrolladores de la app de checkout) y los equipos que los consumen (analistas, finanzas, un modelo de machine learning). Deja por escrito cómo van a ser esos datos: qué campos hay, de qué tipo, cuáles pueden venir vacíos, qué valores se permiten, qué tan frescos van a estar y a quién llamar si algo sale mal. Y lo importante: se escribe como un archivo de código, casi siempre YAML, para que una máquina lo pueda verificar.
Existe por un accidente muy común. Alguien de la app le cambia el nombre a customer_id por client_id, o pasa los precios de pesos a centavos, un cambio totalmente razonable para la app, y a la mañana siguiente todos los tableros de facturación están rotos. Nadie hizo nada mal; el que producía los datos simplemente no sabía quién dependía de esa tabla. El contrato vuelve explícita esa dependencia, y un control automático en el CI/CD puede frenar el cambio, o al menos avisar, antes de que salga.
Los contratos suelen versionarse como las APIs: los cambios compatibles pasan, los que rompen algo necesitan una versión nueva y un período de migración. Son una idea central del data mesh, donde cada equipo de dominio es dueño de sus datos y los publica como un producto. Hay especificaciones abiertas, como el Open Data Contract Standard, y herramientas que los validan. Lo difícil no es tanto el archivo como el hábito: quien produce datos tiene que tratarlos como algo de lo que otros dependen.
Para quedarse
- Deja por escrito campos, tipos, valores permitidos, frescura y responsable de un conjunto de datos.
- Está escrito como código, así los controles automáticos detectan cambios que rompen antes de salir.
- Pone la responsabilidad por la calidad del lado del equipo que produce los datos.
- Es una pieza central del data mesh y de tratar los datos como un producto.