Publicado el

Monolito, microservicios o algo en medio

Los microservicios no son una mejora del monolito: son otro conjunto de compromisos. Qué criterios inclinan la decisión y qué componentes exige cada opción.

Línea de servicio Arquitectura Cloud

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

De monolito a microserviciosEspectro con opciones intermedias, criterios que empujan hacia cada extremo y lo que exige ir hacia microservicios.ARQUITECTURA · DISEÑOUn espectro, no dos opcionesMonolitoMonolitomodularServiciospor dominioMicroserviciosBuen punto de partida para la mayoríaEmpujan hacia monolito← Equipo pequeño← Dominio que aún cambia← Poca automatizaciónEmpujan hacia microservicios→ Equipos que despliegan solos→ Escalas muy distintas→ Disponibilidad por componenteLO QUE EXIGE IR HACIA LA DERECHA Despliegueautomatizado Puertade API Colasy eventos TrazabilidaddistribuidaN100F · n100f.com

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.

Si tu costo cloud crece sin que nadie sepa por qué, o tu arquitectura depende de quien la montó, conversemos.

Conversemos