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.
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.
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.
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.
Alertas
Puede optar por notificar a los usuarios cuando se produce el escalado horizontal automático y el escalado horizontal (servicio de aplicaciones).
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.
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.
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.
En la Figura 10, hay un VMSS (Virtual Machine Scale Sets) que se escala automáticamente cuando las condiciones que menciona resultan ser verdaderas.
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:
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.
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.
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.
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.