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