

# Gerenciar recursos de demanda e fornecimento
<a name="a-manage-demand-and-supply-resources"></a>

**Topics**
+ [COST 9  Como você gerencia a demanda e fornece recursos?](w2aac19c13c11b5.md)

# COST 9  Como você gerencia a demanda e fornece recursos?
<a name="w2aac19c13c11b5"></a>

Para uma carga de trabalho que tenha gasto e performance equilibrados, verifique se tudo o que você paga é usado e evite instâncias significativamente subutilizadas. Uma métrica de utilização distorcida em ambas as direções tem um impacto adverso sobre a organização, tanto nos custos operacionais (redução na performance em decorrência de utilização excessiva) quanto em despesas desnecessárias na AWS (devido ao excesso de provisionamento).

**Topics**
+ [COST09-BP01 Execute uma análise sobre a demanda de workload](cost_manage_demand_resources_cost_analysis.md)
+ [COST09-BP02 Implemente um buffer ou controle de utilização para gerenciar a demanda](cost_manage_demand_resources_buffer_throttle.md)
+ [COST09-BP03 Forneça recursos dinamicamente](cost_manage_demand_resources_dynamic.md)

# COST09-BP01 Execute uma análise sobre a demanda de workload
<a name="cost_manage_demand_resources_cost_analysis"></a>

 Analise a demanda da carga de trabalho ao longo do tempo. Garanta que a análise cubra tendências sazonais e represente com precisão as condições operacionais durante toda a vida útil da workload. O esforço de análise deve refletir o benefício potencial. Por exemplo, se o tempo gasto é proporcional ao custo da workload. 

 **Nível de risco exposto se esta prática recomendada não for estabelecida:** Alto 

## Orientação de implementação
<a name="implementation-guidance"></a>

conheça os requisitos da carga de trabalho. Os requisitos da organização devem indicar os tempos de resposta da carga de trabalho para solicitações. O tempo de resposta pode ser usado para determinar se a demanda é gerenciada ou se a oferta de recursos será alterada para atender à demanda.

A análise deve incluir a previsibilidade e a repetibilidade da demanda, a taxa de alteração na demanda e a quantidade de alteração na demanda. Verifique se a análise é realizada durante um período longo o suficiente para incorporar qualquer variação sazonal, como processamento de fim de mês ou picos de fim de ano.

Certifique-se de que o esforço de análise reflita os possíveis benefícios da implementação da escalabilidade. Observe o custo total esperado do componente e quaisquer aumentos ou diminuições no uso e no custo durante a vida útil da carga de trabalho.

Você pode usar o [AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/) ou [Amazon Quick](https://aws.amazon.com/quicksight/) com o AWS Cost and Usage Report (CUR) ou seus logs de aplicação para fazer uma análise visual da demanda da workload.

**Etapas da implementação**
+ ** Analisar dados de workload existentes: **Analise dados da carga de trabalho existentes, das versões anteriores da carga de trabalho ou dos padrões de uso previstos. Use arquivos de log e dados de monitoramento para obter informações sobre como os clientes usam a carga de trabalho. As métricas típicas são a demanda real, em solicitações por segundo, os horários em que a taxa de demanda muda ou quando ela está em diferentes níveis e a taxa de alteração da demanda. Verifique se você analisou um ciclo completo da carga de trabalho, garantindo a coleta de dados para quaisquer alterações sazonais, como eventos de fim de mês ou de ano. O esforço refletido na análise deve refletir as características da carga de trabalho. O maior esforço deve ser colocado em workloads de alto valor com as maiores alterações na demanda. O menor esforço deve ser colocado em workloads de baixo valor que tenham alterações mínimas na demanda. Métricas comuns de valor são risco, reconhecimento da marca, receita ou custo da carga de trabalho. 
+ ** Prever a influência externa: **Encontre membros da equipe de toda a organização que possam influenciar ou alterar a demanda na carga de trabalho. Equipes comuns são vendas, marketing ou desenvolvimento de negócios. Trabalhe com elas para saber os ciclos com os quais operam e se há eventos que alteram a demanda da workload. Preveja a demanda da carga de trabalho com esses dados. 

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

 **Documentos relacionados:** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [AWS Instance Scheduler](https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/) 
+  [Conceitos básicos do 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 Implemente um buffer ou controle de utilização para gerenciar a demanda
<a name="cost_manage_demand_resources_buffer_throttle"></a>

 O armazenamento em buffer e o controle de utilização modificam a demanda na carga de trabalho, suavizando todos os picos. Implemente o controle de utilização quando seus clientes realizarem novas tentativas. Implemente o armazenamento em buffer para armazenar a solicitação e adiar o processamento até um momento posterior. Verifique se os controles de utilização e buffers são projetados para que os clientes recebam uma resposta no tempo necessário. 

 **Nível de risco exposto se esta prática recomendada não for estabelecida:** Baixo 

## Orientação de implementação
<a name="implementation-guidance"></a>

**Controle de utilização:** se a origem da demanda tiver capacidade de repetição, você poderá implementar o controle de utilização. O controle de utilização informa à origem que, se ela não puder atender à solicitação no momento atual, deverá tentar novamente mais tarde. A origem aguardará um período e, em seguida, tentará novamente a solicitação. A implementação do controle de utilização tem a vantagem de limitar a quantidade máxima de recursos e custos da carga de trabalho. Na AWS, você pode usar o [Amazon API Gateway](https://aws.amazon.com/api-gateway/) para implementar o controle de utilização. Consulte o [whitepaper sobre o Pilar Confiabilidade do Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html) para obter mais detalhes sobre como implementar o controle de utilização.

**Baseado em buffer: **semelhante ao controle de utilização, um buffer adia o processamento de solicitações, permitindo que aplicativos executados em diferentes taxas se comuniquem com eficácia. Uma abordagem baseada em buffer usa uma fila para aceitar mensagens (unidades de trabalho) de produtores. As mensagens são lidas pelos consumidores e processadas, permitindo que as mensagens sejam executadas na taxa que atenda aos requisitos de negócios dos consumidores. Você não precisa se preocupar com os produtores que precisam lidar com problemas de controle de utilização, como durabilidade de dados e pressão contrária (onde os produtores ficam lentos porque o consumidor está correndo lentamente).

Na AWS, você pode escolher entre vários serviços para implementar uma abordagem de buffering. [Amazon Simple Queue Service(Amazon SQS)](https://aws.amazon.com/sqs/) é um serviço gerenciado que fornece filas que permitem que um único consumidor leia mensagens individuais. [Amazon Kinesis](https://aws.amazon.com/kinesis/) oferece um fluxo que permite a muitos consumidores lerem as mesmas mensagens.

Ao criar uma arquitetura com uma abordagem baseada em buffer, certifique-se de arquitetar sua carga de trabalho para atender à solicitação no tempo necessário e de lidar com solicitações duplicadas de trabalho.

**Etapas da implementação**
+ ** Analisar os requisitos do cliente: **Analise as solicitações do cliente para determinar se são capazes de executar novas tentativas. Para clientes que não podem executar novas tentativas, buffers precisarão ser implementados. Analise a demanda geral, a taxa de alteração e o tempo de resposta necessário para determinar o tamanho do controle de utilização ou do buffer necessário. 
+ ** Implementar um buffer ou controle de utilização:** Implemente um buffer ou um controle de utilização na carga de trabalho. Uma fila como Amazon Simple Queue Service (Amazon SQS) pode fornecer um buffer para seus componentes de workload. O Amazon API Gateway pode fornecer controle de utilização para seus componentes de workload. 

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

 **Documentos relacionados:** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [AWS Instance Scheduler](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/) 
+  [Conceitos básicos do Amazon SQS](https://aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+  [Amazon Kinesis](https://aws.amazon.com/kinesis/) 

# COST09-BP03 Forneça recursos dinamicamente
<a name="cost_manage_demand_resources_dynamic"></a>

 Os recursos são provisionados de maneira planejada. Isso pode ser baseado na demanda, como por meio da escalabilidade automática, ou no tempo, em que a demanda é previsível e os recursos são fornecidos com base no tempo. Esses métodos resultam na menor quantidade de sobreprovisionamento ou subprovisionamento. 

 **Nível de risco exposto se esta prática recomendada não for estabelecida:** Baixo 

## Orientação de implementação
<a name="implementation-guidance"></a>

Você pode usar o [AWS Auto Scaling](https://aws.amazon.com/autoscaling/)ou incorporar escalabilidade em seu código com as [API ou o SDK da AWS](https://aws.amazon.com/developer/tools/). Isso reduz os custos gerais da carga de trabalho removendo o custo operacional de fazer alterações manualmente em seu ambiente e pode ser executado muito mais rapidamente. Isso garantirá que o recurso da carga de trabalho corresponda melhor à demanda a qualquer momento.

**Oferta baseada em demanda:** aproveite a elasticidade da nuvem para fornecer recursos para atender à demanda em constante mudança. Aproveite as APIs ou os recursos de serviço para variar programaticamente a quantidade de recursos de nuvem em sua arquitetura dinamicamente. Isso permite que você ajuste a escala de componentes em sua arquitetura e aumente automaticamente o número de recursos durante picos de demanda para manter a performance e reduzir a capacidade quando a demanda diminui para reduzir os custos.

[AWS Auto Scaling](https://aws.amazon.com/autoscaling/) ajuda você a ajustar sua capacidade para manter uma performance estável e previsível pelo menor custo possível. É um serviço totalmente gerenciado e gratuito que se integra a instâncias do Amazon Elastic Compute Cloud (Amazon EC2) e a frotas spot, ao Amazon Elastic Container Service (Amazon ECS), ao Amazon DynamoDB e ao Amazon Aurora.

O Auto Scaling oferece descoberta automática de recursos para ajudar a encontrar recursos na sua workload que possam ser configurados, tem estratégias de escalabilidade incorporadas para otimizar performance, custos ou um equilíbrio entre os dois, além de oferecer escalabilidade preditiva para ajudar com picos que ocorrem regularmente.

O Auto Scaling pode implementar escalabilidade manual, programada ou baseada em demanda. Você também pode usar métricas e alarmes de [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) para acionar eventos de escalabilidade para sua carga de trabalho. As métricas típicas podem ser métricas padrão do Amazon EC2, como utilização de CPU, throughput de rede e latência de solicitação/resposta observada pelo [Elastic Load Balancing(ELB) ](https://aws.amazon.com/elasticloadbalancing/). Quando possível, você deve usar uma métrica que seja indicativa da experiência do cliente. Normalmente, essa é uma métrica personalizada que pode se originar do código da aplicação em sua workload.

Ao arquitetar com uma abordagem baseada em demanda, tenha em mente dois pontos essenciais. Primeiro, entenda a rapidez com que você deve provisionar novos recursos. Segundo, entenda que o tamanho da margem entre oferta e demanda mudará. Você deve estar pronto para lidar com a taxa de alteração na demanda e também estar pronto para falhas de recursos.

[ELB](https://aws.amazon.com/elasticloadbalancing/) ajuda a escalar distribuindo a demanda entre vários recursos. À medida que implementa mais recursos, você os adiciona ao balanceador de carga para atender à demanda. O Elastic Load Balancing tem suporte para instâncias do Amazon EC2, contêineres, endereços IP e funções do AWS Lambda.

**Oferta baseada em tempo:** Uma abordagem baseada em tempo alinha a capacidade de recurso a uma demanda que é previsível ou bem definida no tempo. Essa abordagem costuma não depender dos níveis de utilização dos recursos. Uma abordagem baseada em tempo garante que os recursos estejam disponíveis no momento específico em que são necessários e podem ser fornecidos sem nenhum atraso devido a procedimentos de inicialização e verificações do sistema ou de consistência. Usando uma abordagem baseada em tempo, você pode fornecer recursos adicionais ou aumentar a capacidade durante períodos ocupados.

Você pode usar o Auto Scaling programado para implementar uma abordagem baseada em tempo. As cargas de trabalho podem ser programadas para expandir ou reduzir em horários definidos (por exemplo, o início do horário comercial), garantindo assim que os recursos estejam disponíveis quando os usuários ou a demanda chegarem.

Você também pode aproveitar as [APIs e os SDKs da AWS](https://aws.amazon.com/developer/tools/) e [AWS CloudFormation](https://aws.amazon.com/cloudformation/) para provisionar e desativar automaticamente ambientes inteiros conforme necessário. Essa abordagem é adequada para ambientes de desenvolvimento ou teste que são executados apenas nos períodos ou horários comerciais definidos.

Você pode usar APIs para ajustar a escala dos recursos dentro de um ambiente (ajuste de escala vertical). Por exemplo, você pode escalar uma carga de trabalho de produção alterando o tamanho ou a classe da instância. Isso pode ser feito interrompendo e iniciando a instância e selecionando a classe ou o tamanho da instância diferente. Essa técnica também pode ser aplicada a outros recursos, como Volumes elásticos do Amazon Elastic Block Store (Amazon EBS), que podem ser modificados para aumentar o tamanho, ajustar a performance (IOPS) ou alterar o tipo de volume durante o uso.

Ao arquitetar com uma abordagem baseada em tempo, tenha em mente dois pontos essenciais. Primeiro, qual é a consistência do padrão de uso? Segundo, qual será o impacto se o padrão mudar? Você pode aumentar a precisão das previsões monitorando suas cargas de trabalho e usando inteligência de negócios. Se você vir alterações significativas no padrão de uso, poderá ajustar os tempos para garantir que a cobertura seja fornecida.

**Etapas da implementação**
+ ** Configure a programação baseada em tempo: **Para alterações previsíveis na demanda, a escalabilidade baseada em tempo pode fornecer a quantidade correta de recursos em tempo hábil. Também será útil se a criação e a configuração de recursos não forem rápidas o suficiente para responder a alterações na demanda. Usando a análise de workload, configure a escalabilidade programada usando o AWS Auto Scaling. 
+ ** Configure o Auto Scaling: **Para configurar a escalabilidade com base em métricas de carga de trabalho ativas, use o Amazon Auto Scaling. Use a análise e configure o Auto Scaling para acionar nos níveis de recursos corretos e garanta que a carga de trabalho seja dimensionada no tempo necessário. 

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

 **Documentos relacionados:** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [AWS Instance Scheduler](https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/) 
+  [Conceitos básicos do Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/GettingStartedTutorial.html) 
+  [Conceitos básicos do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+  [Escalabilidade programada para o Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html) 