Partilhar via


Recomendações para otimização contínua do desempenho

Aplica-se a esta recomendação de lista de verificação de Eficiência de Desempenho do Azure Well-Architected Framework:

PE:12 Otimizar continuamente o desempenho. Concentre-se nos componentes que mostram uma deterioração do desempenho ao longo do tempo, como bases de dados e funcionalidades de rede.

Este guia descreve as recomendações para otimização contínua do desempenho. A otimização contínua do desempenho é o processo de monitorização, análise e melhoria constante da eficiência de desempenho. A eficiência de desempenho adapta-se a aumentos e diminuições na procura. A otimização do desempenho tem de ser uma atividade contínua ao longo da vida útil da carga de trabalho. Muitas vezes, o desempenho da carga de trabalho degrada-se ou torna-se excessivo ao longo do tempo e os fatores a considerar incluem alterações nos padrões de utilização, na procura, nas funcionalidades e na dívida técnica.

Definições

Termo Definição
Camadas de dados Uma estratégia de armazenamento que envolve categorizar dados com base na respetiva frequência de acesso e armazená-lo em camadas de armazenamento em conformidade.
Dívida técnica As ineficiências acumuladas, escolhas de design subótimas ou atalhos feitos intencionalmente durante o processo de desenvolvimento para fornecer código mais rapidamente.
Tempo de vida Um mecanismo que define um tempo de expiração para os dados.

Principais estratégias de design

A eficiência de desempenho é quando a capacidade da carga de trabalho está alinhada com a utilização real. Uma carga de trabalho que sobreforma é tão problemática como aquela que não tem um desempenho inferior. As trocas diferem. O overperformance afeta a otimização de custos. O mau desempenho afeta os utilizadores. A chave para a eficiência de desempenho é monitorizar, ajustar e testar ao longo do tempo. Tem de rever regularmente as métricas de desempenho e fazer ajustes conforme necessário para garantir que a carga de trabalho é eficiente. É necessário testar todas as alterações pré e pós-implementação para atingir os objetivos de desempenho.

Desenvolver uma cultura de desempenho

Uma cultura de desempenho é um ambiente em que é esperada uma melhoria contínua e a equipa aprende com a produção. A otimização do desempenho requer competências especializadas. As equipas de cargas de trabalho precisam das competências e mentalidades certas para otimizar o seu desempenho para satisfazer os aumentos e as diminuiçãos da procura. Também tem de alocar o respetivo tempo para suportar a monitorização e a remediação necessárias dos problemas de desempenho à medida que surgem. Estas equipas precisam de expectativas claras. Por exemplo, os destinos de desempenho, as linhas de base e os limiares de desvio (quão longe da linha de base é aceitável) têm de ser altamente visíveis e socializados.

Desvantagem: as otimizações de desempenho contínuas requerem uma equipa que tenha as competências e o tempo certos para encontrar e corrigir problemas de desempenho. Dedicar pessoal ao desempenho aumenta os custos operacionais. Se tiver recursos de pessoal limitados, a otimização contínua do desempenho poderá tirar tempo a outras tarefas operacionais.

Avaliar novas funcionalidades da plataforma

Avaliar as novas funcionalidades da plataforma envolve examinar as novas funcionalidades e ferramentas de uma plataforma que podem melhorar a eficiência de desempenho, como soluções de armazenamento otimizadas, mecanismos de colocação em cache ou ferramentas de gestão de recursos. As novas funcionalidades da plataforma podem abrir vias para melhorar a eficiência de desempenho. Mantenha a plataforma e as ferramentas atualizadas para garantir que está a utilizar as inovações e as melhores práticas mais recentes. Monitorize consistentemente os comentários e as métricas de desempenho destas novas adições para refinar a sua abordagem.

Priorizar os esforços de otimização

Otimizar proativamente o desempenho significa tomar medidas proativas para melhorar e melhorar o desempenho da carga de trabalho antes de surgirem quaisquer problemas de desempenho. A utilização de medidas proativas envolve identificar potenciais estrangulamentos, monitorizar métricas de desempenho e implementar otimizações para garantir que a carga de trabalho funciona de forma eficiente e cumpre os objetivos de desempenho pretendidos. Com base na análise da deterioração de componentes, fluxos críticos e dívida técnica, pode implementar otimizações de desempenho específicas de cada área. As melhorias podem envolver alterações de código, ajustes de infraestrutura ou atualizações de configuração.

Priorizar a deterioração dos componentes

Muitas vezes, uma carga de trabalho tem componentes como bases de dados e componentes de rede que são propensos a degradaçãos de desempenho ao longo do tempo. À medida que a carga de trabalho evolui e os padrões de utilização mudam, estas alterações afetam frequentemente o desempenho de componentes individuais na carga de trabalho. O aumento dos dados nas bases de dados pode levar a tempos de execução de consultas mais longos e a uma obtenção de dados mais lenta. As alterações nos padrões de utilização podem resultar na conceção de consultas subótimas. As consultas que outrora foram eficientes podem tornar-se ineficientes à medida que a carga de trabalho evolui. As consultas ineficientes podem consumir recursos excessivos e degradar o desempenho da base de dados. O aumento da utilização da carga de trabalho pode levar a um maior tráfego de rede, causando problemas de congestionamento e latência.

É importante envidar esforços contínuos para otimizar o desempenho destes componentes. Identifique e resolva proativamente problemas de desempenho na carga de trabalho. Ao atribuir prioridades a componentes conhecidos de deterioração, pode resolver proativamente potenciais problemas de desempenho e garantir o bom funcionamento da carga de trabalho. Pode envolver a implementação de técnicas de otimização de desempenho, otimização da alocação de recursos ou atualização de componentes de hardware ou software, conforme necessário.

Priorizar fluxos críticos

Os fluxos críticos são os processos ou fluxos de trabalho mais importantes e de alta prioridade na carga de trabalho. Ao atribuir prioridade a estes fluxos críticos, certifique-se de que as partes mais essenciais da carga de trabalho estão otimizadas para o desempenho. Saber que fluxos são fundamentais ajuda a priorizar os esforços de otimização. Otimizar a eficiência de desempenho das áreas mais importantes da sua aplicação proporciona o maior retorno sobre o investimento. Deve monitorizar os fluxos críticos e as páginas mais populares. Procure formas de torná-los mais eficientes.

Automatizar a otimização do desempenho

A automatização pode eliminar processos manuais repetitivos e morosos, permitindo que sejam executados de forma eficiente. A automatização reduz as hipóteses de erro humano e garante a consistência na execução de tarefas de otimização. Ao automatizar estas tarefas, também pode libertar pessoas para se concentrarem em atividades e atividades mais complexas que acrescentam valor. Pode aplicar automatização a várias tarefas, tais como testes de desempenho, implementação e monitorização:

  • Testes de desempenho automatizados: utilize ferramentas automatizadas de teste de desempenho, como JMeter, K6 ou Selenium, para simular diferentes cargas de trabalho e cenários.

  • Implementação automatizada: implemente processos de implementação automatizados para garantir implementações consistentes e sem erros. Utilize ferramentas CI/CD para automatizar o processo de implementação. Estas ferramentas podem ajudá-lo a identificar estrangulamentos de desempenho à medida que os utiliza para testar pontos finais, verificar os estados HTTP e até mesmo validar a qualidade e as variações dos dados.

  • Monitorização e alertas: configure sistemas de monitorização e alerta automatizados para monitorizar continuamente as métricas de desempenho e detetar eventuais desvios ou anomalias. Quando são detetados problemas de desempenho, podem ser acionados alertas automatizados para notificar as equipas ou indivíduos adequados.

  • Gestão de incidentes: implemente um sistema automatizado de gestão de incidentes que possa receber alertas, criar pedidos e atribuir pedidos de suporte às equipas adequadas para resolução. Estes passos ajudam a garantir que os problemas de desempenho são rapidamente resolvidos e atribuídos aos recursos certos.

  • Diagnóstico automatizado: desenvolva ferramentas de diagnóstico automatizadas ou scripts que possam analisar dados de desempenho e identificar as causas principais dos problemas de desempenho. Estas ferramentas podem ajudar a identificar áreas ou componentes específicos do sistema que estão a causar problemas de desempenho.

  • Ações de remediação automatizadas: defina e implemente ações de remediação automatizadas que podem ser acionadas quando são detetados problemas de desempenho específicos. Estas ações podem incluir reiniciar serviços, ajustar a alocação de recursos, limpar caches ou implementar outras técnicas de otimização de desempenho.

  • Sistemas de recuperação automática: crie capacidades de recuperação automática no seu sistema ao automatizar o processo de recuperação para problemas de desempenho conhecidos. Esta capacidade pode envolver a correção ou ajuste automático da configuração do sistema para restaurar o desempenho ideal.

Endereçar dívida técnica

A dívida técnica refere-se às ineficiências acumuladas, escolhas de design subótimas ou atalhos realizados durante o processo de desenvolvimento que podem afetar o desempenho. A dívida técnica, o código pouco claro e as implementações excessivamente complexas podem dificultar a obtenção da eficiência de desempenho. A resolução da dívida técnica envolve identificar e resolver estes problemas para melhorar o desempenho global e a manutenção da carga de trabalho. Este trabalho pode incluir a refatorização de código, a otimização de consultas de bases de dados, a melhoria da estrutura arquitetónica ou a implementação de melhores práticas. Talvez tenha introduzido a dívida técnica para cumprir um prazo, mas precisa de resolver a dívida técnica à medida que otimiza a eficiência de desempenho ao longo do tempo.

Otimizar bases de dados

A otimização contínua de bases de dados envolve identificar e implementar otimizações para garantir que as bases de dados conseguem processar cargas, fornecer tempos de resposta rápidos e minimizar a utilização de recursos. Ao otimizar regularmente bases de dados, pode melhorar o desempenho da aplicação, reduzir o tempo de inatividade e melhorar a experiência geral do utilizador.

  • Otimizar consultas de base de dados: as instruções SQL mal escritas podem degradar o desempenho da base de dados. As condições de ASSOCIAÇÃO ineficientes podem causar o processamento de dados desnecessários. Subconsultas complexas, consultas aninhadas e funções excessivas podem reduzir a velocidade de execução. As consultas que obtêm demasiados dados devem ser reescritas. Deve identificar as consultas de base de dados mais comuns ou críticas e otimizá-las. A otimização ajuda a garantir consultas mais rápidas.

  • Manter índices: avalie a sua estratégia de indexação para garantir que os índices são corretamente concebidos e mantidos. A manutenção de índices inclui a identificação de índices não utilizados ou redundantes e a criação de índices alinhados com os padrões de consulta. Os índices de bases de dados ajudam a acelerar as operações de obtenção de dados. Para bases de dados relacionais, tem de monitorizar a fragmentação de índices. Deve reconstruir ou reorganizar índices regularmente. Para bases de dados não relacionais, tem de escolher a política de indexação correta para a carga de trabalho. Utilize a otimização automática em bases de dados, sempre que disponível. Estas funcionalidades incluem a criação automática de índices em falta, a remoção de índices não utilizados e a correção do plano. Para obter mais informações, veja Manter índices para melhorar o desempenho.

  • Rever a estrutura do modelo: reveja o modelo de dados para garantir que o otimiza para os requisitos específicos da aplicação. Melhorar o desempenho das consultas e a obtenção de dados pode envolver desnormalização, criação de partições ou outras técnicas.

  • Otimizar a configuração da base de dados: otimize as definições de configuração da base de dados, como a alocação de memória, E/S do disco e definições de simultaneidade para maximizar o desempenho e a utilização de recursos.

Otimizar a eficiência dos dados

Otimizar a eficiência dos dados é o processo de garantir que os dados são armazenados, processados e acedidos da forma mais eficiente possível. O arrumo de dados e a utilização de TTL (time-to-live) são técnicas que podem ser utilizadas para otimizar a eficiência dos dados. Pode aplicar estas técnicas em vários cenários de armazenamento de dados, como bases de dados, sistemas de ficheiros ou armazenamento de objetos.

  • Utilizar a camada de dados: a camada de dados envolve categorizar dados com base na sua importância ou frequência de acesso e armazenamento de dados em diferentes camadas em conformidade. A configuração de camadas de dados permite uma utilização mais eficiente dos recursos de armazenamento e melhora o desempenho. Os dados frequentemente acedidos ou críticos podem ser armazenados em escalões de elevado desempenho, enquanto os dados menos frequentemente acedidos ou menos críticos podem ser armazenados em escalões de menor custo. O objetivo é rever a utilização de dados ao longo do tempo para garantir que os dados estão na camada correta. À medida que as prioridades dos dados mudam, os dados devem passar de uma camada para outra.

  • Implementar o time-to-live: o time-to-live é um mecanismo que define um tempo de expiração para os dados. O time-to-live permite que os dados sejam eliminados ou arquivados automaticamente após um determinado período, reduzindo os requisitos de armazenamento e melhorando a gestão de dados. Ao definir um time-to-live adequado, permite a remoção de dados desnecessários, libertando espaço de armazenamento e melhorando a eficiência geral. Os dados de sessão, os ficheiros temporários e os dados em cache são destinos frequentes do time-to-live. As entradas da base de dados também podem ter um tempo de vida.

Risco: um tempo de vida demasiado curto pode criar problemas de desempenho.

Facilitação do Azure

Automatizar a otimização do desempenho: o Assistente do Azure fornece recomendações de desempenho automáticas com base na telemetria da carga de trabalho. Deve rever e abordar estas recomendações regularmente. O Azure Monitor fornece informações em tempo real sobre o desempenho do seu sistema e permite-lhe configurar alertas com base em métricas de desempenho específicas. O Azure Log Analytics fornece diagnósticos automatizados e análises sobre registos e métricas recolhidos. Ferramentas como o Aplicação Azure Insights fornecem informações e recomendações para otimizar o desempenho.

Para automatizar a remediação, utilize ferramentas de automatização ou scripts para executar ações de remediação automaticamente quando os alertas são acionados. Pode utilizar soluções de automatização Automatização do Azure, Funções do Azure ou personalizadas.

O Azure permite testar o desempenho para simular diferentes cenários de utilizador e cargas de trabalho. Os testes automatizados podem ajudá-lo a identificar estrangulamentos de desempenho e a otimizar o seu sistema em conformidade. Ferramentas como o Azure DevOps podem automatizar os testes de desempenho.

Otimizar bases de dados: a família de produtos SQL tem muitas funcionalidades incorporadas que lhe permitem monitorizar e remediar o desempenho da base de dados SQL. Deve utilizar estas funcionalidades para manter o desempenho da base de dados. SQL do Azure Base de Dados tem uma funcionalidade de otimização automática que monitoriza e melhora continuamente as consultas. Deve utilizar esta funcionalidade para melhorar automaticamente as consultas SQL.

Pode personalizar as suas políticas de indexação com as funcionalidades do Azure Cosmos DB. Personalize as políticas para satisfazer as necessidades de desempenho da carga de trabalho.

Otimizar a eficiência dos dados: o arrumo de dados permite-lhe armazenar dados em diferentes camadas com base na respetiva frequência e importância de acesso. Ajuda a otimizar os custos de armazenamento e o desempenho. O Azure fornece diferentes camadas de armazenamento, como camadas frequentes, esporádicas e de arquivo para dados de blobs. As camadas de acesso frequente são otimizadas para dados acedidos frequentemente, as camadas esporádica destinam-se a dados acedidos com pouca frequência e as camadas de arquivo destinam-se a dados raramente acedidos. Ao utilizar a camada de acesso ao armazenamento mais adequada aos seus dados, pode garantir armazenamento e obtenção de dados eficientes.

Lista de verificação de Eficiência de Desempenho

Veja o conjunto completo de recomendações.