Arquitectura

Arquitecturas de Software que Escalan: Lecciones de 150+ Proyectos

Después de más de 150 proyectos entregados, estas son las decisiones de arquitectura que realmente diferencian a un sistema que escala de uno que colapsa bajo su propio crecimiento.

Carolina Mendoza
2025-10-28 · 8 min de lectura

Cuando un sistema empieza a fallar bajo carga, la primera reacción suele ser técnica: agregar más servidores, optimizar una query, meter una cache. Pero después de acompañar más de 150 proyectos en distintas etapas de madurez, la conclusión es casi siempre la misma: los problemas de escalabilidad rara vez son problemas de infraestructura. Son problemas de decisiones de arquitectura tomadas —o no tomadas— demasiado tarde.

Monolito modular, no monolito vs microservicios

La dicotomía "monolito vs microservicios" es, en la práctica, una simplificación que le ha costado caro a muchos equipos. Hemos visto startups migrar a microservicios con tres personas en el equipo de ingeniería y terminar gastando el 40% de su capacidad de desarrollo en coordinación de deploys y observabilidad distribuida, en lugar de construir producto. También hemos visto empresas con 200 mil usuarios activos seguir operando un monolito bien diseñado sin ningún problema de performance.

La alternativa que recomendamos por default es el monolito modular: un único deployable, pero con límites de dominio estrictos internamente —módulos que no comparten estado, que se comunican por interfaces explícitas y que podrían, en teoría, separarse en servicios independientes el día que haga falta. Esto da la mayoría de los beneficios organizacionales de los microservicios (equipos que pueden trabajar en paralelo sin pisarse) sin pagar el costo operativo de la distribución.

Cuándo sí conviene migrar a microservicios

Hay señales concretas de que ya es momento de separar servicios, y no son "tenemos mucho tráfico". Las señales reales son organizacionales y de acoplamiento: cuando distintos equipos necesitan desplegar con cadencias distintas y se bloquean mutuamente en el mismo pipeline; cuando un módulo específico tiene requisitos de escalado radicalmente distintos al resto del sistema (por ejemplo, un servicio de procesamiento de imágenes que necesita GPU mientras el resto de la app es CRUD estándar); o cuando la superficie de fallo de un módulo pone en riesgo a todos los demás y necesitás aislarlo. Migrar sin que exista al menos una de estas señales suele ser prematuro.

Deuda técnica: la variable que nadie mide bien

La deuda técnica no es mala en sí misma —es una herramienta legítima para llegar rápido a un mercado o validar una hipótesis. El problema es que casi ningún equipo la mide, y por lo tanto nadie sabe cuándo pagarla. Un patrón que nos funciona con clientes es tratar la deuda técnica como un ítem más del backlog, con una estimación de costo de "no pagarla" expresada en términos de negocio: cuánto tiempo extra toma cada nueva feature en ese módulo, cuántos bugs de producción se originan ahí, cuánto tarda el onboarding de un nuevo desarrollador en esa parte del código. Cuando ese costo supera al costo de refactorizar, es momento de pagarla, sin excepciones ni sentimentalismos.

Diseñar para el dato, no solo para el código

Una de las causas más comunes de sistemas que no escalan es un modelo de datos que no separa correctamente lo transaccional de lo analítico. Es habitual encontrar dashboards de negocio corriendo queries pesadas directamente contra la base de datos operacional, degradando la experiencia de los usuarios reales. La solución no siempre requiere un data warehouse completo desde el día uno: a veces basta con una réplica de solo lectura o un pipeline simple de ETL hacia una base separada. Lo importante es diseñar esa separación antes de que el dolor sea evidente, porque migrarla en caliente, con el sistema ya en producción, es mucho más costoso.

Observabilidad como requisito de arquitectura, no de operaciones

Muchos equipos tratan logging, métricas y trazas como una preocupación de DevOps que se agrega al final. En los proyectos que escalan mejor, la observabilidad se diseña junto con la arquitectura: cada servicio expone métricas de negocio (no solo de infraestructura) desde el primer día, y las trazas distribuidas están presentes antes de que existan múltiples servicios que rastrear. Cuando un sistema crece rápido y falla bajo presión, la diferencia entre un incidente de veinte minutos y uno de seis horas casi siempre es la calidad de la observabilidad que ya estaba instrumentada.

La lección más repetida

Si hay un patrón que se repite en los proyectos que escalaron bien, es que las decisiones de arquitectura correctas casi nunca son las más sofisticadas. Son las que reconocen el tamaño real del problema actual, dejan puertas abiertas para el problema futuro, y evitan pagar complejidad que el negocio todavía no necesita. La arquitectura que escala no es la que anticipa todo desde el día uno: es la que se puede evolucionar sin reescribir todo el sistema cada vez que el negocio da un salto de escala.

Volver al Blog

¿Tenés un Desafío Tecnológico en Mente?

Hablemos sobre cómo nuestro equipo puede ayudarte a escalar tu ingeniería con el mejor talento de Latinoamérica.