¿Que es Autoscaling?

En el mundo cloud, hay ciertas funcionalidades o características que tienen su nombre propio. Auto-scaling o autoscaling es la capacidad de ajustar los recursos de la infraestructura de tu cloud en base a la carga o demanda.

Autoscaling

En la teoría esta tecnología permite a una aplicación web, atender a mayor o menor cantidad de requerimientos (Requests) por segundo, sin colapsar o perder rendimiento.

En la práctica, esta definición es un poco simplificadora. Inicialmente existen por lo menos, 2 modelos de autoscaling que, si bien ambos escalan la infraestructura,  son completamente diferentes en rendimiento, aplicación, complejidad y costos.

 

Autoscaling Vertical

Se refiere a el crecimiento de los servidores virtuales de tu cloud. Autoscaling vertical potencia en sus características y capacidades a los servidores donde corre tu aplicación web. Según el proveedor de cloud que uses, podrás encontrar que puede auto-escalar su memoria RAM, espacio en disco y hasta CPU por cada servidor virtual de tu cloud.
Esto es una solución interesante a la hora de estar cubierto en casos de demanda, con un grado un menor de variabilidad en la demanda.

Por ejemplo: si la demanda aumenta un 50% podríamos aumentar la memoria del webserver en un 100% y también la potencia del CPU para acelerar la velocidad de procesamiento de cada requerimiento.

 

autoscaling vertical en cloud

 

Esta característica suele (dependiendo del proveedor de cloud que uses) tener la limitación de no ser plegable automáticamente, por lo que el autoscaling vertical generalmente siempre crece, pero no decrece de la misma forma.

Ahora bien, la próxima pregunta que hago es:

¿Que ocurre en los casos donde la carga aumenta en un grado mucho mayor, supongamos un 300%?

 

La respuesta es que el Autoscaling Vertical no es la solución apropiada para resolver esto. Aunque obtengamos un aumento en las características de nuestros cloud servers, evidentemente este crecimiento tiene un límite y nuestra aplicación se verá afectada en rendimiento y directamente con un crash en algún momento.

Autoscaling Horizontal

Pensemos ahora en una granja de 4 servidores que publican una aplicación web, utilizando un sistema de balanceo de carga para distribuir el tráfico. Cuando la demanda aumenta en un determinado porcentaje, automáticamente se inician tareas de creación y aprovisionamiento de software en 4 servidores adicionales. Cuando finaliza este proceso, se configura automáticamente el balanceo para distribuir el tráfico entre 8 servidores. Esto es autoscaling horizontal.

 

autoscaling horizontal en blowfish cloud

 

Esta cualidad de ajustar recursos de un cloud de forma automática se refiere al dimensionamiento de la arquitectura en número de servidores (Escala Horizontal) y según la función que desempeñen (web server, balancer, data base, etc.). A diferencia del Autoscaling Vertical, que sólo modifica las características de potencia de un servidor, el Autoscaling Horizontal se basa en un conjunto de reglas y en la observación continua de parámetros CPU, RAM, Request/seg, etc. La comparación continua de estos parámetros con umbrales predefinidos, puede iniciar procesos de orquestación en los servidores y en los proveedores de cloud computing, modificando su arquitectura sin intervención humana.

 

Blowfish Cloud Autoscaling

Basados en la técnica de autoscaling horizontal, en Blowfish estandarizamos algunos de los factores de esta arquitectura para poder automatizar y llevar esta ventaja competitiva  al mercado de servicios web de una forma normalizada e independiente (agnóstica) del proveedor cloud que utilices.

Inicialmente creamos niveles o ‘tiers’ que incluyen una cantidad de cloud servers y estandarizan la forma en la que tu cloud puede crecer y plegarse en función al tráfico. Estos niveles son:

  • Small: 4 Cloud VPS
  • Medium: 7 Cloud VPS
  • Large: 9 Cloud VPS
  • X Large: 11 Cloud VPS

Todas la aplicaciones y motores de datos que integran tu cloud, deberán estar en contenedores dockers para integrarlos a la plataforma. Este proceso lo llamamos “Onboarding” y es cuando los datos, los assets (imágenes, media, etc) y el código de la aplicación son separados e implementados en un Docker container por cada aplicación.

Concluido el Onboarding, se inicia un test de consumo para determinar el consumo habitual de RAM y CPU de la aplicación y así establecer umbrales de arranque apropiados para tu aplicación y para la fluctuación entre los niveles Blowfish y el autoscaling horizontal.

 

Conclusiones

Como vimos Autoscaling es una disciplina con diversos sabores. Autoscaling horizontal te permite seguir de cerca las variaciones de demanda de tus aplicaciones, lo que reduce la necesidad de aprovisionar capacidad servidores cloud manualmente y por adelantado.
Autoscaling Blowfish asegura que su aplicación pueda recibir tráfico y que los servidores funcionen adecuadamente sin perder performance.