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
O teste de carga é o processo de simular o tráfego do mundo 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
O teste de carga é um fator-chave para desenvolver uma linha de base de desempenho para seus recursos e entender a capacidade do seu sistema, que pode orientar a previsão financeira, o projeto de arquitetura, a alocação de recursos, as configurações de escalabilidade automatizadas e as atividades de pré-escalonamento 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 lote, 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 descobrir problemas de tratamento de erros que precisam ser corrigidos.
Idealmente, os desenvolvedores devem realizar testes de carga em vários pontos do processo de desenvolvimento, pois cada um pode gerar benefícios diferentes: desde o início, eles orientam as decisões de arquitetura e os esforços de refatoração, enquanto é 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 simulando padrões de uso esperados no mundo real 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 alterações ou gargalos que possam 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 jogo e dados gerados por testes de controle de qualidade conduzidos por humanos, bem como por meio de testes alfa ou beta de 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 auxiliar na solução de possíveis falhas no futuro e reter métricas de desempenho com as quais futuros testes de carga possam ser comparados. Também é recomendável que uma equipe humana de controle de qualidade teste o jogo durante o teste de carga, pois eles podem descobrir problemas que os bots não conseguem identificar e que as métricas não refletem.
AWS O Fault Injection Service
Etapas de implementação
-
Configure um ambiente de teste de carga distribuído usando o Guidance for Kubernetes-Bases
Game Load Testing. -
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 futura solução de problemas e estabelecer linhas de base de desempenho.
-
Use experimentos de injeção de falhas para simular interrupções no mundo real e descobrir problemas ocultos no desempenho, observabilidade e resiliência do sistema.