Examen de las opciones de escalado horizontal
Azure App Service admite dos opciones para escalar horizontalmente las aplicaciones web automáticamente:
- Escalado automático con la escalabilidad automática de Azure. El escalado automático toma sus decisiones de escalado en función de las reglas que usted define.
- Escalado automático de Azure App Service. El escalado automático toma decisiones de escalado según los parámetros que usted seleccione.
¿Qué es el escalado automático?
El escalado automático es un sistema o proceso en la nube que ajusta los recursos disponibles en función de la demanda actual. El escalado automático escala y reduce horizontalmente en lugar de escalar y reducir verticalmente.
El escalado automático se puede activar en función de una programación o evaluando si el sistema se ejecuta con recursos insuficientes. Por ejemplo, el escalado automático se podría activar si aumenta el uso de CPU o la ocupación de la memoria, si el número de solicitudes entrantes a un servicio parece incrementarse, o bien por otra combinación de factores.
Autoescalado de Azure App Service
En Azure App Service, el escalado automático supervisa las métricas de recursos de una aplicación web mientras se ejecuta. Detecta situaciones en las que se necesitan otros recursos para controlar un aumento de la carga de trabajo, y garantiza que esos recursos estén disponibles antes de que el sistema se sobrecargue.
El escalado automático responde a los cambios en el entorno mediante la adición o eliminación de servidores web, y el equilibrio de la carga entre ellos. El escalado automático no tiene ningún efecto en la potencia de la CPU, la memora ni la capacidad de almacenamiento de los servidores web que alimentan la aplicación; solo cambia el número de servidores web.
Reglas de escalado automático
La escalabilidad automática toma sus decisiones en función de las reglas que se definan. Una regla especifica el umbral para una métrica y desencadena un evento de escalabilidad automática cuando se sobrepasa este umbral. El escalado automático también puede desasignar los recursos cuando la carga de trabajo disminuye.
Defina las reglas de escalado automático con precaución. Por ejemplo, un ataque por denegación de servicio probablemente tendrá como resultado una afluencia de tráfico entrante a gran escala. Intentar controlar un aumento repentino de las solicitudes provocado por un ataque por denegación de servicio sería costoso e infructuoso. Estas solicitudes no son auténticas, por lo que se deben descartar sin procesarlas. Una solución mejor consiste en implementar la detección y el filtrado de las solicitudes que se producen durante este tipo de ataque antes de que lleguen al servicio.
¿Cuándo debería considerar el escalado automático?
El escalado automático proporciona elasticidad para los servicios. Por ejemplo, es posible que espere un aumento o una reducción de la actividad de una aplicación empresarial durante los días festivos.
El escalado automático mejora la disponibilidad y la tolerancia a errores. Puede ayudar a garantizar que las solicitudes cliente a un servicio no se denieguen porque una instancia no sea capaz de reconocer la solicitud de manera oportuna, o bien porque una instancia sobrecargada se haya bloqueado.
El escalado automático funciona mediante la adición o eliminación de servidores web. Si las aplicaciones web realizan procesamientos que consumen muchos recursos como parte de cada solicitud, es posible que el escalado automático no sea un procedimiento eficaz. En estas situaciones, puede ser necesario el escalado manual. Por ejemplo, si una solicitud enviada a una aplicación web implica realizar el procesamiento complejo de un conjunto de datos grande, en función del tamaño de la instancia, esta única solicitud podría agotar el procesamiento y la capacidad de memoria de la instancia.
El escalado automático no es el enfoque óptimo para controlar el crecimiento a largo plazo. Es posible que tenga una aplicación web que comience con unos pocos usuarios, pero cuya popularidad aumente con el tiempo. El escalado automático tiene una sobrecarga asociada a la supervisión de los recursos y a la determinación de si se debe desencadenar un evento de escalado. En este escenario, si puede anticipar la tasa de crecimiento, el escalado manual del sistema en el tiempo puede ser un enfoque más rentable.
El número de instancias de un servicio también es un factor que hay que tener en cuenta. Es posible que, la mayoría del tiempo, solo espere ejecutar algunas instancias de un servicio. Sin embargo, en esta situación, el servicio siempre será vulnerable a tiempo de inactividad o falta de disponibilidad, con independencia de que la escalabilidad automática esté o no habilitada. Cuanto menor sea el número de instancias inicial, menos capacidad tiene para controlar el aumento de la carga de trabajo mientras la escalabilidad automática pone en marcha instancias adicionales.
Escalado automático de Azure App Service
El escalado automático es una nueva opción de escalado horizontal que controla automáticamente las decisiones de escalado de las aplicaciones web y los planes de App Service. Es diferente de la escalabilidad automática de Azure ya existente, que permite definir reglas de escalado basadas en programaciones y recursos. Con el escalado automático, es posible ajustar la configuración de escalado para mejorar el rendimiento de la aplicación y evitar problemas de arranque en frío. La plataforma precalienta las instancias para que actúen como un búfer al escalar horizontalmente, lo que garantizará transiciones de rendimiento fluidas. Se le cobrará por segundo por cada instancia, incluidas las instancias activadas previamente.
Estos son algunos escenarios en los que debe escalar horizontalmente de manera automática:
- No se recomienda configurar reglas de escalabilidad automática basadas en métricas de recursos.
- Se recomienda que las aplicaciones web en el mismo plan de App Service se escalen de forma diferente e independientemente unas de otras.
- La aplicación web está conectada a una base de datos o a un sistema heredado, que puede no escalar tan rápido como la aplicación web. El escalado permite establecer automáticamente el número máximo de instancias a las que puede escalar con el plan de App Service. Esta configuración ayuda a la aplicación web a no sobrecargar el back-end.