Cada componente de aplicación del servicio que escribimos requiere algunos recursos para ejecutarse y funcionar correctamente. Predecir exactamente cuántos recursos se necesitan puede ser casi imposible, ya que hay muchas partes móviles que pueden influir en él. La cantidad de memoria, CPU o ancho de banda de red necesario puede cambiar mediante el ciclo de vida de la aplicación a medida que cambia el volumen de trabajo. Casi todas las aplicaciones tienen requisitos de rendimiento que siempre debemos cumplir. A medida que cambia la carga de trabajo, debemos ser capaces de mantener el nivel de rendimiento deseado. Aquí es donde entra en juego Azure Autoscale, ya que es un mecanismo, podemos usar para lograrlo.

 

Autoscaling

En la figura 1 a continuación, está la carga de la aplicación y el límite total de los recursos. Cuando el escalado automático no está en su lugar, el Usuarios que están conectados y los usuarios que se van a conectar a la aplicación web, pueden enfrentar el rendimiento cuestiones debido a la limitación de los recursos disponibles y alcanza el punto umbral como se muestra en Figura 1.2 y no puede hacer frente al tráfico. Sin embargo, cuando nos fijamos en la figura 2, puede ver, con el tráfico y la carga de aplicaciones, que los recursos disponibles aumentan simultáneamente. Esta es la ventaja del escalado automático.

 

Escenario de inactividad de escalado automático de Azure

Figura 1

 

Umbral de escalado automático de Azure

Figura 1.2

 

Figura 2

 

Soluciones de cómputo en Azure

  • App Service. Azure App Service es un servicio de hospedaje web totalmente administrado para crear aplicaciones web, back-ends móviles y API RESTful. Desde sitios web pequeños hasta aplicaciones web escaladas globalmente, Azure tiene las opciones de precios y rendimiento que se ajustan a sus necesidades.
  • Azure Cloud Services. Azure Cloud Services es un ejemplo de una plataforma como servicio (PaaS). Al igual que Azure App Service, esta tecnología está diseñada para admitir aplicaciones escalables, confiables y económicas de operar. Puede instalar su propio software en máquinas virtuales que usan Azure Cloud Services y puede acceder a ellas de forma remota.
  • Azure Service Fabric. Azure Service Fabric es una plataforma de sistemas distribuidos que facilita el empaquetado, la implementación y la administración de microservicios y contenedores escalables y confiables. Service Fabric representa la plataforma de próxima generación para crear y administrar estas aplicaciones de clase empresarial, nivel 1 y escala en la nube que se ejecutan en contenedores.
  • Azure Functions. Azure Functions permite a los desarrolladores actuar conectándose a orígenes de datos o soluciones de mensajería, lo que facilita el proceso y la reacción a los eventos. Los desarrolladores pueden aprovechar Azure Functions para crear puntos de conexión de API basados en HTTP accesibles para una amplia gama de aplicaciones, dispositivos móviles e IoT.
  • Máquinas virtuales. La máquina virtual de Azure nos permitirá crear y usar máquinas virtuales en la nube como infraestructura como servicio. Podemos usar una imagen proporcionada por Azure, o socio, o podemos usar la nuestra para crear la máquina virtual.

 

Tipos de escalado automático

 

Escalado automático vertical

El escalado vertical significa que modificamos el tamaño de una máquina virtual. Ampliamos verticalmente si necesitamos una máquina virtual más grande que tenga más recursos de hardware y, por otro lado, reducimos la escala en caso de que no necesitemos todos los recursos disponibles y queremos reducir el tamaño de una máquina virtual. Nuestra aplicación que se hospeda en esta máquina virtual permanece sin cambios en ambos casos. Este tipo de escalado no es muy eficiente, especialmente en entornos de nube, ya que el consumo de recursos no está optimizado. Otro inconveniente principal es que la máquina virtual debe detenerse para que su tamaño cambie. Esto afecta a nuestra aplicación, ya que debe desconectarse mientras se detiene, cambia de tamaño y se reinicia, y estas acciones suelen llevar mucho tiempo. Por supuesto, podríamos mantener nuestra máquina virtual sin cambios, pero en su lugar aprovisionar una nueva máquina virtual con el tamaño deseado y mover nuestra aplicación una vez que la nueva máquina virtual esté lista. Esto todavía requiere que nuestra aplicación esté fuera de línea mientras se mueve, pero el proceso de mover la aplicación es mucho más corto.

escala vertical

Figura 3

 

aplicación de escalado vertical no disponible

Figura 3.1 – La aplicación deja de estar disponible cuando se coloca el escalado vertical, ya que tarda tiempo en reiniciarse.

 

Escalado automático horizontal

El escalado horizontal significa que modificamos el número de máquinas virtuales en ejecución y mantenemos el rendimiento deseado dividiendo la carga entre varias instancias de la misma máquina virtual. El tamaño de la máquina virtual sigue siendo el mismo. Solo aumentamos el número de ellas escalando horizontalmente, o disminuimos el número de máquinas virtuales en ejecución en un momento escalando. Mediante el uso de este enfoque, podemos comenzar con un tamaño de máquina virtual pequeño y mantener el consumo de recursos lo más óptimo posible. Además, no hay tiempo de inactividad para nuestra aplicación, ya que siempre habrá al menos una instancia de la aplicación en ejecución. El escalado horizontal requiere un equilibrador de carga para distribuir la carga entre las máquinas virtuales en ejecución de forma uniforme. Pero afortunadamente para nosotros, Azure hace esto fuera de la caja con cero acción necesaria de nuestro lado.

 

escala horizontal

Figura 5. Escalado horizontal cuando aumenta el tráfico.

 

el tráfico de escalado horizontal disminuye

Figura 5.1 – Escalado horizontal cuando el tráfico disminuye.

 

Monitoreo y Alertas

Hay muchas maneras con las que puede supervisar si se agregan recursos adicionales en Azure a un servicio, algunos de los cuales son bastante complicados, por ejemplo, la hoja Escalado de un servicio (Conjuntos de escalado de máquinas virtuales en este caso, figura 6). Este es un método que es preferido por los administradores, pero no por los propietarios y colaboradores. Para que los usuarios puedan verlos, necesitamos iniciar sesión en Azure Portal, lo que puede llevar bastante tiempo para los usuarios.

Conjuntos de escalas de máquinas virtuales

Figura 6

 

Alertas

Puede optar por notificar a los usuarios cuando se produce el escalado horizontal automático y el escalado horizontal (servicio de aplicaciones).

 

Alertas de escalado automático de Azure

Figura 7

 

De forma predeterminada, la información de la aplicación se utiliza para el servicio de aplicaciones, lo que nos proporciona información sobre el tiempo de respuesta del servidor, las solicitudes, etc.

 

Perspectivas de las aplicaciones

Figura 8. Application Insights muestra el tiempo medio de respuesta del servidor con las solicitudes que recibe un servicio de aplicaciones.

 

Esta es la forma de configurar el escalado automático en un servicio de aplicaciones. En primer lugar, vaya a Configuración de escalabilidad horizontal > Configurar > condición de escalado > Seleccione la métrica adecuada, como CPU, RAM, solicitudes, etc. > Ahorre y listo.

 

Configurar el escalado automático

Figura 9. Configuración de las condiciones de escalado automático en un plan de servicio de aplicaciones

 

Cuando usa Azure Autoscale, no tiene que preocuparse por cómo implementar equilibradores de carga, administradores de tráfico, etc. Azure administra todo.

Nota: Las máquinas virtuales independientes necesitan configuración adicional. Sin embargo, los conjuntos de escalado de máquinas virtuales no requieren ninguna acción administrativa al escalar automáticamente. Los equilibradores de carga se crean automáticamente.

Azure App Services tiene un método de escalado automático ciego que controla Azure y no verá ningún servicio que se use individualmente en los recursos. En su lugar, quita cualquier sobrecarga administrativa. Los usuarios sienten poco o ningún problema de rendimiento teniendo en cuenta que se logra el escalado automático. Azure controla la mayor parte de la parte de escalado automático, además de especificar las condiciones de escalado automático, no queda mucho por hacer para el usuario. Todo se maneja sin problemas.

Historial de ejecución de escalado automático

 

En la Figura 10, hay un VMSS (Virtual Machine Scale Sets) que se escala automáticamente cuando las condiciones que menciona resultan ser verdaderas.

 

Conjuntos de escala de máquina virtual con Load Balancer

Figura 10. Conjuntos de escalado de máquinas virtuales con Load Balancer.

 

 

Pruebas de escalado automático de Azure

Las pruebas son una parte integral de una aplicación web. Sin pruebas, no podemos saber con certeza si el servidor web puede manejar el tráfico, para ello, realizamos pruebas. Las pruebas de estrés, las pruebas de carga son los pocos ejemplos de pruebas. Para que se controle exclusivamente en Azure, regístrese en una organización de DevOps dentro de Azure Portal, cree un proyecto y, a continuación, se le redirigirá a la siguiente página:

 

Panel de VSTS

Figura 11. Panel de DevOps para pruebas

 

Plan de pruebas de VSTS

Figura 12. Puede agregar direcciones URL con fines de prueba y ver las métricas del servicio que se usa para las pruebas.

 

Porcentaje medio de CPU por instancia

Figura 13. Gráfico de CPU de la aplicación probada que se encuentra en la máquina virtual.

 

Resultados de ejemplo GET API

Figura 14. Resultados de muestra para una API GET con detalles como tiempo de respuesta, carga de usuarios, solicitudes por segundo, etc.

 

Uso de LoadView para comprobar que el escalado automático de Azure funciona correctamente

Como sabemos por ahora, cuando se alcanza una cantidad de CPU, RAM y E/S, se produce el escalado automático. Aquí en la figura 15, este gráfico se incluye en un informe proporcionado por LoadView cuando se ejecuta una prueba en una dirección URL o extremo determinado. El primer gráfico tiene un número constante de usuarios que visitan el sitio según nuestra estrategia de prueba de carga y, por lo tanto, después de punto, el tiempo medio de respuesta aumenta sustancialmente.

LoadView Tiempo medio de respuesta sin escalado automático

Figura 15. Tiempo medio de respuesta sin escalado automático

 

Sin embargo, con el escalado automático viene ventajas. En la Figura 16, cuando los usuarios aumentan, nuestra instancia que hospeda la aplicación web escala horizontalmente según las condiciones y, por lo tanto, los tiempos medios de respuesta no se ven afectados una vez completado el escalado automático. Cuando los usuarios ya no están conectados, las instancias que se crearon para controlar la carga impredecible se terminan y solo el recuento inicial permanece intacto.

 

LoadView Tiempo medio de respuesta con escalado automático

Figura 16. Tiempos de respuesta promedio con escalado automático

 

En la figura 17, la prueba de carga proporcionada por LoadView proporciona una forma de probar la aplicación con la ayuda de la sesión cuando las sesiones siguen aumentando, lo que ayuda a realizar las pruebas adecuadas y si la aplicación se escala automáticamente o no.

Sesiones acumulativas de LoadView

Figura 17. El número de sesiones acumulativas

 

Pruebas de escalado automático de Azure: conclusión

Al implementar el escalado automático de Microsoft Azure, no tiene que preocuparse por cómo implementar equilibradores de carga, administradores de tráfico, etc. Azure administra todo y se asegura de que se ejecute la cantidad correcta de recursos para controlar la carga de las aplicaciones que realizan las pruebas. Sin embargo, el uso de una solución como LoadView garantiza que el escalado automático se está ejecutando correctamente y que los usuarios no experimentan ninguna degradación del rendimiento a medida que se agregan recursos.

Pruebe LoadView usted mismo y reciba hasta 5 pruebas de carga gratuitas para comenzar.