COST09-BP03 Aprovisionar recursos de forma dinámica
Los recursos se aprovisionan de manera planificada. Esto puede basarse en la demanda (por ejemplo, mediante el escalamiento automático) o en el tiempo, donde la demanda es predecible y los recursos se proporcionan en función del tiempo. Estos métodos conllevan la menor cantidad de aprovisionamiento excesivo o insuficiente.
Nivel de riesgo expuesto si no se establece esta práctica recomendada: Bajo
Guía para la implementación
Hay varias formas en que los clientes de AWS pueden aumentar los recursos disponibles para sus aplicaciones y suministrar recursos para satisfacer la demanda. Una de estas opciones es usar AWS Instance Scheduler, que automatiza el inicio y la parada de las instancias de Amazon Elastic Compute Cloud (Amazon EC2) y Amazon Relational Database Service (Amazon RDS). La otra opción es usar AWS Auto Scaling, lo que le permite escalar automáticamente los recursos de computación en función de la demanda de la aplicación o servicio. Suministrar recursos en función de la demanda le permitirá pagar únicamente por los recursos que utilice y reducir los costes, ya que solo lanza los recursos cuando se necesitan y los cancela cuando no.
AWS Instance Scheduler
También puede configurar fácilmente los horarios de sus instancias de Amazon EC2 en todas sus cuentas y regiones con una interfaz de usuario (IU) sencilla mediante la configuración rápida de AWS Systems Manager. Puede programar instancias de Amazon EC2 o Amazon RDS con AWS Instance Scheduler y detener e iniciar las instancias existentes. Sin embargo, no puede detener ni iniciar instancias que formen parte de su grupo de Auto Scaling (ASG) o que administren servicios como Amazon Redshift o Amazon OpenSearch Service. Los grupos de Auto Scaling tienen su propia programación para las instancias del grupo y la creación de estas instancias.
AWS Auto Scaling
Hay varias opciones de escalamiento disponibles para escalar su grupo de Auto Scaling:
-
Mantener siempre los niveles de instancia actuales
-
Escalar manualmente
-
Escalar en función de una programación
-
Escalar en función de la demanda
-
Usar el escalamiento predictivo
Existen diferentes políticas de Auto Scaling. Se pueden clasificar en políticas de escalamiento dinámicas y programadas. Las políticas dinámicas son escalamientos manuales o dinámicos, que pueden ser programados o predictivos. Puede utilizar políticas de escalamiento para un escalamiento dinámico, programado y predictivo. También puede usar las métricas y las alarmas de Amazon CloudWatch
Puede usar AWS Auto Scaling o incorporar el escalamiento en su código con las API o SDK de AWS
Elastic Load Balancing (Elastic Load Balancing)
Las métricas habituales pueden ser métricas de Amazon EC2 estándar, como el uso de la CPU, el rendimiento de la red y la latencia de solicitud y respuesta observada de Elastic Load Balancing. Si es posible, debe usar una métrica indicativa de la experiencia del cliente. Suele ser una métrica personalizada que se puede originar en el código de la aplicación en la carga de trabajo. Para explicar cómo satisfacer la demanda de forma dinámica, vamos a agrupar Auto Scaling en dos categorías, modelos de suministro basados en la demanda y modelos de suministro basados en el tiempo, y analizaremos en profundidad cada una de ellas.
Suministro basado en la demanda: aproveche la elasticidad de la nube para suministrar recursos que satisfagan los cambios en la demanda utilizando el estado de la demanda casi en tiempo real. Para el suministro basado en la demanda, utilice las API o las características del servicio para cambiar mediante programación la cantidad de recursos en la nube de su arquitectura. De esta forma, puede escalar componentes en su arquitectura y aumentar la cantidad de recursos durante los picos de demanda para mantener el rendimiento, así como disminuir la capacidad cuando la demanda disminuya para reducir los costes.
-
Escalamiento simple/escalonado: monitoriza las métricas y añade o elimina instancias de acuerdo con los pasos definidos manualmente por los clientes.
-
Seguimiento de objetivos: mecanismo de control similar a un termostato que añade o elimina instancias automáticamente para mantener las métricas en un objetivo definido por el cliente.
Al diseñar con un enfoque basado en la demanda, tenga en cuenta dos consideraciones clave. La primera: debe conocer la rapidez con la que necesita aprovisionar recursos nuevos. La segunda: tenga en cuenta que el tamaño del margen entre la oferta y la demanda cambiará. Debe estar preparado para poder hacer frente a la velocidad del cambio en la demanda y también a los errores de recursos.
Suministro basado en el tiempo: el enfoque basado en el tiempo adapta la capacidad de los recursos a una demanda que es predecible o que está bien definida por el tiempo. Normalmente, este enfoque no depende de los niveles de utilización de los recursos. El enfoque basado en tiempo garantiza que los recursos estén disponibles en el momento específico en que se necesiten y que se puedan proporcionar sin retrasos debidos a los procedimientos de inicio y comprobaciones del sistema o de coherencia. Con el enfoque basado en tiempo, puede brindar recursos adicionales o aumentar la capacidad durante los periodos de mayor actividad.
Puede utilizar el escalamiento automático programado o predictivo para implementar un enfoque basado en el tiempo. Las cargas de trabajo se pueden programar para escalarse o desescalarse horizontalmente en momentos definidos (como el inicio del horario laboral). De este modo, los recursos están disponibles cuando lleguen los usuarios o aumente la demanda. El escalamiento predictivo utiliza patrones para escalar horizontalmente, mientras que el escalamiento programado utiliza tiempos predefinidos para escalar horizontalmente. También puede utilizar la estrategia de selección de tipos de instancias (ABS) basada en atributos en grupos de Auto Scaling, lo que permite expresar los requisitos de la instancia como un conjunto de atributos, como la vCPU, la memoria y el almacenamiento. De este modo, también puede utilizar automáticamente los tipos de instancia de nueva generación cuando se lancen y acceder a una gama más amplia de capacidad con las instancias de spot de Amazon EC2. La flota de Amazon EC2 y Amazon EC2 Auto Scaling seleccionan y lanzan instancias que se ajusten a los atributos especificados, por lo que no es necesario elegir manualmente los tipos de instancia.
También puede utilizar las API y los SDK de AWS
Al diseñar con un enfoque basado en tiempo, tenga en cuenta dos consideraciones clave. La primera: ¿qué grado de consistencia presenta el patrón? La segunda: ¿en qué afectaría el patrón si cambiara? Puede aumentar la precisión de las predicciones mediante la supervisión de sus cargas de trabajo y el uso de la inteligencia empresarial. Si observa cambios considerables en el patrón de uso, puede ajustar los tiempos para asegurarse de que se proporcione cobertura.
Pasos para la implementación
-
Configure el escalamiento programado: en caso de cambios predecibles en la demanda, el escalamiento basado en el tiempo puede proporcionar el número correcto de recursos de manera oportuna. También es útil si la creación y configuración de recursos no es suficientemente rápida a la hora de responder a los cambios en la demanda. Use el análisis de las cargas de trabajo para configurar el escalamiento programado con AWS Auto Scaling. Para configurar la programación en función del tiempo, puede utilizar el escalamiento predictivo del escalamiento programado para aumentar por adelantado el número de instancias de Amazon EC2 de sus grupos de Auto Scaling en función de los cambios de carga previstos o predecibles.
-
Configure el escalamiento predictivo: el escalamiento predictivo le permite aumentar el número de instancias de Amazon EC2 de su grupo de Auto Scaling según la previsión de los patrones diarios y semanales de los flujos de tráfico. Si tiene picos de tráfico regulares y aplicaciones que tardan mucho en iniciarse, debería plantearse el uso del escalamiento predictivo. El escalamiento predictivo puede ayudarle a escalar más rápidamente mediante la inicialización de la capacidad antes de la carga prevista si se compara con el escalamiento dinámico únicamente, que es de naturaleza reactiva. Por ejemplo, si los usuarios empiezan a utilizar su carga de trabajo con el inicio del horario laboral y no la utilizan fuera de dicho horario, el escalamiento predictivo puede añadir capacidad antes del horario laboral, lo que elimina el retraso del escalamiento dinámico para reaccionar ante los cambios en el tráfico.
-
Configure el escalamiento automático dinámico: para configurar el escalamiento en función de las métricas de las cargas de trabajo activas, utilice Auto Scaling. Use los análisis y configure Auto Scaling para que se lance en los niveles de recursos correctos y verifique que la carga de trabajo se escala en el tiempo requerido. Puede lanzar y escalar automáticamente una flota de instancias bajo demanda e instancias de spot en un mismo grupo de Auto Scaling. Además de beneficiarse de descuentos por utilizar instancias de spot, puede usar las instancias reservadas o un Savings Plan para obtener descuentos en los precios habituales de las instancias bajo demanda. Todos estos factores combinados le ayudarán a optimizar el ahorro de costes de las instancias de Amazon EC2 y a obtener la escala y el rendimiento que desea para su aplicación.
Recursos
Documentos relacionados:
-
Escalar el tamaño de su grupo de Auto Scaling
-
Getting Started with Amazon EC2 Auto Scaling (Introducción a Amazon EC2 Auto Scaling)
-
Scheduled Scaling for Amazon EC2 Auto Scaling (Escalamiento programado para Amazon EC2 Auto Scaling)
Vídeos relacionados:
Ejemplos relacionados: