Obter e manter o desempenho

Concluído
Proteja-se contra a degradação do desempenho enquanto o sistema estiver em uso e à medida que ele evolui.

O desenvolvimento não é um esforço único. É um processo contínuo. Espere alterações no desempenho à medida que os recursos são alterados. Há variação nos padrões e perfis de usuários, até mesmo mudanças de otimizações em outros pilares do Azure Well-Architected. Qualquer alteração pode sobrecarregar os recursos da carga de trabalho.

Proteja o sistema contra alterações para que ele não retroceda em relação às metas de desempenho. Integre o teste e o monitoramento no processo de desenvolvimento. Teste o desempenho do sistema em produção com carga real e simule essa carga com testes automatizados antes da produção. Em ambos os casos, você deve ter práticas de monitoramento em vigor para fins de verificação.

Durante todo o ciclo de vida do desenvolvimento, realize vários tipos de testes em diferentes estágios. Nos estágios iniciais, teste a prova de conceito para garantir que os resultados de desempenho não sejam totalmente inesperados. À medida que o desenvolvimento progride, realize testes manuais de baixo esforço para estabelecer padrões de comparação. No estágio de criação, comece a desenvolver testes de desempenho de rotina automatizados que avaliam a latência, os níveis de estresse, a capacidade de carga e outras características definidas nos planos de teste.

O monitoramento deve ser parte integrante desse esforço, em vez de ser um exercício isolado. Você pode ver como o sistema e seus recursos funcionam ao longo do tempo. Em seguida, você pode ajustá-los para maximizar seu valor e garantir que continuem a atender aos padrões de desempenho.

Lembre-se de que as metas de desempenho variam com o tempo, em resposta às mudanças. Atualize o modelo de desempenho com base em métricas testadas e monitoradas. Indique claramente o efeito de aumento, redução ou ausência de efeito sobre o desempenho dos fluxos.

Esteja sempre pronto para renegociar e redefinir as expectativas com os stakeholders do negócio.

Cenário de exemplo

A Contoso Event Solutions oferece um produto que a equipe de entrada do evento pode usar para verificar os tíquete em um dispositivo móvel e permitir rapidamente a entrada em um local com tíquetes para as pessoas autorizadas. O sistema está disponível em um modo totalmente offline e também em uma versão conectada à nuvem para locais preocupados com a duplicação de tíquetes. O modo offline tem alto desempenho, mas o modo online não estava atingindo suas metas de desempenho. A equipe de desenvolvimento investiu recentemente alguns ciclos de desenvolvimento para trabalhar nisso, e agora o desempenho está muito melhor e atendendo às metas. Os stakeholders do negócio gostariam de expandir sua base de clientes para dar suporte a locais maiores em breve.

Teste de desempenho no desenvolvimento

Formalizar os testes de desempenho como portas de qualidade que podem aprovar ou negar a promoção da versão e a implantação final na produção.

Esses pontos de verificação garantem que cada estágio da implantação atenda aos padrões de desempenho exigidos antes de prosseguir para o próximo. Os pontos de verificação ajudam a evitar a regressão não intencional do desempenho. Por exemplo, se o desempenho estiver significativamente abaixo das expectativas, você poderá bloquear uma versão até que sejam feitas melhorias.

Desafio da Contoso

  • A equipe investiu tempo e esforço consideráveis para obter um desempenho aceitável para a versão online do aplicativo, mas não tem nenhum sistema em vigor para evitar uma regressão.
  • O próximo recurso que eles planejam adicionar é a possibilidade de um local optar por mostrar uma foto do participante junto com a digitalização para verificação adicional. Existe o risco de que a pesquisa e o download adicionais da foto tornem o processo mais lento.
  • Sem um processo formal em vigor, há o risco de que o desempenho das versões online e offline seja afetado negativamente pela funcionalidade adicional e que elas fiquem abaixo de suas metas.

Aplicando a abordagem e os resultados

  • A equipe integra testes de desempenho automatizados ao pipeline de build. Ao implementar critérios rigorosos de "ir/não ir" baseados no desempenho no pipeline de build, a equipe tem mais confiança de que o novo recurso não será lançado com uma regressão de desempenho.
  • A equipe foi sábia ao implementar esse teste, pois ele detectou um bug na versão mais recente da compilação. O bug forçava o aplicativo a tentar se conectar à Internet para fazer o download de uma imagem enquanto o scanner estava configurado no modo offline, causando um tempo limite a cada digitalização de tíquete. A detecção desse erro com os testes automatizados permitiu que a equipe o corrigisse antes de lançar a nova versão.

Otimizar por meio da observabilidade

Estabeleça um processo repetível para monitorar as transações reais em produção e os desvios em relação às suas metas de desempenho. Além disso, use transações sintéticas na produção e configure alertas de monitoramento sobre regressões de desempenho.

Você deseja insights sobre o desempenho real do seu sistema sob cargas reais que não puderam ser simuladas através de testes. Assim, você poderá identificar proativamente problemas e áreas de melhoria, como possíveis gargalos, recursos subutilizados e outras preocupações.

Desafio da Contoso

  • Durante um evento em que eles estão usando a validação de tíquetes online, o sistema de back-end é muito utilizado.
  • Existe um sistema de monitoramento de desempenho de aplicativos (APM) em vigor, mas ele não foi utilizado para monitorar a integridade das transações de produção.

Aplicando a abordagem e os resultados

  • A equipe decidiu adotar processos atualizados para capturar melhor as métricas de integridade:
    • Eles configuram alertas com base em percentis de desempenho e para exceções de desempenho. A ausência de alertas indica que o sistema está funcionando em intervalos aceitáveis para a maioria das verificações de tíquetes.
    • Após a conclusão de um evento offline, a telemetria das verificações de tíquetes é carregada em lote e essas métricas também passam por um processo para procurar desvios de desempenho aceitável.
    • A equipe também implementa testes de transações sintéticas para aumentar o monitoramento do desempenho. Como quase todos os eventos ocorrem nos finais de semana e à noite, a equipe usa testes de transações sintéticas durante a semana para gerar uma linha de base de desempenho mais consistente.

Lidar com as mudanças na carga de trabalho de forma inteligente

Trate a erosão do desempenho à medida que o uso aumenta, os recursos são alterados e os dados se acumulam com o tempo para manter o desempenho. Redefina as expectativas e estabeleça novas metas, se o ajuste fino trouxer apenas benefícios de curto prazo.

Ao adotar essa abordagem, é possível preservar o estado do desempenho antes que a degradação se transforme em problemas que afetem negativamente a experiência do usuário além do intervalo aceitável.

A alteração das metas redefine o modelo de desempenho e você não perde tempo otimizando o sistema que já atingiu sua capacidade.

Desafio da Contoso

  • A equipe de vendas tem integrado agressivamente novos locais de eventos ao sistema. Os negócios vão bem.
  • O sistema de monitoramento da carga de trabalho começou a perceber que o orçamento de desempenho está sendo consumido cada vez mais ao longo do tempo, mesmo sem a introdução de novos recursos.
  • Sem uma alteração, essa trajetória pode levar a uma regressão inaceitável no desempenho, colocando a carga de trabalho em risco de sofrer uma interrupção se ocorrer um incidente.

Aplicando a abordagem e os resultados

  • A equipe percebe que, à medida que mais clientes são integrados, o mecanismo de pesquisa de dados para eventos online está fazendo uma verificação muito grande nos dados para muitas consultas.
  • Algumas otimizações de consultas ajudaram a evitar que o aumento do uso causasse danos adicionais. Nos próximos meses, a equipe planeja dividir diferentes eventos em diferentes partições de dados para reduzir a necessidade de verificação de consultas. Isso dará suporte para a contínua colocação em escala da carga de trabalho.
  • Eles também perceberam que podem otimizar ainda mais o sistema para crescer removendo os dados de emissão de tíquetes de eventos antigos. Pesquisar eventos antigos não é algo que o sistema de validação de tíquetes deva fazer, de modo que os dados possam ser migrados para um repositório dedicado a relatar e pesquisar históricos.

Verifique seu conhecimento

1.

Verdadeiro ou falso: não é recomendado testar o desempenho durante a produção.

2.

Qual dos seguintes aspectos da carga de trabalho você deve monitorar para ajudar a garantir que as metas de desempenho sejam atingidas?

3.

Por que a equipe da Contoso está planejando alterar a estrutura do banco de dados?