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.