Microservicios
Conjunto de servicios pequeños, autónomos, desplegables independientemente, comunicados por red.
Contexto
Una organización con muchos equipos quiere desplegar de forma independiente y escalar partes específicas.
Problema
Un monolito acopla equipos, ciclos de release y escalado.
Solución
Servicios pequeños, alineados a un bounded context, con su propia BD, comunicándose por mensajes o HTTP.
#Ejemplo
CSHARP
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Orders │ │ Payments │ │ Shipping │
│ + DB │ │ + DB │ │ + DB │
└────┬─────┘ └────┬─────┘ └────┬─────┘
└─────── Message Bus ───────┘
Cuándo NO aplicarlo
- Equipo pequeño / producto temprano: el coste operativo te aplasta.
- Sin observabilidad madura: vas a sufrir.
- Si los servicios necesitan compartir mucha data en transacciones: estás dividiendo el dominio mal.
Tradeoffs
| Pro | Contra |
|---|---|
| Equipos autónomos, deploy independiente | Operativa compleja (orquestación, observabilidad) |
| Escalado granular | Latencia y fallos de red por todas partes |
| Aísla fallos | Eventual consistency |
#architecture #distributed