

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# GAMEOPS03-BP03 Teste de carga cedo e com frequência
<a name="gameops03-bp03"></a>

 O teste de carga é o processo de simular o tráfego real em um sistema para avaliar sua confiabilidade e desempenho. 

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

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

 O teste de carga é um fator-chave no desenvolvimento de uma linha de base de desempenho para seus recursos e na compreensão da capacidade do seu sistema, que pode orientar a previsão financeira, o design da arquitetura, a alocação de recursos, as configurações automatizadas de escalabilidade e as atividades de pré-escalabilidade pós-lançamento. Os benefícios adicionais incluem: 
+  **Infraestrutura otimizada: ** os recursos podem estar superprovisionados ou subprovisionados. Compreender os recursos necessários resultará em custos mais baixos e menos infraestrutura para gerenciar. 
+  **Prontidão para escalabilidade: ** certos mecanismos e recursos podem levar os usuários a um jogo rapidamente. Saber quando e como escalar pode ser a diferença entre atender adequadamente ao aumento da demanda e perder jogadores. Use os resultados do teste de carga para preparar runbooks com limites do sistema, pontos de alerta e pontos de alerta críticos em diferentes níveis de escala. 
+  **Código de maior qualidade**: problemas como interferência excessiva entre serviços, chamadas de banco de dados sem lotes, algoritmos ineficientes, vazamentos de memória e problemas de degradação do serviço às vezes são mais simples de identificar em grande escala. 
+  **Validação de comportamento: ** injetar diferentes tipos de falhas em seus testes pode validar o comportamento esperado do sistema ou revelar problemas de tratamento de erros que precisam ser corrigidos. 

 O ideal é que os desenvolvedores realizem testes de carga em vários pontos do processo de desenvolvimento, pois cada um pode gerar benefícios diferentes: logo no início, eles orientam as decisões arquitetônicas e os esforços de refatoração, ao mesmo tempo em que é mais barato e fácil fazer alterações. Ao final de cada sprint ou iteração, eles validam o desempenho do aplicativo com os recursos e funcionalidades mais recentes. 

 Antes da implantação na produção, testes de carga em grande escala que simulam padrões de uso reais esperados confirmam a capacidade do sistema de lidar com a carga de trabalho de produção. Após a implantação, testes de carga periódicos monitoram o desempenho do sistema e identificam mudanças ou gargalos que podem surgir ao longo do tempo. 

 Para simular o tráfego de jogadores, você precisa de clientes ou bots leves que emulem os fluxos do cliente do jogo e façam transações com o back-end do jogo para simular o comportamento do jogador no mundo real. Esses dados geralmente são capturados por meio de registros de jogabilidade e dados gerados por testes de controle de qualidade conduzidos por humanos, bem como por meio de testes alfa ou beta em escala limitada do mundo real, nos quais jogadores reais são convidados a jogar uma versão do jogo com acesso antecipado. 

 É importante registrar o comportamento do sistema em um runbook operacional para ajudar na solução de possíveis falhas no futuro e reter métricas de desempenho com as quais os futuros testes de carga possam ser comparados. Também é recomendável que o pessoal humano de controle de qualidade teste o jogo enquanto ele está sendo testado de carga, pois eles podem descobrir problemas que os bots não conseguem identificar e as métricas não refletem. 

 [AWS O Fault Injection Service ](https://aws.amazon.com/fis/) é um serviço totalmente gerenciado para executar experimentos de injeção de falhas que facilitam a melhoria do desempenho, da observabilidade e da resiliência de um aplicativo. Os experimentos de injeção de falhas são usados na engenharia do caos, que é a prática de sobrecarregar uma aplicação em ambientes de teste ou produção criando eventos disruptivos, como aumento repentino no consumo de CPU ou memória, observar como o sistema responde e implementar melhorias. Os experimentos de injeção de falhas ajudam as equipes a criar as condições reais necessárias para descobrir os bugs ocultos, monitorar pontos cegos e gargalos de desempenho que são difíceis de encontrar em sistemas distribuídos. 

### Etapas de implementação
<a name="implementation-steps-5"></a>
+  Configure um ambiente de teste de carga distribuído usando o [ Guidance for Kubernetes-Bases Game Load Testing](https://aws.amazon.com/solutions/guidance/kubernetes-based-game-load-testing-on-aws/). 
+  Personalize e implante os pods de controle e de trabalho do Locust no cluster EKS usando os arquivos de implantação fornecidos, permitindo a geração de carga escalável e gerenciável. 
+  Registre o comportamento e as métricas do sistema durante o teste de carga em um runbook operacional para ajudar na solução de problemas futuros e estabelecer linhas de base de desempenho. 
+  Use experimentos de injeção de falhas para simular interrupções do mundo real e descobrir problemas ocultos no desempenho, observabilidade e resiliência do sistema. 