REL12-BP03 Testar os requisitos de escalabilidade e desempenho - Framework Well-Architected da AWS

REL12-BP03 Testar os requisitos de escalabilidade e desempenho

Use técnicas como teste de carga para validar se a workload atende aos requisitos de escalabilidade e desempenho.

É possível criar na nuvem um ambiente de teste em escala de produção sob demanda para a workload. Em vez de depender de um ambiente de teste com escala vertical reduzida, o que pode levar a previsões imprecisas dos comportamentos de produção, você pode usar a nuvem para provisionar um ambiente de teste que espelhe o ambiente de produção esperado. Esse ambiente ajuda você a testar em uma simulação mais precisa das condições reais que a aplicação enfrenta.

Além das ações de teste de desempenho, é essencial validar que os recursos básicos, as configurações escalabilidade, as cotas de serviço e o design de resiliência operem conforme o esperado sob carga. Essa abordagem holística verifica se a aplicação pode ser escalada e executada de forma confiável conforme necessário, mesmo sob as condições mais exigentes.

Resultado desejado: a workload mantém o comportamento esperado mesmo quando está sujeita a picos de carga. Você aborda proativamente quaisquer problemas relacionados ao desempenho que possam surgir à medida que a aplicação cresce e evolui.

Práticas comuns que devem ser evitadas:

  • Usar ambientes de teste que não são muito parecidos com o ambiente de produção.

  • Tratar o teste de carga como uma atividade separada e única, em vez de uma parte integrada do pipeline de integração contínua (CI) da implantação.

  • Não definir requisitos de desempenho claros e mensuráveis, como metas de tempo de resposta, throughput e escalabilidade.

  • Executar testes com cenários de carga irrealistas ou insuficientes e não conseguir testar cargas de pico, picos repentinos e alta carga sustentada.

  • Não testar o estresse da workload excedendo os limites de carga esperados.

  • Usar ferramentas de teste de carga e perfil de desempenho inadequadas ou indevidas.

  • Não ter sistemas abrangentes de monitoramento e alerta para rastrear métricas de desempenho e detectar anomalias.

Benefícios de implementar essa prática recomendada:

  • O teste de carga ajuda você a identificar possíveis gargalos de desempenho no sistema antes da entrada em produção. Ao simular tráfego e workloads em nível de produção, você pode identificar áreas em que o sistema pode ter dificuldades para lidar com a carga, como tempos de resposta lentos, restrições de recursos ou falhas do sistema.

  • Ao testar o sistema sob várias condições de carga, você pode entender melhor os requisitos de recursos necessários para oferecer suporte à workload. Essas informações podem ajudar você a tomar decisões informadas sobre a alocação de recursos e evitar o provisionamento excessivo ou insuficiente de recursos.

  • Para identificar possíveis pontos de falha, você pode observar o desempenho da workload em condições de alta carga. Essas informações ajudam você a melhorar a confiabilidade e a resiliência da workload, implementando mecanismos de tolerância a falhas, estratégias de failover e medidas de redundância, conforme apropriado.

  • Você identifica e aborda problemas de desempenho com antecedência, o que ajuda a evitar as consequências dispendiosas de interrupções do sistema, tempos de resposta lentos e usuários insatisfeitos.

  • Dados detalhados de desempenho e informações de perfil coletados durante o teste podem ajudar você a solucionar problemas relacionados ao desempenho que possam surgir na produção. Isso pode proporcionar mais agilidade na resposta e resolução de incidentes, o que reduz o impacto nos usuários e nas operações da organização.

  • Em certos setores, os testes proativos de desempenho podem ajudar a workload a atender aos padrões de conformidade, o que reduz o risco de penalidades ou problemas legais.

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

Orientação para implementação

A primeira etapa é definir uma estratégia de teste abrangente que cubra todos os aspectos dos requisitos de escalabilidade e desempenho. Para começar, defina claramente os objetivos de nível de serviço (SLOs) da workload com base nas necessidades de empresa, como throughput, histograma de latência e taxa de erros. Depois, crie um conjunto de testes que possa simular vários cenários de carga, que variam de uso médio a picos repentinos e picos contínuos de carga, e verifique se o comportamento da workload atende aos SLOs. Esses testes devem ser automatizados e integrados ao pipeline contínuo de integração e implantação para detectar regressões de desempenho no início do processo de desenvolvimento.

Para testar com eficácia a escalabilidade e o desempenho, invista nas ferramentas e na infraestrutura certas. Isso inclui ferramentas de teste de carga que podem gerar tráfego realista de usuários, ferramentas de perfil de desempenho para identificar gargalos e soluções de monitoramento para rastrear as principais métricas. É importante ressaltar que você deve verificar se os ambientes de teste correspondem perfeitamente ao ambiente de produção em termos de infraestrutura e condições do ambiente para tornar os resultados dos testes o mais precisos possível. Para facilitar a replicação e a escalabilidade confiáveis de configurações semelhantes às de produção, use a infraestrutura como código e aplicações baseadas em contêineres.

Os testes de escalabilidade e desempenho são um processo contínuo, não uma atividade que deve ser realizada uma única vez. Implemente monitoramento e alertas abrangentes para monitorar o desempenho da aplicação em produção e use esses dados para refinar continuamente as estratégias de teste e os esforços de otimização. Analise regularmente os dados de desempenho para identificar problemas emergentes, testar novas estratégias de escalabilidade e implementar otimizações para melhorar a eficiência e a confiabilidade da aplicação. Ao adotar uma abordagem iterativa e aprender constantemente com os dados de produção, você pode verificar se a aplicação pode se adaptar às demandas variáveis do usuário e manter a resiliência e o desempenho ideal ao longo do tempo.

Etapas de implementação

  1. Estabeleça requisitos de desempenho claros e mensuráveis, como metas de tempo de resposta, throughput e escalabilidade. Esses requisitos devem se basear nos padrões de uso da workload, nas expectativas dos usuários e nas necessidades comerciais.

  2. Selecione e configure uma ferramenta de teste de carga que possa imitar com precisão os padrões de carga e o comportamento do usuário no ambiente de produção.

  3. Configure um ambiente de teste que corresponda perfeitamente ao ambiente de produção, incluindo condições ambientais e de infraestrutura, para melhorar a precisão dos resultados dos testes.

  4. Crie um conjunto de testes que cubra uma ampla variedade de cenários, desde padrões de uso médio até picos de carga, picos rápidos e altas cargas contínuas. Integre os testes aos pipelines contínuos de integração e implantação para capturar regressões de desempenho no início do processo de desenvolvimento.

  5. Realize testes de carga para simular o tráfego real de usuários e entender como a aplicação se comporta sob diferentes condições de carga. Para testar o estresse da aplicação, exceda a carga esperada e observe o comportamento dela, como degradação do tempo de resposta, esgotamento de recursos ou falhas do sistema, o que ajuda a identificar o ponto de ruptura da aplicação e informar as estratégias de escalabilidade. Avalie a escalabilidade da workload aumentando incrementalmente a carga e meça o impacto no desempenho para identificar limites de escalabilidade e planejar futuras necessidades de capacidade.

  6. Implemente monitoramento e alertas abrangentes para rastrear métricas de desempenho, detectar anomalias e iniciar ações ou notificações de escalabilidade quando os limites forem excedidos.

  7. Monitore e analise continuamente os dados de desempenho para identificar áreas de melhoria. Itere as estratégias de teste e os esforços de otimização.

Recursos

Práticas recomendadas relacionadas:

Documentos relacionados:

Exemplos relacionados:

Ferramentas relacionadas: