

# SUS03-BP01 Otimizar o software e a arquitetura para trabalhos assíncronos e programados
<a name="sus_sus_software_a2"></a>

Use software eficiente e padrões de arquitetura, como orientado a filas, para manter uma alta e consistente utilização dos recursos implantados.

 **Antipadrões comuns:** 
+  Provisione em excesso os recursos em sua workload na nuvem para atender a picos imprevistos na demanda. 
+  Sua arquitetura não separa remetentes e destinatários de mensagens assíncronas por um componente de sistema de mensagens. 

 **Benefícios do estabelecimento desta prática recomendada:** 
+  Padrões eficientes de software e arquitetura minimizam os recursos não utilizados em sua workload e melhoram a eficiência geral. 
+  Você pode dimensionar o processamento independentemente do recebimento de mensagens assíncronas. 
+  Por meio de um componente de mensagens, você relaxou os requisitos de disponibilidade que podem ser atendidos com menos recursos. 

 **Nível de exposição a riscos quando esta prática recomendada não é estabelecida:** Médio 

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

 Use padrões de arquitetura eficientes, como [arquitetura orientada por eventos](https://aws.amazon.com/event-driven-architecture/), que resultam na utilização uniforme de componentes e minimizam o provisionamento em excesso em sua workload. A utilização de padrões de arquitetura eficientes minimiza recursos ociosos por falta de uso devido a mudanças na demanda ao longo do tempo. 

 Entenda os requisitos de seus componentes de workload e adote padrões de arquitetura que aumentam a utilização geral dos recursos. Retire os componentes que não são mais necessários. 

 **Etapas da implementação** 
+  Analise a demanda de sua workload para determinar como responder a ela. 
+  Para solicitações ou trabalhos que não exigem respostas síncronas, use arquiteturas orientadas por filas e operadores de escalonamento automático para maximizar a utilização. Aqui estão alguns exemplos de quando você pode considerar a arquitetura orientada por filas: 


<table>
<thead>
  <tr><th>Queuing mechanism</th><th>Description</th></tr>
</thead>
<tbody>
  <tr><td><a href="https://docs.aws.amazon.com/batch/latest/userguide/job_queues.html">Filas de trabalho do AWS Batch</a></td><td>Os trabalhos do AWS Batch são enviados para uma fila de trabalhos onde permanecem até que possam ser agendados para execução em um ambiente de computação.</td></tr>
  <tr><td><a href="https://aws.amazon.com/blogs/compute/running-cost-effective-queue-workers-with-amazon-sqs-and-amazon-ec2-spot-instances/">Instâncias spot do Amazon Simple Queue Service e Amazon EC2</a></td><td>Emparelhamento de Amazon SQS e instâncias spot para criar uma arquitetura eficiente e tolerante a falhas.</td></tr>
</tbody>
</table>

+  Para solicitações ou trabalhos que podem ser processados a qualquer momento, use mecanismos de agendamento para processar trabalhos em lote para maior eficiência. Aqui estão alguns exemplos de mecanismos de agendamento no AWS: 


<table>
<thead>
  <tr><th>Scheduling mechanism</th><th>Description</th></tr>
</thead>
<tbody>
  <tr><td><a href="https://aws.amazon.com/blogs/compute/introducing-amazon-eventbridge-scheduler/">Agendador do Amazon EventBridge</a></td><td>A capacidade do <a href="https://aws.amazon.com/eventbridge/">Amazon EventBridge</a> que permite criar, executar e gerenciar tarefas agendadas em escala.</td></tr>
  <tr><td><a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html">Programação baseada em tempo do AWS Glue</a></td><td>Defina uma programação baseada em tempo para seus crawlers e trabalhos no AWS Glue.</td></tr>
  <tr><td><a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduled_tasks.html">Tarefas agendadas do Amazon Elastic Container Service (Amazon ECS)</a></td><td>O Amazon ECS permite a criação de tarefas agendadas. Tarefas agendadas usam regras do Amazon EventBridge para executar tarefas em um agendamento ou em resposta a um evento do EventBridge.</td></tr>
  <tr><td><a href="https://aws.amazon.com/solutions/implementations/instance-scheduler-on-aws/">Programador de Instâncias</a></td><td>Configure programações de início e parada para suas instâncias do Amazon EC2 e Amazon Relational Database Service.</td></tr>
</tbody>
</table>

+  Se você usar mecanismos de pesquisa e webhooks em sua arquitetura, substitua-os por eventos. Use [arquiteturas orientadas por eventos](https://docs.aws.amazon.com/lambda/latest/operatorguide/event-driven-architectures.html) para criar workloads altamente eficientes. 
+  Aproveite a [a computação sem servidor no AWS](https://aws.amazon.com/serverless/) para eliminar a infraestrutura provisionada em excesso. 
+  Dimensione corretamente componentes individuais de sua arquitetura para evitar recursos ociosos aguardando entrada. 

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

 **Documentos relacionados:** 
+  [O que é o Amazon Simple Queue Service?](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) 
+  [O que é o Amazon MQ?](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.html) 
+  [Escalabilidade baseada no Amazon SQS](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html) 
+  [O que é o AWS Step Functions?](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 
+  [O que é o AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 
+  [Usando o AWS Lambda com o Amazon SQS](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html) 
+  [O que é o Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 

 **Vídeos relacionados:** 
+  [Moving to event-driven architectures (Mudando para arquiteturas orientadas a eventos)](https://www.youtube.com/watch?v=h46IquqjF3E) 