La capacidad de un sistema para absorber picos masivos de tráfico define su supervivencia o su colapso total en producción. Todo recae en el Scaling.

🚀 Estrategias de Escalabilidad

El vertical scaling (escalado vertical) y el horizontal scaling (escalado horizontal) son dos estrategias operativas fundamentales para incrementar la capacidad de un sistema con el fin de manejar un mayor workload (carga de trabajo) o mejorar significativamente su performance (rendimiento).

Comprender a fondo las diferencias entre estas dos estrategias es vital para tomar decisiones precisas e informadas respecto a la evolución de la infraestructura central y a la planeación técnica de la escalabilidad en nuestras aplicaciones.


Vertical Scaling (Scaling Up)

El vertical scaling, o scaling up (escalar hacia arriba), incrementa la capacidad y el performance principal aumentando estructuralmente todo el hardware del servidor: añadiendo más núcleos de CPU, mayor memoria RAM o mejores discos de estado sólido y espacio general.

Es una estrategia mucho más rápida y relativamente simple de implementar al inicio de cualquier ciclo de vida de un producto, pero viene amarrada a limitaciones lógicas pesadas, tales como restricciones físicas severas (una tarjeta madre soporta un máximo de RAM) y altos costos inmanejables al superar cierto umbral corporativo de performance. Más importante aún, depender enteramente de un single server (servidor único) o de una cantidad mínima de servidores de alta capacidad, en la mayoría de los casos puede inyectar intrínsecamente un gigantesco single point of failure (punto único de fallo) en el sistema, lo que podría pulverizar inmediatamente la resiliencia y disponibilidad del mismo en producción.


Horizontal Scaling (Scaling Out)

Por el otro lado, el horizontal scaling, o scaling out (escalar hacia afuera), implica conceptualmente una expansión lateral: agregar constantemente nuevos servidores o nodos a la misma red para permitir que estos formen una cuadrilla que balancee de frente al workload.

Es maravillosamente flexible, infinitamente pre-planificable, fácil de ajustar en tiempo real bajo demanda y eleva con agudeza matemática la fault tolerance (tolerancia a fallos). Como ventaja táctica colateral, disuelve la preocupación inicial de los arquitectos al reducir contundentemente el riesgo de generar un temido single point of failure.

El horizontal scaling es ciertamente la estrategia más idónea y recomendada globalmente para dominar a los clústeres elásticos y a los distributed systems (sistemas distribuidos), sobre todo en aplicaciones backend modernas concebidas inicialmente para correr simultáneamente dentro de máquinas infinitas en paralelo.

Como es natural en la ingeniería, esto no viene “gratis”. Aportar a un esquema horizontal, requerirá rigurosamente un nivel de orquestación y gestión considerable, requiriendo obligatoriamente interponer un load balancing (balanceo o equilibrador de carga) sofisticado por delante y exigiéndole profundos rediseños estructurales a la aplicación original para permitir que todo su workload pueda ramificarse, segmentarse y ser completamente procesable sin generar corrupción en los datos y el estado atómico en general.

No olvidemos la variable costo: Al inicio o mediano plazo, adquirir múltiples servidores “estándar” mediante cloud-computing resulta generalmente más barato e inteligente a nivel presupuestal que inyectarle millones a mejoras hiper exclusivas a un single server.


Observaciones Finales

Vertical vs Horizontal Scaling

Como comúnmente observamos en el diagrama de arquitectura (Figure 1.3 reimaginada arriba con la estética cyberpunk del blog), podemos visualizar claramente que el vertical scaling expande a niveles titánicos la capacidad de una sola máquina, mientras que el horizontal scaling domina la carga anexando lateralmente múltiples máquinas idénticas trabajando interconectadas.

Ahora, con la escalabilidad sentando nuestras bases teóricas, estamos listos para adentrarnos en materia compleja en el próximo artículo y sumergirnos frente a frente con el afamado estilo arquitectónico Monolithic (arquitectura monolítica).