Marco de arquitectura de Microsoft Azure: eficiencia del rendimiento

Marco de arquitectura de Microsoft Azure: eficiencia del rendimiento

Marco de arquitectura de Microsoft Azure: eficiencia del rendimiento

Uso del escalado vertical y horizontal en la arquitectura

  • 15 minutos

Es raro que podamos predecir exactamente la carga en nuestros sistemas. Una aplicación orientada al público podría crecer rápidamente en popularidad y uso, o es posible que una aplicación interna tenga que admitir una base de usuarios más grande a medida que crece el negocio. Incluso cuando se puede predecir la carga, rara vez es plana. Los minoristas tienen más demanda durante las vacaciones y los sitios web de deportes experimentan un pico durante las finales.

En esta unidad, vamos a hacer lo siguiente:

  • Definir el escalado o la reducción verticales y el escalado o la reducción horizontales.
  • Analizar algunas formas en las que Azure puede mejorar las capacidades de escalado.
  • Ver cómo las tecnologías de contenedor y sin servidor pueden mejorar la capacidad de escalado de su arquitectura.

¿Qué es el escalado?

Cuando se analizan las maneras de aumentar o disminuir la capacidad de proceso y los costos relativos de las aplicaciones, es importante definir dos conceptos clave: el escalado y los recursos.

  • El escalado es el proceso de administrar los recursos para ayudar a que la aplicación cumpla una serie de requisitos de rendimiento. Si tiene demasiados recursos para atender a los usuarios, no los usará de forma eficiente y perderá dinero. Cuando no hay suficientes recursos disponibles, el rendimiento de la aplicación puede verse afectado negativamente. El objetivo es cumplir los requisitos de rendimiento definidos y, al mismo tiempo, optimizar los costos.
  • Los recursos pueden hacer referencia a cualquier elemento necesario para administrar y ejecutar las aplicaciones. La memoria y las CPU de las máquinas virtuales son los recursos más evidentes. Pero es posible que con algunos servicios de Azure necesite tener en cuenta el ancho de banda o las abstracciones, como las unidades de solicitud (RU) de Azure Cosmos DB.

En un mundo hipotético donde la demanda de las aplicaciones fuera constante, sería fácil predecir la cantidad necesaria de recursos. Pero en el mundo real, la demanda de las aplicaciones cambia con el tiempo, por lo que puede ser más difícil predecir la cantidad exacta de recursos necesaria. Con suerte, ese cambio será predecible o estacional, pero esto no es habitual en todos los escenarios. Lo ideal es aprovisionar la cantidad adecuada de recursos para satisfacer la demanda y ajustar esa cantidad a medida que la demanda cambia.

El escalado es difícil en un escenario local, en el que compra y administra sus propios servidores. Agregar recursos puede ser costoso y, a menudo, lleva demasiado tiempo en poner los recursos en línea. A veces puede tardar más que lo que representa la necesidad real de aumentar la capacidad. También puede ser difícil reducir los recursos durante períodos de baja demanda en el sistema, por lo que puede tener que afrontar igualmente un mayor costo.

La facilidad de escalado es una ventaja clave de Azure. La mayoría de los recursos de Azure permiten agregar o quitar recursos fácilmente a medida que cambia la demanda. Muchos servicios tienen opciones automatizadas que supervisan la demanda y la ajustan automáticamente. Esta capacidad se conoce normalmente como escalado automático. El escalado automático permite establecer umbrales para los niveles mínimo y máximo de instancias que deben estar disponibles. También agrega o quita instancias en función de una métrica de rendimiento. Un ejemplo es el uso de la CPU

.https://www.microsoft.com/es-es/videoplayer/embed/RE2yBWi?pid=RE2yBWi-ax-85-id-

oneplayer&jsapi=true&postJsllMsg=true&autoplay=false&mute=false&loop=false&market=es-es&playFullScreen=false&autoCaptions=es-es

¿Qué son el escalado y la reducción verticales?

Cuando se usa una sola instancia de un servicio, como una máquina virtual, es posible que haya que escalar el número de recursos que están disponibles para la instancia.

  • El escalado vertical es el proceso de aumentar la capacidad de una instancia determinada. Por ejemplo, para aumentar la capacidad de procesamiento, puede incrementar una máquina virtual de una vCPU y 3,5 GB de RAM a dos vCPU y 7 GB de RAM.
  • La reducción vertical es el proceso de disminuir la capacidad de una instancia determinada. Por ejemplo, puede reducir la capacidad de una máquina virtual de dos vCPU y 7 GB de RAM a una vCPU y 3,5 GB de RAM. De esta forma, se reduce la capacidad y el costo.

En la ilustración siguiente se muestra un ejemplo de cambio del tamaño de una máquina virtual.

azure exlencia operitiba
azure exlencia operitiba
 

AZURE MICROSFT

Echemos un vistazo a lo que implica escalar y reducir verticalmente en el contexto de los recursos de Azure:

  • En las máquinas virtuales de Azure, el escalado se realiza en función del tamaño de una máquina virtual. El tamaño de cada máquina virtual tiene asociada una determinada cantidad de vCPU, RAM y almacenamiento local. Por ejemplo, podríamos escalar desde una máquina virtual Standard_DS1_v2 (una vCPU y 3,5 GB de RAM) a una máquina virtual Standard_DS2_v2 (dos vCPU y 7 GB de RAM).
  • Azure SQL Database es una implementación de plataforma como servicio (PaaS) de Microsoft SQL Server. Puede escalar verticalmente una base de datos según el número de unidades de transacción de base de datos (DTU) o de vCPU. Las DTU son una abstracción de los recursos subyacentes y una combinación de CPU, E/S y memoria. Por ejemplo, podría escalar la base de datos en Azure SQL Database de un tamaño de P2 con 250 DTU hasta un P4 con 500 DTU para proporcionar a la base de datos un mayor rendimiento y capacidad.
  • Azure App Service es un servicio de hospedaje de sitios web de PaaS en Azure. Los sitios web se ejecutan en una granja de servidores virtuales, que también se conoce como plan de App Service. Puede escalar o reducir verticalmente el plan de App Service entre niveles. También tiene opciones de capacidad en esos niveles. Por ejemplo, un plan de App Service S1 tiene una vCPU y 1,75 GB de RAM por instancia. Se podría escalar verticalmente a un plan de App Service S2, que tiene dos vCPU y 3 GB de RAM por instancia.

Para escalar estos tipos de funcionalidades en un entorno local, normalmente hay que esperar a la adquisición y la instalación del hardware necesario para usar el nuevo nivel de escalado. En Azure, los recursos físicos ya están implementados y disponibles automáticamente. Basta con seleccionar el nivel alternativo de escalado que quiere usar.

Puede que tenga que valorar el impacto del escalado vertical en la solución. La decisión dependerá de los servicios en la nube que elija.

Por ejemplo, si decide escalar verticalmente en Azure SQL Database, el servicio se ocupa del escalado de los nodos individuales y permite que el servicio continúe en funcionamiento. Al cambiar el nivel de servicio o de rendimiento de una base de datos, se crea una réplica de la original en el nuevo nivel de rendimiento. Después, se cambian las conexiones a la réplica. Durante este proceso no se pierden datos. Solo hay una breve interrupción cuando el servicio cambia a la réplica. La interrupción suele ser inferior a cuatro segundos.

Como alternativa, si quiere escalar o reducir verticalmente una máquina virtual, puede hacerlo mediante la selección de un tamaño de instancia diferente. En la mayoría de los casos, si la máquina virtual ya se está ejecutando, se le pide que la reinicie. Teniendo esto en cuenta, cabe esperar que se requiera un reinicio cuando escale las máquinas virtuales. Tendrá que tener en cuenta esa eventualidad en el planeamiento.

Por último, siempre debería buscar lugares en los que reducir verticalmente sea una opción. Si la aplicación puede proporcionar un rendimiento adecuado en un plan de tarifa inferior, se podría reducir la factura de Azure.

¿Qué son el escalado y la reducción horizontales?

Ahora sabe que el escalado y la reducción verticales ajustan la cantidad de recursos que una única instancia tiene disponibles. El escalado y la reducción horizontales ajustan el número total de instancias.

  • El escalado horizontal es el proceso de agregar más instancias para admitir la carga de la solución. Por ejemplo, si los front-end del sitio web se hospedan en máquinas virtuales, se puede aumentar el número de máquinas virtuales en caso de que aumente el nivel de carga.
  • La reducción horizontal es el proceso de eliminar instancias que dejan de ser necesarias para admitir la carga de la solución. Si los front-end del sitio web se usan poco, conviene reducir el número de instancias para ahorrar costos.

En la siguiente ilustración se muestra un ejemplo de cambio del número de instancias de máquina virtual.

COMPÁRTELO Y DA ME GUSTA

Marco de arquitectura de Microsoft Azure: eficiencia del rendimiento

AZURE MISROST INTELIGIA ARFICIAL EN CLOND COPUNTING

Estos son algunos ejemplos de lo que implican el escalado y la reducción horizontales en el contexto de los recursos de Azure:

  • Para el nivel de infraestructura, probablemente usaría conjuntos de escalado de máquinas virtuales a fin de automatizar la incorporación y la eliminación de instancias adicionales.
    • Los conjuntos de escalado de máquinas virtuales permiten crear y administrar un grupo de máquinas virtuales idénticas, de carga equilibrada.
    • El número de instancias de máquina virtual puede aumentar o disminuir automáticamente según la demanda, o en respuesta a una programación definida.
  • En una implementación de Azure SQL Database, puede compartir la carga entre instancias de base de datos mediante el particionamiento. El particionamiento es una técnica para distribuir grandes cantidades de datos estructurados de manera idéntica entre una serie de bases de datos independientes.
  • En Azure App Service, el plan de App Service es la granja de servidores web virtuales que hospeda la aplicación. El escalado horizontal realizado de esta manera significa que aumentará el número de máquinas virtuales en la granja de servidores. Al igual que con los conjuntos de escalado de máquinas virtuales, el número de instancias puede aumentarse o reducirse automáticamente en respuesta a determinadas métricas o una programación.

El escalado horizontal se realiza fácilmente en Azure Portal, con herramientas de la línea de comandos o con plantillas de Azure Resource Manager. En la mayoría de los casos es un proceso sencillo para el usuario.

Escalabilidad automática

Puede configurar algunos de estos servicios para usar una característica denominada escalabilidad automática. Con la escalabilidad automática, ya no tiene que preocuparse de escalar servicios manualmente. En su lugar, puede establecer un umbral mínimo y máximo de instancias. Puede realizar el escalado en función de métricas específicas, como la longitud de la cola o el uso de la CPU. También puede llevarlo a cabo en función de programaciones. Un ejemplo es el día de la semana, entre las 17:00 y las 19:00. En la siguiente ilustración se muestra la forma en que la función de escalabilidad automática administra las instancias para controlar la carga.

Ilustración que muestra cómo la escalabilidad automática supervisa los niveles de CPU de un grupo de máquinas virtuales y agrega instancias cuando supera el umbral.

Consideraciones al escalar y reducir horizontalmente

Cuando se escala horizontalmente, el tiempo de inicio de la aplicación puede afectar a la rapidez de escalado de la aplicación. Si la aplicación web tarda dos minutos en iniciarse y estar disponible para los usuarios, cada una de las instancias tardará dos minutos en estar disponible para los usuarios. Debe tener en cuenta esta hora de inicio cuando determine la rapidez con la que quiere realizar el escalado.

También debe pensar en cómo la aplicación controla el estado. Cuando la aplicación se reduce horizontalmente, se perderán todos los estados almacenados en la instancia que se quiten del entorno. Si un usuario se conecta a una instancia que no tiene su estado, la aplicación podría obligarle a iniciar sesión o a volver a seleccionar los datos. El resultado es una experiencia de usuario deficiente. Un patrón común consiste en externalizar el estado a otro servicio, como Azure Cache for Redis o SQL Database, lo que deja a los servidores web sin estado. Ahora que los front-end web están sin estado, no hay que preocuparse por las instancias individuales disponibles. Todas realizan el mismo trabajo y están implementadas de la misma forma.

Limitaciones

Hemos establecido que la carga en una aplicación varía con el tiempo. Esta variación puede deberse al número de usuarios activos o simultáneos y a las actividades que se están realizando. Puede usar el escalado automático para agregar capacidad. Pero también puede aplicar un mecanismo para limitar el número de solicitudes de un origen. Se pueden proteger los límites de rendimiento estableciendo limitaciones conocidas en el nivel de aplicación. De este modo, evitará que la aplicación se interrumpa. La limitación se usa con más frecuencia en las aplicaciones que exponen puntos de conexión de API.

Una vez que la aplicación ha identificado que va a superar un límite, la limitación podría iniciarse para garantizar que no se infringe el Acuerdo de Nivel de Servicio global del sistema. Por ejemplo, si expone una API para que los clientes obtengan datos, podría limitar el número de solicitudes a 100 por minuto. Si un cliente supera este límite, podría responder con un código de estado HTTP 429 e incluir el tiempo de espera antes de que otra solicitud se envíe correctamente.

Informática sin servidor

La informática sin servidor proporciona un entorno de ejecución hospedado en la nube que ejecuta las aplicaciones, pero abstrae por completo el entorno subyacente. Se crea una instancia del servicio y se agrega el código. No se requiere, ni siquiera se permite, ningún mantenimiento ni administración de la infraestructura.

Las aplicaciones sin servidor se configuran para responder a eventos. Un evento puede ser un punto de conexión REST, un temporizador o un mensaje recibido de otro servicio de Azure. La aplicación sin servidor se ejecuta solo cuando la desencadena un evento.

Cuando trabaja con aplicaciones sin servidor, la infraestructura no es su responsabilidad. El escalado y el rendimiento se controlan automáticamente. Solo se le facturarán los recursos que use. No es necesario reservar capacidad. Azure Functions, Azure Container Instances y Azure Logic Apps son ejemplos de informática sin servidor disponibles en Azure.

Contenedores

Un contenedor es un método de ejecución de aplicaciones en un entorno virtualizado. Las máquinas virtuales se virtualizan en el nivel de hardware, donde un hipervisor permite ejecutar varios sistemas operativos virtualizados en un único servidor físico. Los contenedores suben la virtualización un nivel. La virtualización se realiza en el nivel de sistema operativo, lo que permite ejecutar varias instancias de aplicación idénticas en el mismo sistema operativo.

Los contenedores son ligeros y adecuados para escenarios de escalado horizontal. Se han diseñado para que se creen, se escalen horizontalmente y se detengan dinámicamente cuando el entorno y la demanda cambien. Otra ventaja del uso de contenedores es la capacidad de ejecutar varias aplicaciones aisladas en cada máquina virtual. Dado que los contenedores están protegidos y aislados en el nivel de kernel, no es estrictamente necesario separar las máquinas virtuales para cargas de trabajo independientes.

Aunque puede ejecutar contenedores en máquinas virtuales, hay un par de servicios de Azure que se centran en facilitar la administración y el escalado de contenedores:

  • Azure Kubernetes Service (AKS)Gracias a Azure Kubernetes Service, se pueden configurar las máquinas virtuales para que actúen como nodos. Azure hospeda el plano de administración de Kubernetes. Solo se le cobra por los nodos de trabajo en ejecución que hospedan los contenedores.Para aumentar el número de nodos de trabajo en Azure, se puede usar la CLI de Azure para hacerlo manualmente. En el momento de redactar este documento, está disponible una versión preliminar del escalador automático de clústeres en AKS. Habilita el escalado automático de los nodos de trabajo. En el clúster de Kubernetes, puede usar el escalador automático horizontal de pod para escalar horizontalmente el número de instancias del contenedor que se va a implementar.AKS también puede escalarse con Virtual Kubelet, que se describe en la sección siguiente.
  • Azure Container InstancesAzure Container Instances es un enfoque sin servidor que permite crear y ejecutar contenedores a petición. Se le cobrará solo por el tiempo de ejecución por segundo.Puede usar Virtual Kubelet para conectarse a Azure Container Instances en el entorno de Kubernetes, que incluye AKS. Gracias a Virtual Kubelet, cuando el clúster de Kubernetes demanda instancias de contenedor adicionales, se pueden cumplir esas demandas desde Container Instances. Puesto que Container Instances funciona sin servidor, no hay ninguna necesidad de tener capacidad reservada. Se pueden aprovechar las ventajas del control y la flexibilidad del escalado de Kubernetes con la facturación por segundo del enfoque sin servidor. En el momento de escribir este artículo, Virtual Kubelet se describe como software experimental y no debe usarse en escenarios de producción.

Comprobación de conocimientos

1.

¿Cuál es la descripción más exacta del escalado horizontal?

Aumentar la cantidad de recursos asignados a una instancia.

Aumentar el número de instancias que atienden las solicitudes.

Agregar almacenamiento adicional a una máquina virtual.

Alcanzar el nivel máximo de escala para su aplicación. 2.

¿Cuál es la descripción más exacta de reducción vertical?

Disminuir el número de instancias que atienden las solicitudes.

Tomar la propiedad de cómo se escala la aplicación.

Disminuir la cantidad de recursos asignados a una instancia.

Permanecer por debajo del nivel máximo de escala de la aplicación 3.

¿Cuál de los siguientes aspectos no se tiene en cuenta al crear una estrategia de escalado en la aplicación?

Directivas de retención de copia de seguridad de las instancias

Administración del estado de la aplicación

Tiempo de inicio de las instancias

La automatización del escalado de las instancias en función de una métrica o programación Comprobar las respuestas

Debe responder todas las preguntas antes de comprobar su trabajo.


COMPARTELO

Back to top