Escalado manual de una aplicación web
Al realizar de forma manual un escalado horizontal y después una reducción horizontal, podrá responder a las previsiones de aumento y disminución del tráfico. Además, el escalado horizontal tiene la ventaja adicional de que aumenta la disponibilidad, debido al mayor número de instancias de la aplicación web. Un error en una instancia no hace que la aplicación web deje de estar disponible.
En el sistema de reservas de hotel, puede llevar a cabo un escalado horizontal antes de que se produzca la afluencia de clientes prevista para la temporada. Después, puede realizar una reducción horizontal cuando finalice la temporada y disminuya el número de solicitudes de reserva.
En esta unidad, aprenderá a escalar horizontalmente una aplicación web de forma manual y, después, volver a reducirla horizontalmente.
Planes de App Service y escalabilidad
Las aplicaciones web que se ejecutan en Azure suelen usar Azure App Service para proporcionar el entorno de hospedaje. App Service puede organizar varias instancias de la aplicación web para que se ejecuten. Equilibra la carga de las solicitudes entrantes en estas instancias. Cada instancia se ejecuta en una máquina virtual.
Los recursos disponibles para cada instancia se definen mediante un plan de App Service. En el plan de App Service se especifican el sistema operativo (Windows o Linux), el hardware (memoria, capacidad de procesamiento de la CPU, almacenamiento en disco, etc.) y la disponibilidad de servicios como la copia de seguridad automática y la restauración.
Azure proporciona una serie de niveles bien definidos para el plan de App Service. En esta lista se resume cada uno de estos niveles, en orden ascendente de capacidad y coste:
- El nivel Gratis ofrece 1 GB de espacio en disco y soporte técnico para un máximo de 10 aplicaciones, pero una sola instancia compartida y ningún Acuerdo de Nivel de Servicio de disponibilidad. Cada aplicación tiene una cuota de proceso de 60 minutos al día. El plan de servicio Gratis es adecuado para el desarrollo y la prueba de aplicaciones, en lugar de para implementaciones de producción.
- El nivel Compartido ofrece compatibilidad con más aplicaciones (hasta 100) y también se ejecuta en una sola instancia compartida. Las aplicaciones tienen una cuota de proceso de 240 minutos al día. No hay ningún Acuerdo de Nivel de Servicio de disponibilidad.
- El nivel Básico es compatible con un número ilimitado de aplicaciones y proporciona más espacio en disco. Las aplicaciones se pueden escalar horizontalmente a tres instancias dedicadas. Este nivel proporciona un Acuerdo de Nivel de Servicio de disponibilidad del 99,95 %. Este nivel ofrece tres opciones con diferentes cantidades de potencia de proceso, memoria y almacenamiento en disco.
- El nivel Estándar también admite un número ilimitado de aplicaciones. Se puede escalar a 10 instancias dedicadas y tiene un Acuerdo de Nivel de Servicio de disponibilidad del 99,95 %. Al igual que el nivel Básico, este ofrece tres opciones con un conjunto de características cada vez más eficaces de proceso, memoria y disco.
- El nivel Premium ofrece hasta 20 instancias dedicadas, un Acuerdo de Nivel de Servicio de disponibilidad del 99,95 % y varios niveles de hardware.
- El nivel Aislado se ejecuta en una red virtual de Azure dedicada, lo que proporciona aislamiento de red y de proceso. Se puede escalar horizontalmente a 100 instancias y tiene un Acuerdo de Nivel de Servicio de disponibilidad del 99,95 %.
Nota:
Algunos niveles de servicio no están disponibles para todos los sistemas operativos. Por ejemplo, actualmente no existe un nivel Compartido para Linux.
Supervisión y escalado de una aplicación web
Al crear una aplicación web, puede crear un plan de App Service o usar uno existente. Si selecciona un plan existente, las demás aplicaciones web que lo usen compartirán los recursos con su aplicación web. Además, se escalarán juntas, por lo que tendrán que tener los mismos requisitos de escalado. Si tienen otros requisitos, use un plan de App Service diferente para cada aplicación.
Para realizar el escalado horizontal, debe agregar más instancias a un plan de App Service, hasta el límite disponible para el nivel seleccionado. Si no usa el nivel Gratis, las instancias se le cobrarán por hora. Puede llevar a cabo esta tarea en Azure Portal.
La clave para escalar de forma eficaz consiste en saber cuándo hacerlo y en qué medida. El rendimiento de una aplicación web se supervisa mediante las métricas disponibles para App Service. La manera más sencilla de hacerlo consiste en usar Azure Portal.
Si observa un aumento constante en el uso de recursos, como el uso de la CPU, la ocupación de la memoria o la longitud de cola de disco, debería considerar la posibilidad de realizar un escalado horizontal antes de que estas métricas alcancen un punto crítico. También debe supervisar el tiempo de respuesta medio de las solicitudes y el número de solicitudes con errores. Si ambas cifras son altas, el sistema podría estar ejecutándose cerca de su capacidad (o haberla superado). y podría tener que realizar un escalado horizontal de inmediato.
Si las métricas indican que el sistema tiene poca carga y dispone de una gran cantidad de capacidad de reserva, podría interesarle volver a reducirlo horizontalmente para limitar los costes.
En ambos casos, debe seguir supervisando las estadísticas de la aplicación web. Deje que el sistema se estabilice. Si las métricas indican que la aplicación todavía no recibe la potencia suficiente (o recibe demasiada), agregue o quite instancias según sea necesario.