COST09-BP03 Aprovisionar recursos de forma dinámica - Pilar de optimización de costos

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 le permite configurar la detención y el inicio de sus instancias de Amazon EC2 y Amazon RDS en momentos definidos para que pueda satisfacer la demanda de los mismos recursos según un patrón temporal coherente; por ejemplo, que todos los días los usuarios accedan a las ocho de la mañana a instancias de Amazon EC2 que no se necesitan después de las seis de la tarde. Esta solución contribuye a reducir los costes operativos, ya que se detienen los recursos que no están en uso y se ponen en marcha cuando se necesitan.


        Diagrama que muestra la optimización de costes mediante AWS Instance Scheduler.

Optimización de costes con 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 le ayuda a ajustar la capacidad para mantener un rendimiento predecible y estable al menor coste posible para satisfacer los cambios en la demanda. Es un servicio totalmente administrado y gratuito para escalar la capacidad de su aplicación, que se integra con las instancias y las flotas de spot de Amazon EC2, Amazon ECS, Amazon DynamoDB y Amazon Aurora. Auto Scaling detecta los recursos automáticamente, lo que le ayuda a buscar recursos en su carga de trabajo que se pueden configurar. Además, tiene estrategias de escalamiento integradas para optimizar el rendimiento y los costes, o un equilibrio entre ambos, y proporciona escalamiento predictivo para ayudar en los picos que se producen periódicamente.

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 para desencadenar eventos de escalamiento para la carga de trabajo. Le recomendamos que utilice plantillas de lanzamiento, que permiten acceder a las características y mejoras más recientes. No todas las características de Auto Scaling están disponibles cuando se utilizan configuraciones de lanzamiento. Por ejemplo, no puede crear un grupo de Auto Scaling que lance instancias de spot y bajo demanda o que especifique varios tipos de instancias. Debe utilizar una plantilla de lanzamiento para configurar estas características. Cuando utilice plantillas de lanzamiento, le recomendamos que realice un control de versiones en cada una de ellas. Con el control de versiones de las plantillas de lanzamiento, puede crear un subconjunto del conjunto completo de parámetros. Luego, puede volver a utilizarlo para crear otras versiones de la misma plantilla de lanzamiento.

Puede usar AWS Auto Scaling o incorporar el escalamiento en su código con las API o SDK de AWS. Esto reduce los costes generales de la carga de trabajo al eliminar el coste operativo de realizar los cambios manualmente en su entorno. Además, los cambios se pueden realizar mucho más rápido. De este modo, también se adapta la dotación de recursos de la carga de trabajo a su demanda en cualquier momento. Para seguir esta práctica recomendada y suministrar recursos de forma dinámica a su organización, debe comprender el escalamiento horizontal y vertical en la Nube de AWS, así como la naturaleza de las aplicaciones que se ejecutan en las instancias de Amazon EC2. Es mejor que su equipo de administración financiera en la nube colabore con los equipos técnicos para seguir esta práctica recomendada.

Elastic Load Balancing (Elastic Load Balancing) le ayuda a escalar mediante la distribución de la demanda entre múltiples recursos. Con ASG y Elastic Load Balancing, puede administrar las solicitudes entrantes mediante el enrutamiento óptimo del tráfico para que ninguna instancia se sobrecargue en un grupo de Auto Scaling. Las solicitudes se distribuirían entre todos los destinatarios de un grupo objetivo por turnos, sin tener en cuenta la capacidad ni la utilización.

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.


        Diagrama que describe las políticas de escalamiento basadas en la demanda, como el escalamiento simple/escalonado y el seguimiento de objetivos.

Políticas de escalamiento dinámico basadas en la demanda

  • 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.


        Diagrama que describe las políticas de escalamiento basadas en el tiempo, como el escalamiento programado y predictivo.

Políticas de escalamiento basadas en el tiempo

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 y AWS CloudFormation para aprovisionar y retirar entornos completos de manera automática según sus necesidades. Este enfoque es ideal para los entornos de desarrollo o pruebas que se ejecutan únicamente en horarios laborales o periodos definidos. Puede usar API para escalar el tamaño de los recursos dentro de un entorno (escalado vertical). Por ejemplo, puede escalar verticalmente una carga de trabajo de producción mediante el cambio del tamaño o la clase de instancia. Para ello, hay que detener o iniciar la instancia y seleccionar el tamaño o la clase de instancia diferente. Esta técnica también se puede aplicar a otros recursos, tales como los volúmenes elásticos de Amazon EBS, los cuales se pueden modificar para aumentar el tamaño, ajustar el rendimiento (IOPS) o cambiar el tipo de volumen mientras están en uso.

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:

Vídeos relacionados:

Ejemplos relacionados: