Patrones comunes de escalado automático
En esta unidad se examinan patrones de escalado automático.
El escalado automático no es una solución instantánea. Simplemente agregar recursos a un sistema o ejecutar más instancias de un proceso no garantiza un rendimiento mejorado para el sistema. Tenga en cuenta lo siguiente a la hora de diseñar una estrategia de escalado automático:
Recomendaciones
Identifique cuellos de botella: el escalado horizontal no es una solución mágica para todos los problemas de rendimiento. Por ejemplo, si la base de datos de back-end es el cuello de botella, no ayuda a agregar más servidores web. Identifique y resuelva los cuellos de botella del sistema antes de lanzar más instancias al problema. Los elementos con estado del sistema son la causa más probable de los cuellos de botella.
Desglose las cargas de trabajo según los requisitos de escalabilidad: a menudo, las aplicaciones constan de varias cargas de trabajo, con diferentes requisitos para el escalado. Por ejemplo, una aplicación podría tener un sitio orientado al público y un sitio de administración independiente. El sitio público puede experimentar picos repentinos en el tráfico, mientras que el sitio de administración tiene una carga más pequeña y predecible.
Descarga de tareas que consumen muchos recursos: Las tareas que requieren muchos recursos de CPU o E/S deben moverse a trabajos en segundo plano siempre que sea posible. La descarga de tareas minimiza la carga en el front-end que controla las solicitudes de usuario.
Use características de escalado automático integrado: si la aplicación tiene una carga de trabajo predecible y regular, aplique el escalado horizontal según una programación. Por ejemplo, escale horizontalmente durante el horario laboral. De lo contrario, si la carga de trabajo no es predecible, use métricas de rendimiento, como CPU o longitud de la cola de solicitudes, para desencadenar el escalado automático.
Aplique un escalado automático agresivo para las cargas de trabajo críticas: en el caso de las cargas de trabajo críticas, debe adelantarse a la demanda. Es mejor agregar nuevas instancias rápidamente en caso de mucha carga para controlar el otro tráfico, y luego volver a escalar gradualmente.
Diseño para el escalado en: Recuerde que, con la escala elástica, la aplicación tiene períodos de escalado, cuando se quitan las instancias. La aplicación debe administrar correctamente las instancias que se quitan. Estas son algunas maneras de controlar la reducción horizontal:
- Escuche los eventos de apagado cuando estén disponibles y cierre de forma limpia.
- Admite el control de errores transitorios y el reintento.
- Considere la posibilidad de dividir el trabajo para tareas de larga duración.
- Coloque los elementos de trabajo en una cola para que otra instancia puede recoger el trabajo, en caso de que se quite una instancia en medio de procesamiento.
Notificaciones
- Todos los errores de escalado automático se registran en el registro de actividad. Después, puede configurar una alerta de registro de actividad que le notifique por correo electrónico, Servicio de mensajes cortos (SMS) o webhooks siempre que se produzca un error de escalado automático.
- De forma similar, todas las acciones de escalado correctas se publican en el registro de actividad. Después puede configurar una alerta del registro de actividad para recibir una notificación por correo electrónico, SMS o webhook cuando haya una acción de escalabilidad automática correcta. También puede configurar notificaciones por correo electrónico o de webhook para recibir una notificación cada vez que se lleve a cabo una acción de escalado correcta a través de la pestaña Notificaciones de la configuración de escalabilidad automática.
Patrones comunes para escalar el recurso en Azure
Escalado basado en la demanda
Puede escalar horizontalmente de forma automática el número de instancias de servicio al inicio del día laboral cuando aumente la demanda del cliente. Al final del día laboral reduzca horizontalmente de forma automática el número de instancias de aplicación para minimizar los costos de recursos durante la noche mientras el uso de aplicaciones es bajo.
Escalado distinto entre los días de la semana y los fines de semana
En una noche o fin de semana, es posible que tenga una menor demanda de aplicaciones. Si esta carga es coherente durante un período de tiempo, puede configurar reglas de escalabilidad automática para reducir el número de instancias de servicio del conjunto de escalado. Al realizar esta acción de reducción horizontal, se reduce el costo de ejecutar el conjunto de escalado porque solo se ejecuta el número de instancias necesarias para satisfacer la demanda actual.
Escalado distinto durante festividades
Si se usa mucho un servicio en determinados días del mes o del ciclo fiscal, puede escalar automáticamente el número de instancias de servicio para adaptarse a sus demandas adicionales. Si hay un evento de marketing, una promoción o rebajas, puede escalar automáticamente el número de instancias de servicio con anterioridad a la demanda esperada del cliente.
Escalado en función de métricas personalizadas
Por último, es mejor definir cuidadosamente las reglas de escalado automático. Por ejemplo, es probable que un ataque por denegación de servicio (DoS) produzca una entrada a gran escala del tráfico entrante. Intentar controlar un aumento repentino de las solicitudes provocado por un ataque por denegación de servicio sería costoso e infructuoso. Estas solicitudes no son auténticas, por lo que se deben descartar sin procesarlas. Una solución mejor consiste en implementar la detección y el filtrado de las solicitudes que se producen durante este tipo de ataque antes de que lleguen al servicio.
Después de configurar las reglas de escalado automático, supervise el rendimiento de la aplicación con el tiempo. Use los resultados de esta supervisión para ajustar el patrón en el que el sistema escala en caso necesario.