Diseño para el escalado
La escalabilidad es la capacidad de un sistema para controlar el aumento de la carga. Los servicios que abarca Escalabilidad automática de Azure se pueden escalar automáticamente para ajustarse a la demanda y acomodar la carga de trabajo. Estos servicios se escalan horizontalmente para garantizar la capacidad durante los picos de carga de trabajo y vuelven a la normalidad automáticamente cuando el pico cae.
Para lograr la eficacia del rendimiento, considere cómo se escala el diseño de la aplicación e implemente las ofertas de PaaS que tienen operaciones de escalado integradas.
Entre las dos formas principales de escalar una aplicación se incluyen el escalado vertical y el escalado horizontal. El escalado vertical implica el aumento de la capacidad de un recurso, por ejemplo mediante el uso de una máquina virtual (VM) de mayor tamaño. El escalado horizontal consiste en agregar nuevas instancias de un recurso, como máquinas virtuales o réplicas de base de datos.
El escalado horizontal aporta ventajas considerables sobre el escalado vertical, como, por ejemplo, las siguientes:
- Escala de nube verdadera: las aplicaciones se diseñan para ejecutarse en cientos, o incluso miles, de nodos, con lo que se alcanzan escalas que no son posibles en un solo nodo.
- La escala horizontal es elástica: puede agregar más instancias si aumenta la carga o quitar instancias durante períodos más tranquilos.
- El escalado horizontal se puede activar automáticamente, según una programación o en respuesta a cambios en la carga.
- El escalado horizontal puede ser más económico que el escalado vertical. La ejecución de varias máquinas virtuales pequeñas puede costar menos que una sola máquina virtual grande.
- El escalado horizontal también puede mejorar la resistencia, ya que agrega redundancia. Si una instancia se queda inactiva, la aplicación sigue funcionando.
Una ventaja del escalado vertical es que puede llevarlo a cabo sin necesidad de efectuar cambios en la aplicación. Sin embargo, en algún momento alcanzará un límite en el que no podrá realizar más escalado vertical. En ese momento, cualquier escalado habrá de ser horizontal.
El escalado horizontal debe estar diseñado en el sistema. Por ejemplo, puede escalar horizontalmente las máquinas virtuales colocándolas detrás de un equilibrador de carga. Sin embargo, cada máquina virtual del grupo debe controlar las solicitudes de cliente, por lo que la aplicación debe ser sin estado o almacenar el estado externamente (por ejemplo, en una memoria caché distribuida). Los servicios PaaS administrados a menudo tienen el escalado horizontal y el escalado automático integrados. La facilidad del escalado en estos servicios es una importante ventaja a la hora de usar los servicios de PaaS.
Sin embargo, el mero hecho de agregar más instancias no implicará el escalado de una aplicación. Quizá traslade el cuello de botella a alguna otra parte. Por ejemplo, si escala un front-end web para controlar más solicitudes de cliente, se podrían desencadenar contenciones de bloqueo en la base de datos. Le interesaría considerar la posibilidad de tomar otras medidas, como la simultaneidad optimista o la partición de datos, para habilitar el mejor rendimiento de la base de datos.
Realice siempre pruebas de carga y rendimiento para detectar estos posibles cuellos de botella. Los elementos con estado de un sistema, como las bases de datos, son la causa más común de los cuellos de botella, y requieren un cuidadoso diseño para su escalado horizontal. La resolución de un cuello de botella puede revelar otros cuellos de botella en otros lugares.
Use la lista de comprobación de eficiencia de rendimiento para revisar el diseño desde el punto de vista de la escalabilidad.
En la nube, la capacidad de aprovechar la escalabilidad depende de la infraestructura y los servicios. Las plataformas, como Kubernetes, se crearon pensando en el escalado. Las máquinas virtuales no pueden escalarse con facilidad, aunque es posible hacerlo. Con las máquinas virtuales, puede que desee realizar el planeamiento con anterioridad para evitar el escalado de la infraestructura en el futuro para satisfacer la demanda. Otra opción consiste en seleccionar una plataforma diferente como Azure Virtual Machine Scale Sets.
Al usar la escalabilidad, puede predecir el promedio actual y las horas punta de la carga de trabajo. Las opciones del plan de pago le permiten administrar esta predicción. El usuario paga por minutos o por horas según el servicio durante un período de tiempo elegido.
Planeamiento del crecimiento
Para empezar a planear el crecimiento, se deben comprender las cargas de trabajo actuales, lo que puede ayudarle a prever las necesidades de escalado en función de los escenarios de uso predictivos. Un ejemplo de escenario de uso predictivo es un sitio de comercio electrónico que reconoce que su infraestructura debe escalarse adecuadamente para un alto volumen de tráfico esperado en festivos.
Realice pruebas de carga y de esfuerzo para determinar la infraestructura necesaria para admitir los picos previstos en las cargas de trabajo. Un buen plan incluye la incorporación de un búfer para acomodar picos aleatorios.
Para obtener más información sobre cómo determinar los límites superior y máximo de la capacidad de una aplicación, consulte Pruebas de rendimiento en el pilar de eficiencia del rendimiento.
Otro componente importante de la planeación de la escala es garantizar que la región que hospeda la aplicación admite la capacidad necesaria para acomodar el aumento de la carga. Si usa una arquitectura de varias regiones, asegúrese de que las regiones secundarias también pueden admitir el aumento. Una región puede ofrecer el producto, pero es posible que no admita el aumento de la carga previsto sin las SKU (referencias de almacén) necesarias, por lo que debe comprobar la capacidad.
Para comprobar la región y las SKU disponibles, seleccione primero el producto y las regiones en Productos disponibles por región.

A continuación, compruebe las SKU disponibles en Azure Portal.
Adición de unidades de escalado
Para cada recurso, conozca los límites de escalado superiores y utilice el particionamiento o la descomposición para traspasar estos límites. Diseñe la aplicación para que se escale fácilmente agregando una o varias unidades de escalado, por ejemplo, mediante el patrón de marcas de implementación. Determine las unidades de escalado del sistema para conjuntos de recursos bien definidos.
El paso siguiente podría ser usar herramientas o características de escalado integradas para comprender qué recursos deben escalarse simultáneamente con otros recursos. Por ejemplo, la incorporación de un número X de máquinas virtuales de front-end podría requerir un número Y de colas adicionales y un número Z de cuentas de almacenamiento para administrar la carga de trabajo adicional. Por lo tanto, una unidad de escalado podría estar formada por un número X de instancias de máquinas virtuales, un número Y de colas y un número Z de cuentas de almacenamiento.
Uso del escalado automático para administrar los aumentos y las disminuciones de la carga
El escalado automático permite ejecutar la cantidad adecuada de recursos para controlar la carga de la aplicación. Agrega recursos (lo que se conoce como "escalado horizontal") para controlar un aumento de la carga, como sucede con las cargas de trabajo estacionales. El escalado automático permite ahorra dinero gracias a la eliminación de recursos inactivos (lo que se conoce como "reducción horizontal") durante una disminución de la carga, como por las noches y los fines de semana para algunas aplicaciones corporativas.
Realice el escalado automáticamente entre el número mínimo y máximo de instancias que se van a ejecutar, y agregue o quite VM automáticamente en función de un conjunto de reglas.

Para más información, consulte Escalado automático.
Descripción de los objetivos de escala
Las operaciones de escalado (horizontal, que cambia el número de instancias idénticas, vertical, que cambia a instancias más o menos eficaces) pueden ser rápidas, pero normalmente tardan tiempo en realizarse. Es importante comprender cómo afecta este retraso a la aplicación que se carga y si el rendimiento degradado es aceptable.
Para obtener más información, consulte Procedimientos recomendados de escalabilidad automática.
Uso de las características de escalado automático de la plataforma
A continuación se muestra cómo aprovechar las características de escalado automático:
- Use las características de escalado automático integradas siempre que sea posible, en lugar de mecanismos personalizados o de terceros.
- Use reglas de escalado programadas siempre que sea posible para asegurarse de que los recursos están disponibles.
- Agregue escalado automático reactivo a las reglas cuando sea necesario para hacer frente a cambios inesperados en la demanda.
Nota
Si la aplicación se ha diseñado explícitamente para controlar la terminación de algunas de sus instancias, asegúrese de usar el escalado automático para reducir verticalmente y horizontalmente los recursos que ya no son necesarios para que la carga especificada reduzca los costos operativos.
Para obtener más información, consulte Escalabilidad automática.
Escalado automático de aplicaciones con un uso intensivo de CPU o memoria
Las aplicaciones con un uso intensivo de CPU o memoria requieren el escalado vertical a una SKU de máquina mayor con más CPU o memoria. Una vez que ha reducido la demanda de CPU o memoria, las instancias se pueden revertir a la instancia original.
Por ejemplo, puede tener una aplicación que procese imágenes, vídeos o música. Dado el proceso y los requisitos, puede tener sentido escalar verticalmente un servidor agregando CPU o memoria para procesar rápidamente archivos multimedia grandes. Aunque el escalado horizontal permite que el sistema procese más archivos simultáneamente, no afectará a la velocidad de procesamiento de cada archivo individual.
Escalabilidad automática con los servicios de proceso de Azure
El escalado automático funciona recopilando métricas para el recurso (uso de CPU y memoria) y para la aplicación (solicitudes en cola y solicitudes por segundo). Después, se pueden crear reglas para agregar o quitar instancias en función de cómo se haya evaluado la regla. Un plan de aplicación de App Services permite establecer reglas de escalabilidad automática para el escalado y la reducción horizontal, así como para el escalado y la reducción vertical. El escalado también se aplica a Azure Automation.
El ejemplo de escalado automático del servicio de aplicaciones muestra cómo crear un plan de Azure App Service que incluye una instancia de Azure App Service.
Azure Kubernetes Service (AKS) ofrece dos niveles de escalabilidad automática:
- Escalabilidad automática horizontal: se puede habilitar en los contenedores de servicio para agregar más o menos instancias de pod dentro del clúster.
- Escalabilidad automática de clústeres: se puede habilitar en las instancias de la VM del agente que ejecutan un grupo de nodos de agente para agregar o quitar instancias de VM dinámicamente.
Entre otros servicios de Azure, se incluyen los siguientes:
- Azure Service Fabric: los conjuntos de escalado de máquinas virtuales ofrecen funcionalidades de escalabilidad automática para escenarios reales de IaaS.
- Azure App Gateway y Azure API Management: ofertas de PaaS para los servicios de entrada que permiten la escalabilidad automática.
- Azure Functions, Azure Logic Apps y App Services: modelado de consumo de pago por uso sin servidor que proporciona funcionalidades de escalado automático intrínsecamente.
- Azure SQL Database: plataforma de PaaS para cambiar las características de rendimiento de una base de datos sobre la marcha y asignar más recursos cuando sean necesarios o liberarlos cuando ya no se necesiten. Permite las funcionalidades de escalado o reducción vertical, escalado horizontal de lectura y particionamiento o escalabilidad horizontal global.
Cada servicio documenta sus funcionalidades de escalabilidad automática. Consulte la Información general sobre el escalado automático para obtener una explicación general sobre la escalabilidad automática de la plataforma Azure.
Nota
Si su aplicación no tiene la capacidad de escalabilidad automática integrada, o no está configurada para el escalado horizontal automático a medida que aumenta la carga, es posible que se produzca un error en los servicios de la aplicación si se saturan con las solicitudes de los usuarios. Consulte Azure Automation para ver las posibles soluciones.