A Eficiência de Desempenho consiste em manter a experiência do usuário mesmo quando há um aumento na carga por meio do gerenciamento de capacidade. A estratégia inclui dimensionar recursos, identificar e otimizar potenciais gargalos e otimizar para obter o máximo desempenho.
Esse modelo de maturidade orienta você por uma jornada estratégica de otimização de desempenho, dimensionando recursos, identificando e otimizando gargalos potenciais e otimizando para desempenho máximo.
Você começará selecionando os componentes certos e estabelecendo metas de desempenho e, em seguida, passará a medir e monitorar o comportamento da sua carga de trabalho. À medida que amadurece, você incorporará feedback real dos usuários para refinar sua abordagem, aproveitar os insights de produção para melhorias direcionadas e, finalmente, alcançar otimização avançada por meio de experimentação e automação. Cada estágio se baseia no anterior, transformando sua estratégia de desempenho de solução de problemas reativa para engenharia de eficiência proativa.
O modelo está estruturado em cinco níveis de maturidade distintos, cada um com um objetivo principal e um conjunto de estratégias centrais. Utilize as vistas com separadores abaixo para explorar cada nível. Certifique-se também de analisar as compensações destacadas e os riscos associados à medida que progride.
Estabeleça expectativas claras de desempenho e selecione componentes de tamanho adequado que se alinhem às suas necessidades.
O nível 1 do modelo de maturidade se concentra em reunir expectativas de desempenho e escolher serviços em nuvem que ajudam você a atender a essas expectativas. Nesse nível, você investiga esses recursos e componentes para encontrar o melhor ajuste. Priorize serviços que forneçam apenas os recursos de desempenho necessários. Essa abordagem ajuda a controlar os custos e mantém sua velocidade de desenvolvimento.
Estratégias-chave
Trabalhe com as partes interessadas para entender as expectativas gerais para o desempenho da carga de trabalho. Essas expectativas podem incluir metas para tempos de carregamento de páginas para aplicativos Web ou tempos de resposta para sistemas interativos. Neste estágio de desenvolvimento da carga de trabalho, trate essas metas como diretrizes em vez de requisitos rígidos, porque seu foco ainda não está em medir métricas de desempenho. Depois de reunir as expectativas de carga de trabalho, comece a investigar os tipos de recursos que podem se adequar à sua carga de trabalho.
✓ Escolha recursos de rede apropriados
Avalie suas necessidades de rede para determinar serviços e configurações apropriados para sua carga de trabalho. Considere o tráfego de rede, a largura de banda, a latência e a taxa de transferência para garantir que a rede suporte sua carga de trabalho de forma eficaz. Use redes virtuais privadas e redes de backbone para reduzir a latência.
Garanta uma distribuição uniforme do tráfego de rede para evitar a sobrecarga do servidor e reduzir os tempos de resposta. Avalie os diferentes serviços de balanceamento de carga que seu provedor de nuvem oferece. Considere o tipo de tráfego, o roteamento global ou regional, os objetivos de nível de serviço e recursos específicos, como aceleração do site e balanceamento de carga de baixa latência.
Risco: Reserve um tempo para investigar e entender completamente as diferentes opções para redes fundamentais. Alterações posteriores nessa área podem exigir um redesenho e uma reimplantação integral.
✓ Escolha recursos de computação apropriados
Avalie as necessidades de computação da sua carga de trabalho, incluindo tipo de instância, escalabilidade e camadas de serviço. Considere a conteinerização para obter ganhos de desempenho por meio de isolamento, eficiência de recursos, tempos de inicialização rápidos e portabilidade.
Escolha um serviço de computação que possa atender às suas necessidades, permitindo que você escale facilmente à medida que sua carga de trabalho evolui. Construir sua carga de trabalho é um processo iterativo. Você pode começar pequeno usando SKUs de menor desempenho e menos instâncias. Atualize esses componentes mais tarde no ciclo de vida da carga de trabalho.
Compensação: Pese as suas necessidades imediatas em relação ao seu orçamento. Procure oportunidades para desligar ou desalocar recursos de computação quando eles não estiverem em uso.
✓ Escolha serviços de armazenamento de dados apropriados
Determine as necessidades da sua carga de trabalho para armazenar, recuperar e gerenciar dados. Considere características como:
Tipos de dados: Que tipos de dados você espera que sua carga de trabalho ingera, processe ou armazene?
Volume: Quantos dados você espera ingerir, processar ou armazenar?
Taxa de transferência da transação: Quais são os requisitos de desempenho para acessar diferentes tipos de dados?
Consistência: Quais são seus objetivos para a consistência de dados entre tipos de dados?
Durabilidade: Quais são seus objetivos para a durabilidade dos dados em todos os tipos de dados?
Padrões de acesso: Que tipos de padrões de acesso sua carga de trabalho precisa suportar? Por exemplo, para um componente específico, você pode precisar executar várias gravações, mas poucas leituras. Para outro componente, talvez seja necessário fazer o oposto.
Com base nas respostas a essas perguntas, escolha o melhor serviço de dados para cada um dos casos de uso da sua carga de trabalho.
Devido à grande variedade de opções para serviços de dados em ambientes de nuvem, você pode personalizar seu design para usar diferentes serviços para melhor corresponder à funcionalidade de cada componente em sua carga de trabalho. Essa abordagem ajuda a otimizar o desempenho de cada componente.
Compensação: Não faça engenharia excessiva de seus componentes de dados escolhendo diferentes serviços de dados para componentes que pode consolidar num único repositório de dados. Estabeleça um equilíbrio entre desempenho versus custo e complexidade.
Implemente um monitoramento de desempenho abrangente para obter visibilidade do comportamento da sua carga de trabalho e identificar oportunidades de otimização.
O nível 2 do pilar Eficiência de Desempenho concentra-se no uso de informações sobre sua carga de trabalho para informar suas otimizações de desempenho. O primeiro passo é identificar fluxos críticos de carga de trabalho de uma perspetiva de desempenho. Em seguida, divida sua carga de trabalho em seus componentes e defina metas e métricas mensuráveis que você pode capturar e analisar para otimizações futuras. Finalmente, você deve investigar padrões de design que possam ajudá-lo a melhorar sua eficiência de desempenho e executar um exercício inicial de planejamento de capacidade. Estas atividades ajudam-no a construir um plano para o futuro imediato da sua carga de trabalho. Essa abordagem garante que o desempenho não seja prejudicado à medida que a carga de trabalho evolui.
Estratégias-chave
Classificar e categorizar seus fluxos de carga de trabalho é uma estratégia importante em cada um dos pilares do Well-Architected Framework. Analisar fluxos da perspetiva de cada pilar ajuda a identificar áreas que precisam ser otimizadas. Você pode comparar essas otimizações para ajudá-lo a determinar onde investir. Por exemplo, em alguns cenários, as preocupações com a segurança de um fluxo podem superar as preocupações com o desempenho. Depois de categorizar e classificar os fluxos, concentre-se nos fluxos que você identifica como críticos para iniciar seu planejamento de otimização. Os critérios específicos de desempenho que podem ajudá-lo a identificar fluxos críticos incluem:
Frequência: O número de vezes que o fluxo é realizado, como a pesquisa de um produto.
Criticidade: O grau de importância que o fluxo tem para o sucesso geral da aplicação, como uma pesquisa de perfil de utilizador.
Risco: O nível de risco que o fluxo tem sobre o desempenho geral, como gerar um relatório complexo.
Intensidade dos dados: A quantidade de pressão que o fluxo coloca na camada de dados.
Intensidade da arquitetura: A medida em que o fluxo interage com os componentes ao longo da carga de trabalho.
✓ Estabeleça métricas-chave para seus recursos e componentes de carga de trabalho que o ajudem a atingir suas metas
Defina metas de desempenho para seus componentes e recursos de carga de trabalho com base em pesquisas de mercado, análises competitivas e pesquisas. Concentre-se em métricas-chave como tempo de resposta, taxa de transferência e latência. Estabeleça metas para diferentes componentes, fluxos de usuário, fluxos de trabalho, fluxos de dados, dependências externas e desempenho geral da carga de trabalho.
Defina metas realistas e mensuráveis para cada métrica, mantendo as expectativas dos clientes em mente. Use percentis como P99, P95 e P50 para obter uma perspetiva abrangente. Execute testes para estabelecer o desempenho da linha de base, mas não dê ênfase excessiva à otimização.
Registre todas as metas de desempenho em um local centralizado acessível às equipes de desenvolvimento e operações. Use painéis e relatórios para tornar os alvos visíveis e acionáveis.
O planejamento de capacidade é um processo iterativo que deve ser conduzido regularmente durante todo o ciclo de vida da sua carga de trabalho. Nesta fase, poderá ainda não estar totalmente familiarizado com todas as tecnologias em uso ou poderá ainda estar a avaliar diferentes opções. Esta incerteza pode limitar a sua capacidade de planear de forma abrangente as necessidades futuras. Para este exercício inicial de planejamento de capacidade, o objetivo é mudar do gerenciamento de capacidade reativa, que inclui a adição de recursos para atender à demanda imediata. Em vez disso, o foco está no planejamento proativo, onde você antecipa a capacidade necessária para um período definido. Para obter um planejamento de capacidade eficaz, colete e analise dados sobre o uso de recursos, incluindo padrões históricos para cargas de trabalho existentes. Use análise estatística, análise de tendências e modelagem preditiva para prever necessidades futuras. Certifique-se de que essas previsões estejam alinhadas com os objetivos da carga de trabalho.
Risco: Em um ambiente tradicional baseado em datacenter, o provisionamento excessivo é uma abordagem comum para o planejamento de capacidade. Em um ambiente de nuvem, o provisionamento excessivo pode ser um desperdício de dinheiro. Considere cuidadosamente suas expectativas de negócios para desenvolver um cronograma para adicionar capacidade de uma forma que atenda às suas necessidades de desempenho sem afetar negativamente seu orçamento.
Há muitos padrões comuns de design de aplicativos que podem ajudá-lo a otimizar sua carga de trabalho para desempenho. Você pode obter ganhos de desempenho adicionando um cache ou desenvolvendo uma estratégia de fragmentação. Para obter uma lista abrangente de padrões que podem ajudá-lo a melhorar sua carga de trabalho, consulte Padrões de design de nuvem.
Compensação: Alguns padrões de design podem adicionar um grau de complexidade à sua carga de trabalho. Compare a carga de gerenciamento extra com seus ganhos de eficiência para determinar se vale a pena implementar um padrão específico.
A otimização de código torna toda a sua carga de trabalho mais eficiente. As tarefas do aplicativo são executadas mais rapidamente e usam menos recursos de computação, para que você possa maximizar o desempenho de sua infraestrutura. Considere as seguintes abordagens de otimização de código:
Instrumente o seu código. Instrumentar seu código ajuda a identificar problemas no desempenho do código capturando telemetria durante o tempo de execução. Esse processo ajuda a identificar e resolver problemas no início do ciclo de desenvolvimento.
Identifique caminhos críticos. Instrumentar o código ajuda a identificar percursos mais utilizados. Os caminhos quentes são seções essenciais ou de alto uso de um programa que exigem alto desempenho e baixa latência.
Otimize a lógica do código. Encontre maneiras de simplificar sua lógica de código para melhor eficiência. Remova chamadas de função desnecessárias e operações de processamento de dados. Minimize as operações de registro, solicitações de rede e alocações de memória. Procure oportunidades para usar SDKs e bibliotecas de maior desempenho.
Use simultaneidade e paralelismo. O uso de simultaneidade e paralelismo pode melhorar a eficiência do seu aplicativo gerenciando várias tarefas de forma eficaz. A concorrência lida com várias tarefas alternando entre elas, enquanto o paralelismo processa várias tarefas simultaneamente.
Colete dados de desempenho do aplicativo, como taxa de transferência, latência e tempos de conclusão, para identificar gargalos e melhorar a experiência do usuário. Use o rastreamento distribuído e o log estruturado para facilitar a análise. Reúna métricas e logs para todos os recursos. Use ferramentas como o Azure Monitor Insights para monitoramento de desempenho. Colete dados de banco de dados e armazenamento e reúna métricas de desempenho para máquinas virtuais. Armazene todos os dados coletados em um só lugar para facilitar o acesso e a análise.
Risco: Certifique-se de configurar políticas de rotação e retenção de logs, pois a quantidade de dados coletados e armazenados pode crescer rapidamente e os custos podem aumentar inesperadamente.
Aproveite as perceções reais do usuário e o feedback do sistema para impulsionar melhorias de desempenho direcionadas que aprimoram a experiência do usuário.
O nível 3 do pilar Eficiência de Desempenho concentra-se na incorporação de sinais internos e externos para refinar as metas de desempenho, o projeto e as configurações da carga de trabalho e as práticas operacionais relacionadas. Em níveis de maturidade anteriores, você pode ter definido metas e configurações de desempenho com base nas necessidades de velocidade de desenvolvimento e testes internos. À medida que você evolui sua carga de trabalho, incorporar feedback de usuários internos e externos e partes interessadas ajuda a garantir metas de desempenho realistas para sua carga de trabalho de produção. Essa abordagem permite que você atinja essas metas sem comprometer os requisitos de outros pilares.
Estratégias-chave
Passar para a produção significa que você deve estar preparado para responder imediatamente a problemas de desempenho. O monitoramento robusto do desempenho e os alertas úteis e acionáveis ajudam a garantir que as equipes certas sejam notificadas dos problemas e possam começar suas atividades de investigação e solução de problemas rapidamente. As estratégias a seguir podem ajudá-lo a definir suas atividades de resposta a problemas de desempenho:
Configure alertas de desempenho em sua plataforma de monitoramento.
Ajuste seus alertas para fornecer avisos acionáveis quando um componente estiver em risco de um problema de desempenho. Essa abordagem pode incluir a definição de um limite em um valor estático ou baseá-lo em mudanças de tendência para uma métrica específica. Determine o valor do gatilho através de testes contínuos para evitar falsos positivos.
Analise logs e métricas de desempenho para identificar as causas subjacentes dos problemas.
Mantenha as partes interessadas informadas sobre o status e o progresso da resolução de problemas de desempenho.
Estabeleça uma estrutura para priorizar problemas de desempenho com base em seu impacto.
Documente todas as etapas, processos e práticas recomendadas para responder a problemas de desempenho.
Como parte de sua estratégia de monitoramento de desempenho, certifique-se de monitorar especificamente o desempenho de seus fluxos. Compreender o efeito de cada fluxo no desempenho da carga de trabalho. Para os fluxos, identifique possíveis problemas por meio de insights de comportamento do usuário. Rastreie tempos de resposta, erros e outras métricas para otimizar fluxos críticos. Analise logs para rastrear o desempenho do fluxo e identificar problemas.
Analise regularmente o feedback dos usuários internos e externos sobre o desempenho para avaliar se suas metas estão alinhadas com as expectativas. Considere o uso de pesquisas de satisfação do cliente, sistemas de comentários e testes de usuários direcionados para coletar feedback útil.
Quando for prático para sua carga de trabalho, considere o uso de uma abordagem de monitoramento de usuário real (RUM). Essa abordagem pode ajudá-lo a determinar se a experiência do usuário está atendendo às suas expectativas de desempenho.
O Application Insights e o Azure Traffic Manager fornecem funcionalidade para capturar dados RUM para sites.
Acompanhe o desempenho do seu aplicativo usando métricas que se alinham com suas metas e metas. Compare essas métricas com o feedback dos usuários e das partes interessadas da empresa para garantir que você colete os dados certos. Mantenha as métricas relacionadas aos negócios separadas dos dados de desempenho para facilitar a análise, mesmo que haja alguma sobreposição. Essa abordagem torna os dados mais claros e ajuda as equipes a tomar decisões informadas.
A análise de tendências ajuda-o a planear os seus requisitos de capacidade. Atualize suas previsões para corresponder às metas de carga de trabalho e à demanda do usuário para que você sempre tenha recursos suficientes. Analise regularmente os contratos de nível de serviço do seu provedor de nuvem para garantir que você possa adicionar recursos conforme necessário sem precisar de limites de serviço.
À medida que você evolui seu planejamento de capacidade, trabalhe em estreita colaboração com os tomadores de decisão de negócios para se manter alinhado com as metas de negócios.
Compensação: Equilibre o planejamento da capacidade de desempenho com os requisitos de confiabilidade e orçamento. Trabalhar com as partes interessadas para encontrar compromissos práticos quando os requisitos entram em conflito.
✓ Otimize sua estratégia de escalonamento
Utilize técnicas avançadas de dimensionamento para otimizar o uso de recursos. Ajuste os limites usados para operações de dimensionamento com base em comentários internos e externos. Crie automação para executar operações de dimensionamento para componentes que não possuem funcionalidade nativa de dimensionamento automático. Use o dimensionamento agendado para componentes que são levemente usados ou ociosos em horários previsíveis ao longo do dia, da semana ou do mês. Avalie continuamente as configurações de dimensionamento e faça refinamentos para melhor atender às demandas flutuantes de uma carga de trabalho.
✓ Otimizar a gestão de dados
Ineficiências no gerenciamento de dados podem causar problemas de desempenho em toda a sua carga de trabalho. Use as seguintes estratégias para otimizar seu conjunto de dados:
Divida grandes conjuntos de dados ou cargas de trabalho em partes menores, chamadas partições, para armazenamento ou processamento separados. Essa abordagem permite o processamento paralelo, reduz a contenção e melhora o uso de recursos e os tempos de processamento. Ele também distribui dados entre vários dispositivos de armazenamento, o que reduz a carga individual e melhora o desempenho geral. Alinhe os tipos de particionamento com casos de uso específicos. O particionamento pode ser horizontal, vertical ou funcional, dependendo das necessidades do sistema. Para obter mais informações sobre padrões de design que usam particionamento, consulte Padrões de design de eficiência de desempenho.
Otimize consultas usando recursos como percepção do desempenho das consultas para Azure SQL Database.
Certifique-se de que seu modelo de dados seja adequado à sua carga de trabalho, considerando fatores como normalização, indexação e particionamento.
Alinhe a infraestrutura de armazenamento com os requisitos de carga de trabalho otimizando configurações como tamanho do buffer e cache.
Projete testes de desempenho que podem ajudá-lo a entender o desempenho da sua carga de trabalho em diferentes cenários de produção. Utilize uma variedade de testes, como testes de carga, estresse, imersão, pico e compatibilidade com base em critérios e métricas. Meça como cada teste afeta o desempenho da carga de trabalho. As métricas devem incluir aspetos de desempenho, como tempo de resposta, taxa de transferência e uso de memória e CPU. Defina critérios de aceitação alinhados com as metas. Para obter mais informações, consulte Recomendações para testes de desempenho.
Os testes de desempenho devem ser conduzidos em um ambiente dedicado como parte de sua estratégia geral de testes. Essa abordagem inclui testes de confiabilidade e segurança.
Analise os resultados dos testes para identificar gargalos e ineficiências. Compare os resultados com as metas, critérios predefinidos ou execuções anteriores.
Compensação: Os ambientes de teste podem ser os principais fatores de custo. Projete ambientes de teste apenas com os recursos necessários para emular com precisão o cenário específico que está sendo testado. Para minimizar os custos de uso, certifique-se de que os recursos sejam desligados ou excluídos após o teste.
Risco: Se você precisar usar dados de produção, certifique-se de que os dados confidenciais sejam removidos antes de copiá-los para ambientes de teste. Use dados sintéticos quando for prático.
Outra função de teste crítica é construir sua linha de base de desempenho. As linhas de base fornecem pontos de referência para comparar o desempenho ao longo do tempo. Identifique métricas de desempenho e use-as como métricas de linha de base. Avalie o desempenho futuro em relação a essas linhas de base para identificar melhorias ou degradação. Revise e atualize regularmente as linhas de base para capturar elementos e recursos de design atualizados. Linhas de base desatualizadas podem resultar em metas irrealistas e inatingíveis à medida que a carga de trabalho amadurece e novos recursos são adicionados.
Fomentar um ambiente de melhoria contínua onde as equipas aprendem com a produção e ouvem o feedback interno e externo. Equipar as equipes de carga de trabalho com as habilidades e mentalidade necessárias para otimizar o desempenho e lidar com as flutuações da demanda. Aloque tempo para monitorar e resolver problemas de desempenho. Defina expectativas claras com metas de desempenho visíveis, linhas de base e limiares de desvio aceitáveis.
Transforme insights de produção em melhorias sistemáticas de desempenho por meio de tomadas de decisão orientadas por dados e otimização proativa.
O nível 4 do modelo de maturidade pressupõe que sua carga de trabalho está em produção e está operando há tempo suficiente para coletar informações úteis sobre como ela normalmente opera. Neste nível, você deve usar essas informações para fazer as atualizações necessárias e melhorias adicionais.
Use mecanismos de telemetria e feedback para identificar problemas de desempenho, como gargalos, e desenvolva planos para fazer melhorias. Use práticas maduras de gerenciamento de alterações para garantir que você não cause mais problemas inadvertidamente ao fazer alterações em seu ambiente.
Tenha em mente que as melhorias iterativas atingem um ponto de retornos decrescentes. Você precisa decidir quando atingir um estado de execução que atenda às suas necessidades. Um estado aceitável é quando o custo e o fardo da correção de ineficiências não superam as pequenas melhorias de desempenho que você obtém.
Lembre-se de que qualquer alteração feita em seu ambiente para melhorar o desempenho afeta diretamente outros pilares do Well-Architected Framework. A otimização de custos é o compromisso mais comum. Avalie cuidadosamente o impacto em outros pilares antes de fazer melhorias de desempenho para manter o equilíbrio certo para suas necessidades.
Estratégias-chave
No Nível 4, você deve monitorar e testar o desempenho na produção. Você deve ter planos e cenários de teste bem desenvolvidos e dados de teste já instalados. O objetivo dos testes é detetar possíveis problemas de desempenho antes que eles ocorram na produção. Assim, o monitoramento e os testes devem ser rigorosos, padronizados e minuciosamente documentados. Considere as seguintes recomendações:
Reveja a sua linha de base continuamente. Aplique o que você aprendeu com seu monitoramento de desempenho para garantir que sua linha de base reflita métricas de desempenho reais. É importante manter uma linha de base porque você executa testes em relação a essa linha de base para garantir que implantações, como atualizações de recursos, não afetem negativamente o desempenho.
Vire para a esquerda no teste. Integre os testes no início do seu ciclo de desenvolvimento para detetar possíveis problemas antes que eles ocorram na produção.
Mude para a direita no seu teste. Teste em produção. Para garantir que os testes não causem interrupções, use estratégias como implantações azul-verde e testes A/B.
Use transações sintéticas em seus testes. As transações sintéticas permitem que você teste consistentemente a experiência do usuário no mundo real. Esses testes ajudam a identificar problemas e possíveis melhorias antes que os usuários sejam afetados.
Automatize o monitoramento e os testes. Use ferramentas comprovadas pelo setor para automatizar o monitoramento e os alertas em relação à sua linha de base e para testes de desempenho. A automação reduz as etapas manuais e garante a consistência.
Compensação: Os testes em produção podem ser complexos e geralmente exigem um esforço significativo das equipes de DevOps. Esses requisitos podem afetar a velocidade de desenvolvimento e outras funções operacionais. Implantações verde-azuis e testes A/B também podem adicionar custos à carga de trabalho usando recursos duplicados durante os testes. Inclua essas considerações em seu orçamento e planejamento de desenvolvimento.
✓ Implementar otimizações avançadas de gerenciamento de dados
No Nível 4, você deve ter muitas estratégias de otimização de gerenciamento de dados já em vigor. Use sua experiência de produção para fazer otimizações adicionais para ajustar seu gerenciamento de dados e garantir que sua carga de trabalho tenha um desempenho eficiente à medida que continua a evoluir.
Use a compactação de dados sem perdas e com perdas para reduzir o espaço ocupado pelos dados. Essa abordagem ajuda a economizar espaço de armazenamento e uso de largura de banda e pode resultar em transferências de dados e tempos de acesso mais rápidos.
Desenvolva e implemente uma política de arquivamento e exclusão para dados que raramente são usados ou não são mais usados. Mova os dados para um armazenamento separado e menos dispendioso ou remova-os completamente para ajudar a poupar espaço de armazenamento e utilização de largura de banda.
Ajuste suas estratégias de cache e fragmentação com base na experiência de produção.
Replique dados para regiões próximas aos usuários para reduzir a latência. Algumas tecnologias de banco de dados, como o Azure Cosmos DB, fornecem réplicas legíveis e graváveis em várias regiões. As réplicas reduzem ainda mais a latência quando você implanta sua carga de trabalho entre regiões.
Inclua o monitoramento do desempenho do armazenamento em sua solução de monitoramento de carga de trabalho. Problemas de desempenho podem aparecer rapidamente quando os limites de armazenamento são violados. Muitos serviços de armazenamento em nuvem impõem limitação quando os limites são ultrapassados, o que causa gargalos que afetam as funcionalidades dos aplicativos a jusante. Monitorar o desempenho do armazenamento e observar as tendências pode ajudá-lo a evitar limites de forma proativa.
✓ Otimizar fluxos críticos através do isolamento
Quando possível, isole os fluxos críticos para evitar a contenção de recursos e simplificar o gerenciamento. Considere as seguintes estratégias:
Dedique recursos de computação, armazenamento e rede a fluxos críticos.
Use abordagens de conteinerização para isolar fluxos críticos no nível lógico ou de software.
Aloque explicitamente a capacidade de CPU, memória e entrada/saída de disco para fluxos críticos para garantir que eles sejam provisionados corretamente.
Trade-off: Isolar fluxos através de recursos dedicados é mais caro do que compartilhar recursos entre diferentes fluxos. Execute uma análise de custo-benefício antes de implementar essa abordagem para garantir que seja a melhor abordagem para seu caso de uso.
✓ Estenda as otimizações de código que você deriva da experiência de produção
Revisite as otimizações de código que você fez anteriormente no desenvolvimento da carga de trabalho para encontrar áreas que precisam de mais aprimoramentos. Por exemplo, agora você deve ter telemetria de produção que pode ajudá-lo a encontrar ineficiências, como vazamentos de memória. Você também pode confirmar os caminhos quentes identificados usando dados de tempo de execução de produção ou pode encontrar caminhos quentes inesperados.
✓ Otimizar tarefas operacionais
Tarefas operacionais como verificações de vírus, rotações secretas, backups, otimização de índice, como reorganização ou reconstrução, e implantações podem afetar o desempenho de sua carga de trabalho. Otimizar sua eficiência mantém sua carga de trabalho funcionando sem problemas. Considere as seguintes estratégias para otimizar esses tipos de tarefas:
Ajuste as ferramentas operacionais. Teste e entenda como ferramentas essenciais, como monitoramento de integridade de arquivos e verificação de vírus, afetam o desempenho. Em seguida, ajuste as configurações para eles. Por exemplo, crie listas de exclusão para verificações de vírus para minimizar sua duração.
Ajuste as operações do banco de dados. Procure oportunidades para ajustar operações como backups de banco de dados, alterações de esquema, ajuste de desempenho e monitoramento. Use ferramentas nativas, como o ajuste automático no Banco de Dados SQL do Azure , para ajudar nesse esforço.
Investigue e teste os novos recursos da plataforma que ficam disponíveis para determinar se eles podem ajudá-lo a ganhar eficiência. Monitorize consistentemente o feedback e as métricas de desempenho destas novas adições para refinar a sua abordagem.
Compensação: Esteja ciente de como a sua plataforma de nuvem empacota recursos em SKUs. Algumas SKUs que fornecem desempenho mais alto podem ser provisionadas em excesso para seu caso de uso atual, mas podem economizar tempo e esforço em uma migração futura.
Compensação: Adotar alguns tipos de serviços pode significar migrar seu aplicativo ou dados, o que pode resultar em tempo de inatividade para concluir a migração. Como parte de sua avaliação, determine se você pode tolerar o tempo de inatividade necessário para migrar com êxito.
✓ Priorizar esforços de otimização
Otimizar proativamente o desempenho significa melhorar a eficiência da sua carga de trabalho antes que os problemas ocorram, identificando gargalos e implementando otimizações. Com base na análise, faça melhorias específicas por meio de alterações de código, ajustes de infraestrutura ou atualizações de configuração.
Alcance o desempenho máximo por meio de experimentação, automação e técnicas de otimização de ponta que oferecem valor comercial mensurável.
O nível 5 do modelo de maturidade concentra-se na identificação de oportunidades para fazer refinamentos de desempenho valiosos em toda a sua carga de trabalho. Adote uma abordagem baseada em experimentação para sua otimização. Revisite áreas de design de carga de trabalho, como práticas de implantação, monitoramento e depuração e automação operacional para encontrar mais melhorias. Adote uma mentalidade de melhoria contínua, revisando regularmente o design da carga de trabalho e as práticas operacionais. Use processos de gerenciamento de mudanças estabelecidos para garantir que as melhorias sejam implementadas com segurança e eficiência.
Estratégias-chave
Adote uma abordagem proativa para melhorar a eficiência através da experimentação. Comece com uma hipótese para uma atualização de carga de trabalho que você espera oferecer ganhos de desempenho mensuráveis, com base em dados de desempenho observados que identificam um gargalo ou ineficiência. Crie um ambiente de teste que imite de perto as condições do mundo real, tanto quanto possível, para validar ou refutar sua hipótese. Depois de provar sua hipótese, avalie o retorno sobre o investimento (ROI) da mudança para decidir se vale a pena implementá-la. Inclua todos os pilares do Azure Well-Architected Framework na sua avaliação de ROI. Se as compensações que você precisa fazer para outros pilares forem aceitáveis, a mudança provavelmente vale a pena.
✓ Otimize a implantação e os lançamentos de recursos
No Nível 5, você deve ter um processo de atualização padronizado que funcione de forma confiável. Nesse nível, reavalie seus processos para determinar se sua estratégia atual é a mais adequada para a eficiência operacional. Avalie se o modelo de implantação azul-verde, canário ou outro se alinha melhor às necessidades da sua organização. Considere o uso de flags de funcionalidades para ativar e desativar funcionalidades facilmente para grupos de utilizadores específicos. Certifique-se de que sua estratégia de backup ofereça suporte à recuperação rápida para um estado em boas condições.
✓ Otimizar processos de monitorização e depuração
A coleta de logs e telemetria de seus componentes afeta inerentemente seu desempenho. Meça como sua plataforma de monitoramento afeta sua carga de trabalho, incluindo elementos como registro, telemetria, instrumentação e depuração remota. Identificar oportunidades de otimização. Se algum desses processos reduzir o desempenho mais do que melhorar a observabilidade, considere reconfigurá-los ou desativá-los. Como parte de suas práticas de melhoria contínua, revise regularmente os dados de monitoramento que você coleta para garantir que está coletando apenas as informações mais valiosas para os insights de desempenho de que precisa.
Reavalie seus alertas de desempenho para determinar se você está recebendo apenas alertas valiosos. Remova alertas que não são acionáveis e reconfigure alertas que não têm informações suficientes para entender claramente a natureza do problema de desempenho e os componentes afetados.
✓ Expandir a automação das operações
Procure oportunidades para expandir sua automação de tarefas operacionais para obter mais eficiência. Você deve ter muitas tarefas operacionais repetitivas automatizadas no Nível 5, portanto, dê uma olhada abrangente nas operações para identificar outros alvos de automação valiosos. Considere as seguintes tarefas relacionadas ao desempenho:
Testes de desempenho: Use ferramentas bem estabelecidas e padrão do setor para simular cargas de trabalho.
Implantações: Implemente ferramentas de integração contínua e implantação contínua para implantações consistentes e eficientes.
Gestão de incidentes: Automatize o roteamento de alertas, a criação de tíquetes e as atribuições.
Ações de reparação: Automatize ações como reiniciar serviços e ajustar alocações de recursos.
Mecanismos de autorrecuperação: Crie recursos para corrigir automaticamente problemas de desempenho conhecidos.