Saltar al contenido principal

Principios de ubicación de lógica de negocio

Objetivo​

Este documento establece dónde debe residir la lógica de negocio y dónde no, con el fin de evitar su dispersión entre capas, tecnologías o componentes no diseñados para contenerla.

El objetivo es:

  • Mantener una única fuente de verdad
  • Facilitar pruebas
  • Reducir comportamientos inesperados
  • Alinear el backend con el dominio del negocio

La lógica de negocio mal ubicada es una de las fuentes más comunes de caos técnico.

Qué es lógica de negocio​

La lógica de negocio representa:

  • Reglas del dominio
  • Invariantes del sistema
  • Decisiones que no dependen de la infraestructura
  • Comportamientos que definen “qué es válido”

No es:

  • Validación de formato
  • Serialización
  • Orquestación técnica
  • Detalles de persistencia

Confundir estos conceptos lleva a arquitecturas frágiles.

Principio central: una única fuente de verdad​

Cada regla de negocio debe:

  • Existir en un solo lugar
  • Ser ejecutada siempre de la misma forma
  • No depender del canal de entrada

Duplicar lógica es garantizar inconsistencias futuras.

Dónde NO debe vivir la lógica de negocio​

Controladores Deben coordinar, no decidir.

Base de datos Los stored procedures complejos esconden reglas críticas y dificultan evolución.

Frontend El frontend puede validar UX, pero nunca imponer reglas del dominio.

Middleware genérico La lógica de negocio requiere contexto, no abstracción ciega.

Dónde SÍ debe vivir​

La lógica de negocio debe residir en:

  • Servicios de dominio
  • Casos de uso explícitos
  • Componentes diseñados para expresar reglas

Esto permite:

  • Tests claros
  • Evolución controlada
  • Lenguaje común con el negocio

Antipatrones comunes​

  • “Fat controllers”
  • Reglas duplicadas en frontend y backend
  • Validaciones repartidas sin criterio
  • Lógica escondida en callbacks o triggers

Estos patrones erosionan la predictibilidad del sistema.

Cierre conceptual​

La ubicación de la lógica define la forma mental del sistema.

Cuando la lógica está bien ubicada:

  • El sistema se entiende
  • Los cambios son seguros
  • El dominio es explícito

Un backend sin centro lógico es solo un conjunto de endpoints.