Microservicios

Servicios independientes organizados por dominio, responsables de la lógica de negocio, la persistencia y los eventos principales del sistema.

¿Qué es un microservicio en esta arquitectura?

Un microservicio es una unidad funcional responsable de un dominio o bounded context concreto.

Por ejemplo:

  • usuarios
  • productos
  • órdenes
  • pagos
  • inventario
  • notificaciones

Cada servicio debe tener un propósito claro y límites comprensibles.

Qué vive dentro de un microservicio

API Layer

Expone endpoints o interfaces de entrada.

Application Layer

Orquesta casos de uso.

Domain Layer

Contiene reglas, entidades, value objects y lógica principal del dominio.

Infrastructure Layer

Conecta con bases de datos, colas, clientes externos y detalles técnicos.

Responsabilidades principales

  • Implementar reglas de negocio
  • Validar invariantes del dominio
  • Persistir datos
  • Publicar eventos relevantes
  • Mantener contratos claros

Base de datos por servicio

Una práctica habitual es que cada microservicio tenga control sobre su propia persistencia.

Esto ayuda a:

  • reducir acoplamiento
  • proteger el dominio
  • evitar dependencia directa entre servicios

Compartir una misma base de datos entre muchos servicios suele llevar a acoplamientos difíciles de gobernar.

Beneficios

  • Límites más claros por dominio
  • Despliegues independientes
  • Evolución desacoplada
  • Ownership de equipo más definido

Riesgos

  • Servicios demasiado pequeños sin razón clara
  • Demasiada comunicación síncrona entre servicios
  • Contratos poco definidos
  • Consistencia distribuida mal resuelta
  • Gobernanza débil

¿Cómo se conectan?

Los microservicios pueden conectarse:

  • de forma síncrona, mediante APIs
  • de forma asíncrona, mediante eventos

En general:

  • usar sincronía cuando se necesita respuesta inmediata
  • usar asincronía cuando se busca desacoplamiento temporal

Ejemplo práctico

ms-orders puede:

  • recibir una solicitud de creación de orden
  • validar reglas del dominio
  • persistir la orden
  • publicar OrderPlaced

Luego otros servicios reaccionan a ese evento según su responsabilidad.

Resumen

Los microservicios son el núcleo funcional de la arquitectura. Su valor está en separar el dominio en límites claros, no en fragmentar el sistema arbitrariamente.