Shared Kernel y contratos

Qué elementos conviene compartir entre repositorios y servicios, y cómo evitar que lo compartido se convierta en una fuente de acoplamiento.

¿Qué es un Shared Kernel?

Es un conjunto pequeño de conceptos compartidos entre varias partes del sistema.

Puede incluir:

  • value objects muy estables
  • contratos técnicos mínimos
  • utilidades realmente transversales
  • tipos comunes

Qué sí conviene compartir

  • UUID
  • Email
  • Money
  • Interfaces técnicas muy estables
  • Ciertos eventos o contratos bien gobernados

Qué no conviene compartir demasiado

  • Modelos completos del dominio
  • DTOs que cambian con frecuencia
  • Lógica de negocio
  • Estructuras que obliguen a todos a versionar al mismo tiempo

Riesgo principal

Si el shared kernel crece sin control, se convierte en una dependencia global que:

  • acopla equipos
  • obliga a coordinar releases
  • dificulta evolución independiente

Contratos explícitos

Más allá del shared kernel, lo importante es que existan contratos claros entre componentes:

  • APIs
  • eventos
  • interfaces
  • schemas

Compartir no debería significar mezclar contextos.

Resumen

Un shared kernel pequeño puede ayudar. Uno grande suele recrear el problema que intentabas evitar: el acoplamiento.