Saltar al contenido
GD Data
Todos los artículos
Ingeniería de DatosFiabilidad

Por qué tus pipelines de datos siguen fallando (y cómo lo arreglan los contratos de datos)

Los cambios silenciosos de esquema son la principal causa de pipelines rotos. Los contratos de datos convierten esos fallos en cambios detectados, con dueño y versionados; así se adoptan.

Por GD Data 2 min de lectura
Ilustración abstracta de pipelines de datos interconectados sobre fondo claro

La mayoría de las caídas de pipeline no empiezan con un fallo dramático. Empiezan con un cambio bienintencionado a tres equipos de distancia: alguien renombra una columna, ajusta un tipo o elimina un campo que “nadie usa”. Horas después, un dashboard está mal, un modelo puntúa basura y un ingeniero de guardia está bisecando commits a las 3 de la mañana.

La causa raíz casi nunca es el código; es la falta de acuerdo sobre cómo deben ser los datos. Ese acuerdo es un contrato de datos.

Qué es realmente un contrato de datos

Un contrato de datos es una especificación versionada y legible por máquina de un conjunto de datos, con la que productores y consumidores se comprometen. Como mínimo cubre:

  • Esquema: nombres de campos, tipos y nulabilidad.
  • Semántica: qué significa cada campo y sus valores permitidos.
  • Garantías de calidad: expectativas de frescura, completitud y unicidad.
  • Propiedad: quién es responsable cuando se viola el contrato.

Fundamental: el contrato vive en el control de versiones, junto al código que produce los datos; no en una página de wiki que queda obsoleta el día que se escribe.

Aplícalo en CI, no en producción

Un contrato que no se aplica es solo documentación. El patrón que funciona:

  1. Los productores declaran el contrato como código (por ejemplo, un contrato de modelo en dbt o una entrada en un schema registry).
  2. Cada cambio a un job productor ejecuta una verificación en CI que compara la nueva salida con el contrato.
  3. Un cambio disruptivo rompe el build; el productor o actualiza el contrato de forma deliberada (subiendo su versión) o corrige la regresión.
# Un contrato de modelo sencillo en dbt
models:
  - name: orders
    config:
      contract: { enforced: true }
    columns:
      - name: order_id
        data_type: string
        constraints: [{ type: not_null }]
      - name: total_amount
        data_type: numeric

El cambio que antes se escapaba en silencio ahora aparece como un build rojo, revisado por quien es dueño del impacto aguas abajo.

El beneficio

Los equipos que adoptan contratos dejan de tratar la calidad de los datos como una actividad de apagar fuegos. Los cambios disruptivos se vuelven visibles, negociados y versionados. Los consumidores pueden construir sobre un conjunto de datos sabiendo que no cambiará bajo sus pies sin aviso; y cuando cambia, reciben un periodo de deprecación en lugar de una alerta a las 3 de la mañana.

No necesitas poner contrato a cada tabla el primer día. Empieza por el puñado de conjuntos de datos que alimentan tus dashboards y modelos más importantes, prueba el patrón y expande desde ahí. La fiabilidad se acumula.

¿Listo para ponerlo en práctica?

Envíanos un mensaje y revisamos dónde encajan estas ideas en tu stack.

Hablemos
Iniciar un proyecto