Cada vez más y más empresas deciden alojar sus servicios en la nube. La ventaja de un proveedor de cloud es el de poder usar sólo los recursos que necesitamos en cada momento, en lugar de pagar el coste de un número fijo de servidores. Esta elasticidad es consecuencia del uso de una capa de virtualización: normalmente pagaremos por servidores virtuales (máquinas virtuales o contenedores).
La dificultad reside en conocer la carga entrante a la aplicación en todo momento, para así poder adecuar los recursos. Un autoscaler es la pieza del puzzle que cumple esta función. Los proveedores estándar (Amazon EC2, Google Compute Engine) ofrecen un servicio básico basado en reglas: e.g. si la carga del servidor es mayor que un umbral, se añaden varios servidores de respaldo.
Sin embargo, es posible aplicar métodos más sofisticados. Netflix y su servicio Scryer es un claro ejemplo. La carga de peticiones procedente de sus usuarios tiene una forma marcadamente periódica, como se puede ver en la siguiente imagen.
Por ello, es posible utilizar diferentes técnicas de predicción temporal para estimar la carga futura y así hacer un autoescalado proactivo.
Otro factor a tener en cuenta es el esquema de tarificación de nuestro proveedor. En concreto, Netflix utiliza los servicios de Amazon EC2. En su oferta, Amazon nos cobrará unos céntimos según el tipo de instancia (a más recursos, más coste). Además, redondea el coste a una hora: Si sólo ejecutamos la instancia durante 5 minutos, nos va a cobrar por 60. Conviene tener en cuenta este factor para nuestro autoscaler.
Justando todas las piezas, Netflix ha sido capaz de crear Scryer, su propio autoscaler. Falta ver si los proveedores ofrecerán esta herramienta entre su carta de servicios.