COST09-BP03 Suministro dinámico de recursos - Pilar de optimización de costos

COST09-BP03 Suministro dinámico de recursos

Los recursos se aprovisionan de manera planificada. Esto puede basarse en la demanda (por ejemplo, mediante el escalado 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 consiste en utilizar AWS Instance Scheduler, que automatiza el inicio y la detención de instancias de Amazon Elastic Compute Cloud (Amazon EC2) y de Amazon Relational Database Service (Amazon RDS). La otra opción es usar AWS Auto Scaling, 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 costos, 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 costos operativos, ya que se detienen los recursos que no están en uso y se ponen en marcha cuando se necesitan.

Diagrama en el que se muestra la optimización de costos mediante AWS Instance Scheduler.

Optimización de costos 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 escalado automático (ASG) ni que administren servicios como Amazon Redshift o Amazon OpenSearch Service. Los grupos de escalado automático tienen su propia programación para las instancias del grupo y estas instancias se crean.

AWS Auto Scaling lo ayuda a ajustar la capacidad para mantener un rendimiento predecible y estable al menor costo posible para satisfacer los cambios en la demanda. Se trata de un servicio gratuito y totalmente administrado para escalar la capacidad de su aplicación que se integra con las instancias de Amazon EC2 y flotas de spot, Amazon ECS, Amazon DynamoDB y Amazon Aurora. El escalado automático detecta los recursos automáticamente, lo que lo ayuda a buscar recursos en su carga de trabajo que se pueden configurar. Además, tiene estrategias de escalado integradas para optimizar el rendimiento y los costos, o un equilibrio entre ambos, y proporciona escalado predictivo para ayudar en los picos que se producen periódicamente.

Hay varias opciones de escalado disponibles para escalar su grupo de escalado automático:

  • Mantener los niveles de instancia actuales en todo momento

  • Escalar manualmente

  • Escalado según una programación

  • Escalado basado en la demanda

  • Usar el escalado predictivo

Existen diferentes políticas de escalado automático. Se pueden clasificar en políticas de escalado dinámicas y programadas. Las políticas dinámicas son escalados manuales o dinámicos, que pueden ser programados o predictivos. Puede utilizar políticas de escalado para un escalado dinámico, programado y predictivo. También puede usar métricas y alarmas de Amazon CloudWatch para activar eventos de escalado de su carga de trabajo. Le recomendamos que utilice plantillas de lanzamiento que le permiten acceder a las últimas características y mejoras. No todas las funciones de escalado automático 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 instancia. Debe utilizar una plantilla de lanzamiento para configurar estas características. Cuando utilice plantillas de lanzamiento, le recomendamos que haga un control de versiones en cada una de ellas. Con el control de versiones de plantillas de lanzamiento, puede crear un subconjunto del conjunto completo de parámetros. A continuación, puede reutilizarlo para crear otras versiones de la misma plantilla de lanzamiento.

Puede usar AWS Auto Scaling o incorporar el escalado en su código con las API o SDK de AWS. Esto reduce los costos generales de la carga de trabajo al eliminar el costo operativo de aplicar los cambios manualmente en su entorno. Además, los cambios se pueden aplicar 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 escalado 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) lo ayuda a escalar mediante la distribución de la demanda entre varios 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 escalado automático. 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 el escalado automático 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 costos.

Diagrama en el que se describen las políticas de escalado basadas en la demanda, como el escalado simple o por pasos y el seguimiento de objetivos.

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

  • Escalado sencillo o por pasos: supervisa las métricas y agrega o elimina instancias de acuerdo con los pasos definidos manualmente por los clientes.

  • Seguimiento de objetivos: mecanismo de control similar a un termostato que agrega 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 el 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 el tiempo, puede brindar recursos adicionales o aumentar la capacidad durante los periodos de mayor actividad.

Diagrama en el que se describen las políticas de escalado basadas en el tiempo, como el escalado programado y predictivo.

Políticas de escalado basadas en el tiempo

Puede utilizar el escalado automático programado o predictivo para implementar un enfoque basado en el tiempo. Las cargas de trabajo se pueden programar para escalarse o reducirse 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 escalado predictivo utiliza patrones para escalar horizontalmente, mientras que el escalado programado utiliza tiempos predefinidos para escalar horizontalmente. También puede utilizar una estrategia de selección de tipo de instancia basada en atributos (ABS) en los grupos de escalado automático (ASG), lo que le permite expresar sus requisitos de instancia como un conjunto de atributos, por ejemplo, vCPU, memoria y 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. 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 los necesite. Este enfoque es ideal para los entornos de desarrollo o pruebas que se ejecutan únicamente en horarios laborales o periodos definidos. Puede usar las 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 el 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

  • Configuración del escalado programado: en caso de cambios predecibles en la demanda, el escalado 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 son suficientemente rápidas a la hora de responder a los cambios en la demanda. Use el análisis de las cargas de trabajo para configurar el escalado programado con AWS Auto Scaling. Para configurar la programación en función del tiempo, puede utilizar el escalado predictivo del escalado programado para aumentar por adelantado el número de instancias de Amazon EC2 de sus grupos de escalado automático en función de los cambios de carga previstos o predecibles.

  • Configuración del escalado predictivo: el escalado predictivo le permite aumentar el número de instancias de Amazon EC2 en su grupo de escalado automático antes de los patrones diarios y semanales de flujos de tráfico. Si tiene picos de tráfico regulares y aplicaciones que tardan mucho en iniciarse, debería plantearse el uso del escalado predictivo. El escalado predictivo puede ayudarlo a escalar más rápidamente mediante la inicialización de la capacidad antes de la carga prevista si se compara con el escalado 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 escalado predictivo puede agregar capacidad antes del horario laboral, lo que elimina el retraso del escalado dinámico para reaccionar ante los cambios en el tráfico.

  • Configuración del escalado automático dinámico: use el escalado automático para configurar el escalado según las métricas de carga de trabajo activas. Use los análisis y configure el escalado automático 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 en diferido e instancias de spot en un solo grupo de Auto Scaling. Además de los descuentos relacionados con las instancias de spot, puede utilizar instancias reservadas o un Savings Plan para conseguir mejores precios de los habituales en las instancias en diferido. La combinación de todos estos factores le permite optimizar el ahorro de costos en las instancias de Amazon EC2, a la vez que se asegura de obtener la escala y el rendimiento deseados para su aplicación.

Recursos

Documentos relacionados:

Videos relacionados:

Ejemplos relacionados: