La pregunta equivocada
"¿Monolito o microservicios?" suele plantearse como si una opción fuera la moderna y la otra la antigua. No es así. Son dos formas de repartir la complejidad: el monolito la concentra en el código; los microservicios la mueven a la red, al despliegue y a la operación.
La pregunta útil es otra: ¿qué complejidad puede asumir esta organización, y dónde la quiere?
Un espectro, no dos opciones
Entre los extremos hay opciones intermedias que suelen ser la mejor respuesta:
- Monolito modular: una sola aplicación desplegable, pero con módulos separados y fronteras claras dentro del código. Es fácil de operar y permite separar después lo que haga falta.
- Servicios por dominio: pocos servicios grandes, uno por área de negocio, en lugar de decenas de servicios pequeños.
Los criterios que mueven la aguja
Hacia microservicios empujan:
- Equipos independientes que necesitan desplegar sin coordinarse.
- Partes del sistema con necesidades de escala muy distintas.
- Requisitos de disponibilidad por componente (que un fallo no tumbe todo).
Hacia monolito empujan:
- Un equipo pequeño.
- Un dominio que todavía cambia mucho y cuyas fronteras no están claras.
- Poca capacidad de operación: sin automatización madura, muchos servicios son muchos problemas.
Lo que exige cada opción
Los microservicios no se pagan solo en código. Exigen componentes que un monolito no necesita:
| Componente | Monolito | Microservicios |
|---|---|---|
| Despliegue automatizado | Recomendable | Imprescindible, por servicio |
| Puerta de entrada (API gateway) | Opcional | Necesaria |
| Comunicación asíncrona (colas, eventos) | Ocasional | Habitual |
| Trazabilidad distribuida | Opcional | Imprescindible para depurar |
| Gestión de identidad entre servicios | Simple | Necesaria y más compleja |
| Datos | Una base compartida | Una por servicio, con su sincronización |
Cada fila es costo de infraestructura y de operación. Por eso la decisión se escribe (con su registro de decisión) y se revisa cuando cambian los criterios, no cuando cambia la moda.
Cómo lo aplicamos: Arquitectura Cloud.