· nervico-team · desarrollo-software · 9 min read
Microservicios vs monolito: guia de decision practica
Guia de decision para elegir entre microservicios y monolito: cuando cada enfoque tiene sentido, patrones de migracion, implicaciones de tamano de equipo y la alternativa del monolito modular.
Amazon Prime Video redujo sus costes de infraestructura un 90% migrando de microservicios distribuidos a un monolito de proceso unico. Twilio Segment colapso 140 microservicios en un solo monolito despues de que tres ingenieros a tiempo completo pasaran la mayor parte de su tiempo apagando fuegos en lugar de construir funcionalidades.
Estos no son argumentos contra los microservicios. Son argumentos contra aplicar microservicios sin entender cuando tienen sentido.
El debate “microservicios vs monolito” lleva anos generando discusiones polarizadas. Pero la realidad no es binaria. La decision correcta depende de tu equipo, tu dominio, tu escala y tus objetivos de negocio. En esta guia vas a encontrar un framework practico para tomar esa decision.
El problema de los dogmas arquitectonicos
Por que se hizo popular la narrativa de los microservicios
Los microservicios se convirtieron en la arquitectura “correcta” a mediados de la decada de 2010. Netflix, Amazon, Uber y otras grandes tecnologicas los adoptaron y publicaron articulos sobre sus ventajas. La industria los copio sin contexto.
Lo que no se conto:
- Netflix tenia mas de 1.000 ingenieros cuando adopto microservicios
- Amazon tenia problemas de escalabilidad que el 99% de las empresas nunca tendra
- Uber necesitaba que equipos independientes desplegaran a ritmos diferentes en docenas de ciudades
Estas empresas adoptaron microservicios porque tenian problemas especificos que los microservicios resolvian. La mayoria de las empresas que los copiaron no tenian esos problemas.
El coste de seguir la moda
Implementar microservicios cuando no los necesitas anade complejidad operativa sin beneficios reales:
- Red de servicios que hay que monitorizar, desplegar y mantener individualmente
- Comunicacion entre servicios (red, serializacion, latencia)
- Consistencia de datos distribuidos (uno de los problemas mas dificiles en informatica)
- Debugging distribuido (rastrear un error a traves de 15 servicios)
- Infraestructura adicional: service discovery, API gateways, message queues
Si tu equipo tiene 8 desarrolladores y tu aplicacion tiene 5.000 usuarios, microservicios probablemente te estan ralentizando, no acelerando.
Cuando el monolito tiene sentido
Equipos pequenos y medianos
El consenso en 2025 es claro: los beneficios de microservicios solo se materializan con equipos de mas de 10 desarrolladores. Por debajo de ese umbral, los monolitos rinden consistentemente mejor.
Por que:
- Un solo repositorio es mas facil de entender, navegar y modificar
- Un solo despliegue elimina la complejidad de coordinar multiples servicios
- Debugging es trivial comparado con trazar errores a traves de servicios distribuidos
- Las refactorizaciones afectan al mismo codebase, no a contratos entre servicios
Proyectos nuevos
Casi siempre deberias empezar con un monolito. Razon: al principio no sabes donde estan las fronteras naturales de tu dominio. Si divides en servicios demasiado pronto, casi seguro dividiras mal.
El patron correcto:
- Empieza con un monolito bien estructurado
- Identifica los limites del dominio a medida que el negocio evoluciona
- Extrae servicios cuando hay una razon concreta para hacerlo
- No extraigas servicios “por si acaso”
Velocidad de desarrollo prioritaria
Si lo que necesitas es velocidad de iteracion (startups validando producto, equipos pequenos lanzando features), el monolito te da menos friccion.
No tienes que preocuparte por versionado de APIs entre servicios. No necesitas un pipeline de despliegue por servicio. No tienes que gestionar consistencia eventual entre bases de datos.
Cuando los microservicios tienen sentido
Equipos grandes y autonomos
Cuando tienes 50 o mas desarrolladores divididos en equipos, los microservicios permiten autonomia real. Cada equipo posee uno o mas servicios y puede desplegar a su propio ritmo.
Senales de que necesitas microservicios por tamano de equipo:
- La coordinacion para deploys se ha convertido en un cuello de botella
- Los equipos pisan el codigo de otros continuamente
- Los merge conflicts son constantes y costosos
- Los ciclos de testing se alargan porque un cambio en un modulo afecta a todo
Requisitos de escalado independiente
Si diferentes partes de tu sistema tienen requisitos de escalabilidad drasticamente diferentes, los microservicios te permiten escalar cada componente de forma independiente.
Ejemplo real: Un sistema de streaming donde el servicio de transcodificacion de video necesita GPUs masivas, pero el servicio de perfiles de usuario funciona con recursos minimos. Escalar ambos juntos en un monolito es un desperdicio.
Aislamiento de fallos critico
En sistemas donde un fallo en un componente no puede afectar a otros, los microservicios proporcionan aislamiento de procesos.
Ejemplo: Un sistema de pagos donde un fallo en el modulo de notificaciones no puede afectar al procesamiento de transacciones. En un monolito, un memory leak en notificaciones puede tumbar todo el sistema.
Requisitos regulatorios
En algunos sectores, la regulacion exige aislamiento de datos o procesos. Microservicios con bases de datos separadas facilitan cumplir con requisitos como GDPR, PCI-DSS o regulaciones bancarias.
El monolito modular: la alternativa que nadie te cuenta
Que es un monolito modular
Un monolito modular es un solo desplegable con modulos internos bien definidos y fronteras claras entre ellos. Combina la simplicidad operativa del monolito con la estructura interna de los microservicios.
Caracteristicas:
- Se despliega como una sola unidad
- Los modulos tienen interfaces bien definidas entre ellos
- Los modulos no acceden directamente a las bases de datos de otros modulos
- La comunicacion entre modulos es via interfaces internas (llamadas de funcion, no red)
Por que es la opcion optima para la mayoria
Para equipos de 10 a 50 desarrolladores, el monolito modular ofrece lo mejor de ambos mundos: fronteras claras entre modulos sin la carga operativa de la distribucion.
Ventajas sobre el monolito clasico:
- Fronteras de modulo enforced (no solo convenciones)
- Cada equipo puede trabajar en su modulo con minima interferencia
- Mas facil extraer un servicio si eventualmente lo necesitas
Ventajas sobre los microservicios:
- Un solo despliegue
- Sin latencia de red entre modulos
- Sin complejidad de datos distribuidos
- Debugging local
Tecnologias que lo soportan
La mayoria de los lenguajes y frameworks modernos soportan patrones de modularizacion:
- Java: Modulos de Java (JPMS), Spring Modulith
- C#/.NET: Assemblies, proyectos separados con interfaces definidas
- Go: Paquetes con interfaces explicitamente definidas
- TypeScript/Node: Workspaces de npm o yarn, modulos con exports controlados
Patrones de migracion
Del monolito a microservicios: el Strangler Fig pattern
El Strangler Fig pattern (introducido por Martin Fowler) es la forma mas segura de migrar de monolito a microservicios de forma gradual.
Como funciona:
- Identifica una funcionalidad del monolito que quieres extraer
- Construye el nuevo servicio al lado del monolito
- Redirige el trafico gradualmente del monolito al nuevo servicio
- Cuando todo el trafico va al nuevo servicio, elimina esa funcionalidad del monolito
- Repite para la siguiente funcionalidad
Ventajas:
- Riesgo controlado: si el nuevo servicio falla, el monolito sigue funcionando
- Progreso incremental: no necesitas migrar todo de golpe
- Aprendizaje continuo: cada extraccion te ensena para la siguiente
Equipos que usan patrones strangler-fig o migracion dominio-a-dominio logran ciclos de entrega entre un 20% y un 30% mas rapidos en 6-12 meses, segun benchmarks de la industria.
De microservicios a monolito: la consolidacion
Si, esto tambien pasa. Y cada vez mas. El 42% de las organizaciones que adoptaron microservicios estan consolidando servicios de vuelta en unidades desplegables mas grandes.
Cuando tiene sentido consolidar:
- El overhead operativo supera los beneficios
- El equipo ha encogido y ya no puede mantener tantos servicios
- La latencia entre servicios esta afectando al rendimiento del usuario
- El coste de infraestructura es desproporcionado para el beneficio obtenido
Como hacerlo:
- Identifica servicios que siempre se despliegan juntos (son candidatos a fusion)
- Identifica servicios con comunicacion excesiva entre ellos
- Fusiona gradualmente, empezando por los mas acoplados
- Mantiene fronteras de modulo incluso dentro del monolito resultante
Framework de decision: el arbol de decisiones
Paso 1: Tamano del equipo
- Menos de 10 desarrolladores: monolito o monolito modular. No hay debate.
- 10-50 desarrolladores: monolito modular. Considera microservicios solo si hay razones especificas.
- Mas de 50 desarrolladores: microservicios empiezan a justificar su complejidad operativa.
Paso 2: Requisitos del sistema
Responde a estas preguntas:
- Necesitas escalar partes del sistema de forma independiente? Si no, monolito.
- El aislamiento de fallos entre componentes es critico para el negocio? Si no, monolito.
- Hay requisitos regulatorios que exijan separacion de datos? Si no, monolito.
Si respondiste si a alguna, evalua microservicios para esos componentes especificos, no para todo el sistema.
Paso 3: Madurez del equipo
Los microservicios requieren competencias que no todos los equipos tienen:
- Experiencia con sistemas distribuidos
- Capacidad de disenar y mantener APIs
- Experiencia con observabilidad (tracing distribuido, monitoring, logging centralizado)
- Capacidad de gestionar infraestructura compleja
Si tu equipo no tiene estas competencias, los microservicios te van a ralentizar mas de lo que te van a ayudar.
Paso 4: Fase del producto
- Validacion de idea: monolito. Velocidad es lo que importa.
- Crecimiento temprano: monolito modular. Estructura sin overhead.
- Escalado: evalua microservicios donde haya una necesidad real.
- Madurez: arquitectura hibrida (monolito modular + servicios extraidos donde es necesario).
Errores comunes
Error 1: microservicios desde el dia uno
Dividir en servicios antes de entender tu dominio casi siempre resulta en fronteras incorrectas. Luego mover funcionalidad entre servicios es mas costoso que refactorizar un monolito.
Error 2: el nanoservicio
Un servicio que hace una sola cosa trivial y necesita comunicarse con 5 servicios mas para cualquier operacion util. El resultado es latencia alta, debugging imposible y complejidad sin beneficio.
Error 3: ignorar la complejidad operativa
Cada servicio necesita: CI/CD propio, monitoring, alertas, logs, documentacion de API, gestion de versiones. Multiplicar esto por 30 servicios es un equipo de DevOps a tiempo completo.
Error 4: base de datos compartida entre servicios
Si tus microservicios comparten base de datos, no tienes microservicios. Tienes un monolito distribuido con todos los inconvenientes de ambos enfoques.
Conclusion
La arquitectura correcta no es la mas popular ni la que usan las FAANG. Es la que resuelve los problemas reales de tu equipo, tu producto y tu escala actual.
Las claves para decidir:
- Empieza con lo mas simple que funcione. Monolito para equipos pequenos, monolito modular para equipos medianos.
- No copies a Netflix. A menos que tengas los problemas de Netflix y el equipo de Netflix.
- Evoluciona cuando tengas datos, no cuando tengas miedo. Migra a microservicios cuando veas senales reales, no “por si acaso.”
- Considera el monolito modular. Para la mayoria de equipos, es la mejor opcion.
- Si ya estas en microservicios y no te funciona, consolidar no es un fracaso. Es pragmatismo.
La arquitectura de software es una herramienta, no una identidad. Elige la herramienta adecuada para el problema que tienes, no para el problema que crees que tendras.
No tienes claro que arquitectura necesita tu proyecto?
En una auditoria tecnica gratuita podemos ayudarte a:
- Evaluar si tu arquitectura actual es la adecuada para tu escala
- Identificar donde la complejidad arquitectonica te esta ralentizando
- Disenar un plan de migracion gradual si es necesario
- Definir fronteras de servicio basadas en tu dominio de negocio real
Sin compromisos, sin PowerPoints. Solo un analisis tecnico honesto.