Arquitectura de Software

Por qué elegimos microservicios (y cuándo no usarlos)

RE
Richard Emert
15 de noviembre, 2025 6 min de lectura

En los últimos años, los microservicios se han convertido en la arquitectura "predeterminada" recomendada por muchos ingenieros y consultoras tecnológicas. Pero en Ingensoft, hemos aprendido por las malas que no existe una arquitectura de plata universal —solo soluciones adecuadas para contextos organizacionales y técnicos específicos.

¿Cuándo SÍ usar microservicios?

Recomendamos encarecidamente la adopción de microservicios cuando se cumplen las siguientes condiciones:

  • Dominios claramente separados: El sistema tiene módulos funcionales independientes (por ejemplo, ventas, logística, facturación) y la empresa cuenta con equipos de desarrollo autónomos para cada uno (Ley de Conway).
  • Escalabilidad asimétrica: Se requiere escalar partes del sistema de forma independiente. Por ejemplo: el módulo de procesamiento de pagos recibe 10 veces más tráfico que el módulo de perfil de usuario en épocas de ofertas.
  • Madurez operativa (DevOps): El equipo técnico tiene la capacidad madura para gestionar despliegues automatizados (CI/CD), orquestación (Kubernetes), monitoreo distribuido y trazabilidad de errores complejos.

Caso de Éxito en Logística

En un proyecto para una empresa de logística nacional, migrar de un monolito a una arquitectura de microservicios redujo en un 40% los tiempos de despliegue a producción y les permitió escalar únicamente el motor de cálculo de rutas durante el Black Friday, ahorrando miles de dólares en servidores ociosos.

¿Cuándo EVITARLOS por completo?

Implementar microservicios prematuramente es la causa número uno de fracaso en startups y proyectos nuevos corporativos. Un monolito bien estructurado (Monolito Modular) es una mejor opción cuando:

  • Equipos de desarrollo pequeños (< 5 ingenieros): La sobrecarga y complejidad operativa (gestionar redes, latencias, fallos de red) superará rápidamente los beneficios funcionales de escribir el código.
  • Producto en fase inicial (Validación de mercado): Cuando el producto está naciendo, los cambios radicales son frecuentes y los límites entre los servicios aún no están claros. Extraer un microservicio con los límites incorrectos genera una arquitectura "Monolito Distribuido", que es el peor escenario posible.
  • Presupuesto de infraestructura limitado: Ejecutar docenas de servicios independientes, con sus respectivas bases de datos, balanceadores y herramientas de monitoreo, puede triplicar los costos en la nube frente a un monolito robusto.

Nuestro enfoque pragmático (Arquitectura Evolutiva)

Para la mayoría de los proyectos empresariales greenfield (desde cero), hemos adoptado en Ingensoft un enfoque híbrido y pragmático:

  1. Fase 1: Monolito Modular. Iniciamos el desarrollo como una sola aplicación, pero aplicando patrones de diseño estrictos para mantener los módulos (ventas, usuarios, pagos) completamente aislados a nivel de código y base de datos.
  2. Fase 2: Extracción Quirúrgica. Separamos componentes hacia microservicios independientes solo cuando existe una necesidad real, comprobable en producción, de escalabilidad o despliegue autónomo.
  3. Fase 3: Comunicación Asíncrona. Implementamos arquitecturas orientadas a eventos (Event-Driven) usando message brokers (RabbitMQ, Kafka) para asegurar la resiliencia y evitar el acoplamiento directo entre los nuevos microservicios.

Esta estrategia iterativa nos permite evitar la deuda operativa prematura mientras garantizamos la flexibilidad necesaria para evolucionar la arquitectura tecnológica al mismo ritmo que crece el negocio del cliente.

RE

Richard Emert

CEO & Arquitecto de Soluciones en Ingensoft

Con más de 15 años de experiencia diseñando sistemas de alta disponibilidad, es un apasionado promotor de la ingeniería de software pragmática, huyendo de las modas tecnológicas (Hype Driven Development) para centrarse en aportar valor real de negocio a través de la arquitectura evolutiva.

Compartir artículo:
Auditar Arquitectura