

# PERF01-BP06 Usar testes comparativos para orientar decisões de arquitetura
<a name="perf_architecture_use_benchmarking"></a>

 Compare a performance de uma workload existente para entender sua performance na nuvem e orientar decisões de arquitetura com base nesses dados. 

 **Práticas comuns que devem ser evitadas:** 
+  Você depende de testes comparativos comuns que não são indicativos das características da workload. 
+  Você conta com o feedback e as percepções de clientes como seu único teste comparativo. 

 **Benefícios de implementar esta prática recomendada:** o benchmarking da sua implementação atual permite medir melhorias de performance. 

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

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

 Use testes comparativos com testes sintéticos para avaliar a performance dos componentes da workload. O benchmarking é usado na avaliação da tecnologia para um componente específico e geralmente é mais simples de configurar do que testes de carga. Muitas vezes o benchmarking é usado no início de um novo projeto, quando ainda não há uma solução completa para o teste de carga. 

 Você pode criar seus próprios testes comparativos personalizados ou usar um teste padrão do setor, como o [TPC-DS](http://www.tpc.org/tpcds/), para comparar suas workloads. Os benchmarks do setor são úteis ao comparar ambientes. Já os benchmarks personalizados são úteis para direcionar a tipos específicos de operações que você espera realizar em sua arquitetura. 

 Ao realizar testes comparativos, é importante "preaquecer" o ambiente de teste para obter resultados válidos. Execute o mesmo teste comparativo várias vezes para verificar a captura de qualquer variação ao longo do tempo. 

 Como normalmente é mais rápido executar testes comparativos do que testes de carga, eles podem ser usados mais cedo no pipeline de implantação e fornecer um feedback mais rápido sobre desvios de performance. Ao avaliar uma alteração significativa em um componente ou serviço, o teste comparativo pode ser uma maneira rápida de verificar se é possível justificar a iniciativa para concretizar a alteração. O uso de testes comparativos em conjunto com testes de carga é importante porque o teste de carga informa como é a performance da workload no ambiente de produção. 

### Etapas de implementação
<a name="implementation-steps"></a>
+  Planeje e defina: 
  +  Defina os objetivos, o parâmetro de referência, os cenários de teste, as métricas (como utilização da CPU, latência ou throughput) e os KPIs para o teste comparativo. 
  +  Concentre-se nos requisitos do usuário em termos de experiência do usuário e em outros fatores, como tempo de resposta e acessibilidade. 
  +  Identifique uma ferramenta de testes comparativos adequada à workload. Você pode usar serviços da AWS como o [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ou uma ferramenta de terceiros que seja compatível com a workload. 
+  Configure e instrumente: 
  +  Prepare o ambiente e configure os recursos. 
  +  Implemente monitoramento e registro em log para capturar os resultados dos testes. 
+  Compare e monitore: 
  +  Execute testes comparativos e monitore as métricas durante o teste. 
+  Analise e documente: 
  +  Documente o processo de comparação e as descobertas. 
  +  Analise os resultados para identificar gargalos, tendências e áreas para melhoria. 
  +  Use os resultados do teste para tomar decisões de arquitetura e ajustar a workload. Isso pode incluir a mudança de serviços ou a adoção de novos recursos. 
+  Otimize e repita: 
  +  Ajuste as configurações e alocações de recursos com base nos testes comparativos. 
  +  Teste novamente a workload depois do ajuste para validar as melhorias. 
  +  Documente seu aprendizado e repita o processo para identificar outras áreas para melhoria. 

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

 **Documentos relacionados:** 
+  [AWS Centro de Arquitetura da](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS Biblioteca de Soluções da](https://aws.amazon.com/solutions/) 
+  [Centro de Conhecimentos da AWS](https://aws.amazon.com/premiumsupport/knowledge-center/) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 
+  [Fluxos de trabalho de genômica, Parte 5: benchmarking automatizado](https://aws.amazon.com/blogs/architecture/genomics-workflows-part-5-automated-benchmarking/) 
+  [Comparar e otimizar a implantação de endpoints no Amazon SageMaker AI JumpStart](https://aws.amazon.com/blogs/machine-learning/benchmark-and-optimize-endpoint-deployment-in-amazon-sagemaker-jumpstart/) 

 **Vídeos relacionados:** 
+  [AWS re:Invent 2023: Testes comparativos de partida a frio do AWS Lambda](https://www.youtube.com/watch?v=bGMEPI-va-Q&ab_channel=AWSEvents) 
+  [Testes comparativos de serviços com estado na nuvem](https://www.youtube.com/watch?v=rtW4a4DvcWU&ab_channel=AWSEvents) 
+  [Esta é a minha arquitetura](https://aws.amazon.com/architecture/this-is-my-architecture/) 
+  [Otimizar aplicações com o Amazon CloudWatch RUM](https://www.youtube.com/watch?v=NMaeujY9A9Y) 
+  [Demonstração do Amazon CloudWatch Synthetics](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **Exemplos relacionados:** 
+  [AWS Exemplos da](https://github.com/aws-samples) 
+  [Exemplos do AWS SDK](https://github.com/awsdocs/aws-doc-sdk-examples) 
+  [Testes de carga distribuídos](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 
+  [Medir o tempo de carregamento da com o Amazon CloudWatch Synthetics](https://github.com/aws-samples/amazon-cloudwatch-synthetics-page-performance) 
+  [Cliente Web do Amazon CloudWatch RUM](https://github.com/aws-observability/aws-rum-web) 