El escalado es una de las características más deseables en las aplicaciones y una de las principales preocupaciones para equipos de desarrollo y administración de servidores. Básicamente, se refiere a la capacidad de crecimiento de la aplicación para atender a un número cada vez mayor de solicitudes y usuarios con total normalidad y sin degradaciones de servicio. De cara a conseguir esta deseada cualidad, existen diferentes vías que no son incompatibles: algunas más centradas en el desarrollo del software y otras en los servidores que harán de plataforma de ejecución. Dentro de este amplio espectro, hoy vamos a hablar de dos modelos de escalabilidad horizontal y vertical.
Escalado vertical
El escalado vertical tiene mucho que ver con el hardware del servidor de la aplicación. Se consigue de una manera muy sencilla: aumentando los recursos del servidor. Principalmente, en lo que respecta a la capacidad de procesamiento, memoria y almacenamiento. Este tipo de escalado es bastante sencillo de alcanzar, ya que únicamente requiere una intervención en el hardware del equipo, aumentando los recursos o incluso cambiando completamente de servidor. Sin embargo, el beneficio que se puede llegar a obtener también es limitado.
Ventajas:
- Facilidad de implementación y configuración.
- No requiere un diseño específico en la aplicación y su arquitectura para funcionar.
- Puede ser más económico.
Desventajas:
- Está limitado a la capacidad de un único servidor.
- No aporta beneficios en relación a la alta disponibilidad.
Escalado horizontal
Por su parte, el escalado horizontal se consigue aumentando el número de servidores que atienden una aplicación. Para ello, un grupo de distintos servidores se configura para atender las peticiones de manera conjunta (es lo que se denomina cluster) y la carga de trabajo se distribuye entre ellos a través de un balanceador. Cada uno de esos servidores se conoce como nodo y el escalado se realiza simplemente agregando un nuevo nodo al cluster.
Este escalado es bastante más potente, pero sin embargo requiere una mayor configuración para poder realizarse, no solamente para crear la red de servidores de un cluster, sino también realizando una arquitectura de aplicación, a nivel de software, capaz de adaptarse a este tipo de funcionamiento.
Ventajas:
- El escalado es prácticamente infinito.
- Permite alta disponibilidad.
- Permite un correcto balanceo de carga entre los servidores.
Desventajas:
- Requiere mayor configuración, que puede llegar a ser difícil de realizar.
- Necesita que la aplicación esté construida de modo que soporte escalamiento vertical.
- Aunque más potente y de mejor rendimiento, suele ser una opción menos económica, ya que requiere de varios servidores.
Conclusiones sobre Escalabilidad Horizontal y Vertical: cómo mejorar el escalado
El cálculo del escalado de la aplicación debe comenzar en la etapa de desarrollo, atendiendo a los requerimientos. Es importante decidir de antemano qué se necesitará para conseguir un adecuado escalado y cómo se va a realizar. Se debe pensar en factores como el comportamiento del crecimiento de la aplicación y los límites de los recursos de infraestructura que podamos tener o asumir económicamente. Estas decisiones seguramente condicionen el desarrollo y marquen la necesidad de arquitecturas específicas (microservicios, REST…), de modo que el software se adapte correctamente.
En cuanto a escalado vertical es importante saber que no siempre es posible aumentar los recursos actuales de un servidor. Por ejemplo, los Servidores Dedicados tienen pocas posibilidades de expansión y generalmente es necesario cambiar la máquina entera, con la correspondiente migración. Esto, sin embargo, no sucede con los Servidores Cloud, ya que es perfectamente posible asignar más recursos al servidor cuando sea necesario, ahorrándonos la necesidad de cambiar de máquina.
Los Servidores Cloud también facilitan mucho el escalamiento horizontal, ya que crear nuevos servidores y añadirlos al cluster es muy rápido y sencillo. La complejidad de estas configuraciones no nos tiene que asustar, pues gracias al panel de Cloudbuilder Next de Arsys es posible configurar un cluster de servidores con balanceo de carga de manera muy fácil, prácticamente a golpe de clic.
Generalmente, el escalado vertical es más que adecuado para la mayoría de las aplicaciones. Sin embargo, en ocasiones se espera un crecimiento elevado de los usuarios y, por tanto, una cantidad alta de solicitudes en un espacio corto de tiempo. En este caso, es posible que sea necesaria la planificación de una estrategia de escalado horizontal. También se debe considerar que a veces el aumento del hardware no es viable, por presupuesto o porque la mejoría no resulta lo suficientemente relevante para una aplicación. En estos casos, el escalado horizontal es mucho más seguro. No obstante, podemos acudir a estrategias mixtas, como sería separar ciertos servicios a un servidor adicional, como la base de datos. De esta manera, sin llegar a las complejidades de configuración de un cluster, podemos tener dos máquinas atendiendo solicitudes, una encargada de la parte del servidor web y otra de la base de datos.
Te puede interesar el artículo sobre cuándo y cómo hacer un balanceo de carga en nuestros Servidores Cloud.