

# COST 9 ¿Cómo administra la demanda y aprovisiona los recursos?
<a name="w2aac19c13c11b5"></a>

Para una carga de trabajo que tenga un gasto y un rendimiento equilibrados, asegúrese de que se use todo lo que paga y evite las instancias de infrautilización significativas. Una métrica de utilización sesgada en cualquier dirección tiene un efecto adverso en su organización, ya sea en los costos operativos (rendimiento degradado debido a la sobreutilización) o en los gastos desperdiciados de AWS (debido al sobreaprovisionamiento).

**Topics**
+ [COST09-BP01 Realizar un análisis de la demanda de la carga de trabajo](cost_manage_demand_resources_cost_analysis.md)
+ [COST09-BP02 Implementar un búfer o una limitación para administrar la demanda](cost_manage_demand_resources_buffer_throttle.md)
+ [COST09-BP03 Aprovisionar recursos de forma dinámica](cost_manage_demand_resources_dynamic.md)

# COST09-BP01 Realizar un análisis de la demanda de la carga de trabajo
<a name="cost_manage_demand_resources_cost_analysis"></a>

 Analice la demanda de la carga de trabajo a lo largo del tiempo. Compruebe que el análisis cubra las tendencias estacionales y represente con precisión las condiciones de servicio durante toda la vida útil de la carga de trabajo. El análisis debe reflejar los posibles beneficios; por ejemplo, el tiempo empleado es proporcional al coste de la carga de trabajo. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Alto 

## Guía para la implementación
<a name="implementation-guidance"></a>

Debe conocer los requisitos de la carga de trabajo. Los requisitos de la organización deberían indicar los tiempos de respuesta de la carga de trabajo frente a las solicitudes. El tiempo de respuesta se puede usar para determinar si la demanda está administrada o si el suministro de recursos cambiará para adaptarse a la demanda.

El análisis debería incluir la previsibilidad y la repetibilidad de la demanda, la tasa de cambio en la demanda y la cantidad de cambio en la demanda. Asegúrese de que el análisis se lleve a cabo durante un período suficiente de tiempo para que incorpore variantes estacionales, como un procesamiento de final de mes o los picos de las vacaciones.

Asegúrese de que el análisis refleje los posibles beneficios de la implementación del escalado. Consulte el coste total previsto del componente y cualquier incremento o descenso del uso, así como el coste durante el período de vida de la carga de trabajo.

Puede usar [AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/) o bien [Amazon Quick](https://aws.amazon.com/quicksight/) con el AWS Cost and Usage Report (CUR) o sus registros de aplicaciones para realizar un análisis visual de la demanda de carga de trabajo.

**Pasos para la aplicación**
+ ** Analizar los datos existentes de la carga de trabajo: **analice los datos de la carga de trabajo existente, las versiones anteriores de la carga de trabajo o los patrones de uso previstos. Use los archivos de registro y los datos de supervisión para obtener información sobre cómo usan los clientes la carga de trabajo. Las métricas habituales son la demanda real en solicitudes por segundo, las horas en que la tasa de la demanda cambia o si está en distintos niveles, además de la tasa de cambio de la demanda. Asegúrese de analizar un ciclo completo de la carga de trabajo y no olvide recopilar datos de los cambios estacionales, como los eventos de final de mes o de final de año. El esfuerzo reflejado en este análisis debe mostrar las características de la carga de trabajo. Debe ponerse mayor empeño en las cargas de trabajo de mayor valor con mayores cambios en la demanda. Debe ponerse menor empeño en las cargas de trabajo de menor valor con menores cambios en la demanda. Las métricas más habituales de valor son el riesgo, el conocimiento de la marca, los ingresos y el coste de la carga de trabajo. 
+ ** Prever la influencia exterior: **reúnase con miembros de equipos de toda la organización que puedan influir o cambiar la demanda de la carga de trabajo. Estos equipos suelen ser los de ventas, marketing o desarrollo empresarial. Colabore con ellos para conocer los ciclos en los que operan y si hay eventos especiales que puedan cambiar la demanda de la carga de trabajo. Haga una previsión de la demanda de la carga de trabajo con estos datos. 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [Instance Scheduler en AWS](https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/) 
+  [Introducción a Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+ [AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/)
+ [Amazon Quick](https://aws.amazon.com/quicksight/)

# COST09-BP02 Implementar un búfer o una limitación para administrar la demanda
<a name="cost_manage_demand_resources_buffer_throttle"></a>

 El almacenamiento en búfer y la limitación modifican la demanda de la carga de trabajo y suavizan los picos. Implemente limitaciones cuando sus clientes hagan reintentos. Implemente el almacenamiento en búfer para almacenar la solicitud y aplazar el procesamiento para más adelante. Verifique que las limitaciones y los búfers se hayan diseñado de tal manera que los clientes reciban una respuesta en el tiempo requerido. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Bajo 

## Guía para la implementación
<a name="implementation-guidance"></a>

**Limitación:** si el origen de la demanda tiene capacidad de reintento, podrá implementar una limitación. Esta limitación le dice al origen que si no puede atender la solicitud en el momento actual debe intentarlo más tarde. El origen esperará un tiempo y volverá a probar la solicitud. Implementar una limitación tiene la ventaja de que se limita la cantidad máxima de recursos y costos de la carga de trabajo. En AWS, puede usar [Amazon API Gateway](https://aws.amazon.com/api-gateway/) para implementar la limitación. Consulte el [documento técnico Pilar de fiabilidad de Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html) para obtener más detalles sobre cómo implementar la limitación.

**Basado en búfer: **de forma similar a la limitación, un búfer aplaza el procesamiento de las solicitudes, por lo que permite a las aplicaciones que se ejecutan a diferentes ritmos comunicarse de forma efectiva. El enfoque basado en búfer utiliza una cola para aceptar mensajes (unidades de trabajo) de los productores. De este modo, los consumidores pueden leer y procesar los mensajes, lo que permite que dichos mensajes se ejecuten a la velocidad que cumpla con los requisitos empresariales de los consumidores. No tiene que preocuparse por que los productores tengan que lidiar con problemas de limitación, como la durabilidad de los datos y la contrapresión (que hace que los productores reduzcan la velocidad porque su consumidor se ejecuta a una velocidad lenta).

En AWS, puede elegir entre varios servicios para implementar un enfoque basado en almacenamiento en búfer. [Amazon Simple Queue Service (Amazon SQS)](https://aws.amazon.com/sqs/) es un servicio administrado que brinda colas que permiten que un solo consumidor lea mensajes individuales. [Amazon Kinesis](https://aws.amazon.com/kinesis/) ofrece una secuencia que permite que muchos consumidores lean los mismos mensajes.

Al diseñar con un enfoque basado en búfer, garantiza que su carga de trabajo responda a la solicitud en el tiempo requerido y que usted pueda gestionar las solicitudes duplicadas.

**Pasos para la aplicación**
+ ** Analizar los requisitos de cliente: **analice los requisitos de cliente para determinar si pueden llevar a cabo reintentos. Para los clientes que no puedan, deberán implementarse búfers. Analice la demanda general, la tasa de cambio y el tiempo de respuesta requerido para determinar el tamaño de la limitación o el búfer requeridos. 
+ ** Implementar un búfer o una limitación:** implemente un búfer o una limitación en la carga de trabajo. Una cola como Amazon Simple Queue Service (Amazon SQS) puede proporcionar un búfer a sus componentes de la carga de trabajo. Amazon API Gateway puede proporcionar limitación a los componentes de la carga de trabajo. 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [Instance Scheduler en AWS](https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/) 
+  [Amazon API Gateway](https://aws.amazon.com/api-gateway/) 
+  [Amazon Simple Queue Service](https://aws.amazon.com/sqs/) 
+  [Introducción a Amazon SQS](https://aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+  [Amazon Kinesis](https://aws.amazon.com/kinesis/) 

# COST09-BP03 Aprovisionar recursos de forma dinámica
<a name="cost_manage_demand_resources_dynamic"></a>

 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
<a name="implementation-guidance"></a>

Puede usar [AWS Auto Scaling](https://aws.amazon.com/autoscaling/)o incorporar el escalado en su código con la API o los SDK de [AWS](https://aws.amazon.com/developer/tools/). 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 es mucho más rápido. De este modo, la carga de trabajo se aprovisionará mejor en función de la demanda en todo momento.

**Aprovisionamiento basado en la demanda:** saque provecho de la elasticidad de la nube para aprovisionar recursos que satisfagan el cambio en la demanda. Con las API o las funciones del servicio, puede variar de forma dinámica mediante programación la cantidad de recursos de la nube en su arquitectura. Así puede escalar componentes en su arquitectura y aumentar automáticamente la cantidad de recursos durante los picos de demanda a fin de mantener el rendimiento, así como disminuir la capacidad cuando la demanda disminuya para reducir los costos.

[AWS Auto Scaling](https://aws.amazon.com/autoscaling/) le ayuda a ajustar la capacidad para mantener un rendimiento predecible y estable al menor coste posible. Es un servicio totalmente administrado y gratis que se integra con las instancias de Amazon Elastic Compute Cloud (Amazon EC2) y las flotas de spot, Amazon Elastic Container Service (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 escalado integradas para optimizar el rendimiento y los costes, o un equilibrio entre ambos, y proporciona escalado predictivo para ayudar en los picos que se producen regularmente.

Auto Scaling puede implementar escalado basado en la demanda, programado o manual. También puede usar las métricas y las alarmas de [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) para desencadenar eventos de escalado para la carga de trabajo. Las métricas habituales pueden ser métricas de Amazon EC2 estándares, como el uso de la CPU, el rendimiento de la red y la solicitud observada de [Elastic Load Balancing (ELB) ](https://aws.amazon.com/elasticloadbalancing/)o la latencia de respuesta. 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 aplicaciones dentro de la carga de trabajo.

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.

[ELB](https://aws.amazon.com/elasticloadbalancing/) le ayuda a escalar al distribuir la demanda entre múltiples recursos. A medida que implementa más recursos, los añade al equilibrador de carga para asumir la demanda. Elastic Load Balancing admite las instancias de Amazon EC2, los contenedores, las direcciones IP y las funciones de AWS Lambda.

**Aprovisionamiento basado en tiempo:** el enfoque basado en tiempo adapta la capacidad de los recursos según la demanda que sea 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 demoras por los procedimientos de inicio y comprobaciones del sistema o de consistencia. Con el enfoque basado en tiempo, puede brindar recursos adicionales o aumentar la capacidad durante los periodos de mayor actividad.

Puede usar el Auto Scaling programado para implementar un enfoque basado en el tiempo. Las cargas de trabajo se pueden programar para ampliar o reducir la capacidad en momentos definidos (como el inicio del horario laboral). De este modo, se garantiza que los recursos estén disponibles cuando aparezcan los usuarios o la demanda.

También puede aprovechar las [API y los SDK de AWS](https://aws.amazon.com/developer/tools/) y [AWS CloudFormation](https://aws.amazon.com/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 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 cambiando el 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 Elastic Block Store (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 brinde cobertura.

**Pasos para la aplicación**
+ ** Configurar una programación basada en el tiempo: **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 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 escalado programado con AWS Auto Scaling. 
+ ** Configurar Auto Scaling: **use Amazon Auto Scaling 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 iniciar en los niveles de recursos correctos y garantizar que la carga de trabajo se escale en el tiempo requerido. 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [Instance Scheduler en AWS](https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/) 
+  [Introducción a Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/GettingStartedTutorial.html) 
+  [Introducción a Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+  [Escalado programado para Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html) 