A Eficiência de Desempenho é sobre manter a experiência do usuário mesmo quando há um aumento na carga gerenciando a capacidade. A estratégia inclui dimensionamento de recursos, identificação e otimização de possíveis gargalos e otimização para o desempenho de pico.
Esse modelo de maturidade orienta você por um percurso estratégico de otimização de desempenho dimensionando recursos, identificando e otimizando possíveis gargalos e otimizando o desempenho de pico.
Você começará selecionando os componentes certos e estabelecendo metas de desempenho e, em seguida, progride para medir e monitorar o comportamento da carga de trabalho. À medida que amadurecer, você incorporará comentários reais do usuário para refinar sua abordagem, aproveitar os insights de produção para melhorias direcionadas e, por fim, obter 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 reativas para engenharia de eficiência proativa.
O modelo é estruturado em cinco níveis de maturidade distintos, cada um com uma meta primária e um conjunto de estratégias principais. Utilize as abas exibidas abaixo para explorar cada nível. Examine também as compensações realçadas e os riscos associados à medida que você progride.
Estabelecer expectativas de desempenho claras e selecionar componentes de tamanho adequado que estejam alinhados com seus requisitos.
O nível 1 do modelo de maturidade se concentra em reunir expectativas de desempenho e escolher serviços de nuvem que ajudam você a atender a essas expectativas. Nesse nível, você investiga esses recursos e componentes para encontrar o melhor ajuste. Priorize os serviços que fornecem apenas os recursos de desempenho necessários. Essa abordagem ajuda a controlar os custos e mantém sua velocidade de desenvolvimento.
Principais estratégias
Trabalhe com os stakeholders 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 ao invés de requisitos rígidos, uma vez que seu foco neste momento não é medir as métricas de desempenho. Depois de reunir expectativas de carga de trabalho, comece a investigar os tipos de recursos que podem atender à sua carga de trabalho.
✓ Escolha os recursos de rede apropriados
Avalie as necessidades de rede para determinar os 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 dê suporte à carga de trabalho com eficiência. Use redes virtuais privadas e redes de backbone para reduzir a latência.
Verifique até mesmo a distribuição do tráfego de rede para evitar a sobrecarga do servidor e reduzir os tempos de resposta. Avalie diferentes serviços de balanceamento de carga que seu provedor de nuvem oferece. Considere o tipo de tráfego, roteamento global ou regional, objetivos de nível de serviço e recursos específicos, como aceleração de site e balanceamento de carga de baixa latência.
Risco: Reserve um tempo para investigar e entender completamente as diferentes opções de rede fundamental. Alterações posteriores nessa área podem exigir uma reformulação e reimplantação completas.
✓ Escolha os recursos de computação apropriados
Avalie as necessidades de computação da carga de trabalho, incluindo tipo de instância, escalabilidade e camadas de serviço. Considere a contêinerizaçã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ê dimensione facilmente à medida que sua carga de trabalho evolui. A criação da carga de trabalho é um processo iterativo. Você pode começar pequeno usando SKUs com menos desempenho e menos instâncias. Atualize esses componentes posteriormente no ciclo de vida da carga de trabalho.
Prós e contras: avalie 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 os serviços de armazenamento de dados apropriados
Determine as necessidades da carga de trabalho para armazenar, recuperar e gerenciar dados. Considere características como:
Tipos de dados: Quais 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 consistência de dados entre tipos de dados?
Durabilidade: Quais são seus objetivos para durabilidade de dados entre tipos de dados?
Padrões de acesso: Quais tipos de padrões de acesso sua carga de trabalho precisa suportar? Por exemplo, para um componente específico, talvez seja necessário 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 carga de trabalho.
Devido à ampla variedade de opções de serviços de dados em ambientes de nuvem, você pode adaptar seu design para usar serviços diferentes para corresponder melhor à funcionalidade de cada componente em sua carga de trabalho. Essa abordagem ajuda você a otimizar o desempenho de cada componente.
Prós e contras: não exagere na criação dos seus componentes de dados escolhendo diferentes serviços de dados para componentes que você pode consolidar em um armazenamento de dados único. Encontrar um equilíbrio entre desempenho versus custo e complexidade.
Implementar monitoramento de desempenho abrangente para obter visibilidade do comportamento da carga de trabalho e identificar oportunidades de otimização.
O nível 2 do pilar de Eficiência de Desempenho concentra-se no uso de informações sobre sua carga de trabalho para informar suas otimizações de desempenho. A primeira etapa é identificar fluxos críticos de carga de trabalho de uma perspectiva 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. Por fim, você deve investigar padrões de design que podem ajudá-lo a melhorar sua eficiência de desempenho e executar um exercício inicial de planejamento de capacidade. Essas atividades ajudam você a criar um plano para o futuro imediato da carga de trabalho. Essa abordagem garante que o desempenho não sofra à medida que a carga de trabalho evolui.
Principais estratégias
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 perspectiva de cada pilar ajuda você 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 de desempenho. Depois de categorizar e classificar os fluxos, concentre-se nos fluxos que você identifica como críticos para iniciar o 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 é executado, 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 usuário.
Risco: O nível de risco que o fluxo tem no desempenho geral, como gerar um relatório complexo.
Uso intensivo de dados: A quantidade de pressão que o fluxo coloca na camada de dados.
Uso intensivo de arquitetura: A extensão em que o fluxo interage com componentes em toda a carga de trabalho.
✓ Estabelecer as principais métricas para seus recursos e componentes de carga de trabalho que ajudam você a atender às suas metas
Defina metas de desempenho para seus componentes e recursos de carga de trabalho com base em pesquisas de mercado, análise competitiva e pesquisas. Concentre-se nas principais métricas, como tempo de resposta, taxa de transferência e latência. Estabeleça destinos 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 perspectiva abrangente. Realize testes para estabelecer o desempenho de referência, mas não enfatize demais a otimização.
Registre todas as metas de desempenho em um local centralizado acessível às equipes de desenvolvimento e operações. Use dashboards e relatórios para tornar as metas visíveis e acionáveis.
O planejamento de capacidade é um processo iterativo que deve ser realizado regularmente durante o ciclo de vida da carga de trabalho. Neste estágio, talvez você ainda não esteja totalmente familiarizado com todas as tecnologias em uso ou ainda esteja avaliando diferentes opções. Essa incerteza pode limitar sua capacidade de planejar de forma abrangente para necessidades futuras. Para esse exercício inicial de planejamento de capacidade, a meta é mudar do gerenciamento de capacidade reativa, que inclui a adição de recursos para atender à demanda imediata. Em vez disso, o foco é o planejamento proativo, em que você prevê a capacidade necessária para um período definido. Para obter um planejamento efetivo de capacidade, 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ência e modelagem preditiva para prever necessidades futuras. Verifique se essas previsões estão alinhadas com os objetivos da carga de trabalho.
Risco: Em um ambiente tradicional baseado em datacenter, o excesso de provisionamento é uma abordagem comum para o planejamento de capacidade. Em um ambiente de nuvem, o excesso de provisionamento pode ser um desperdício de dinheiro. Considere cuidadosamente suas expectativas de negócios para desenvolver uma linha do tempo para adicionar capacidade de uma maneira que atenda às suas necessidades de desempenho sem afetar negativamente seu orçamento.
Há muitos padrões comuns de design de aplicativo 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 aprimorar sua carga de trabalho, consulte padrões de design de nuvem.
Prós e contras: alguns padrões de design podem adicionar um grau de complexidade à carga de trabalho. Compare a carga de gerenciamento extra com os 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 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:
Instrumentalize seu código. Instrumentar seu código ajuda você a identificar problemas no desempenho do código capturando telemetria durante o runtime. Esse processo ajuda você a identificar e resolver problemas no início do ciclo de desenvolvimento.
Identificar percursos críticos. Instrumentar seu código ajuda você a identificar caminhos críticos. Os caminhos quentes são seções essenciais ou de alto uso de um programa que exigem alto desempenho e baixa latência.
Otimizar a lógica de código. Encontre maneiras de simplificar sua lógica de código para obter melhor eficiência. Remova chamadas de função desnecessárias e operações de processamento de dados. Minimize operações de log, solicitações de rede e alocações de memória. Procure oportunidades para usar SDKs e bibliotecas com mais desempenho.
Use simultaneidade e paralelismo. O uso de simultaneidade e paralelismo pode melhorar a eficiência do aplicativo gerenciando várias tarefas com eficiência. A concorrência manipula várias tarefas alternando entre elas, enquanto o paralelismo processa múltiplas 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 registro em 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 colete 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: Verifique se você configurou políticas de rotação e retenção de logs porque a quantidade de dados coletados e armazenados pode aumentar rapidamente e os custos podem aumentar inesperadamente.
Aproveitar insights reais dos usuários e o feedback do sistema para impulsionar as melhorias de desempenho direcionadas que aprimoram a experiência do usuário.
O nível 3 do pilar de Eficiência de Desempenho concentra-se na incorporação de sinais internos e externos para refinar metas de desempenho, design e configurações de carga de trabalho e práticas operacionais relacionadas. Em níveis de maturidade anteriores, você pode ter definido metas e configurações de desempenho com base em necessidades de velocidade de desenvolvimento e testes internos. À medida que você evolui sua carga de trabalho, a incorporação de comentários de usuários e stakeholders internos e externos ajuda a garantir metas de desempenho realistas para sua carga de trabalho de produção. Essa abordagem permite que você atenda a esses destinos sem comprometer os requisitos para outros pilares.
Principais estratégias
Migrar para a produção significa que você deve estar preparado para responder imediatamente a problemas de desempenho. O monitoramento de desempenho robusto e alertas úteis e acionáveis ajudam a garantir que as equipes certas sejam notificadas sobre problemas e possam iniciar 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 o alerta 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 alterações de tendência para uma métrica específica. Determine o valor do gatilho por meio de testes contínuos para evitar falsos positivos.
Analise logs e métricas de desempenho para identificar as causas subjacentes dos problemas.
Mantenha os stakeholders informados 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. Entenda 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. Acompanhe os tempos de resposta, os erros e outras métricas para otimizar fluxos críticos. Analise logs para rastrear o desempenho do fluxo e identificar problemas.
Revise 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 sondagem de satisfação do cliente, sistemas de comentários e testes de usuário direcionados para coletar comentários úteis.
Quando prático para sua carga de trabalho, considere usar uma abordagem de RUM (Monitoramento real do usuário). 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 Gerenciador de Tráfego do Azure fornecem funcionalidade para capturar dados de RUM para sites.
Acompanhe o desempenho do aplicativo usando métricas que se alinham com suas metas e destinos. Compare essas métricas com os comentários de usuários e participantes de negócios para garantir que você colete os dados certos. Mantenha as métricas relacionadas aos negócios separadas dos dados de desempenho para uma análise mais fácil, mesmo se houver alguma sobreposição. Essa abordagem torna os dados mais claros e ajuda as equipes a tomar decisões informadas.
Analisar tendências ajuda você a planejar 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. Examine regularmente os contratos de nível de serviço do provedor de nuvem para garantir que você possa adicionar recursos conforme necessário sem executar 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.
Dilema: Balancear o planejamento de capacidade de desempenho com requisitos de confiabilidade e orçamento. Trabalhe com os stakeholders para encontrar compromissos práticos quando os requisitos entrarem em conflito.
✓ Otimizar sua estratégia de dimensionamento
Empregue 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 têm funcionalidade de dimensionamento automático nativo. Use o dimensionamento agendado para componentes que são levemente usados ou ociosos em horários previsíveis ao longo do dia, semana ou mês. Avalie continuamente as configurações de dimensionamento e faça refinamentos para atender melhor às demandas flutuantes de uma carga de trabalho.
✓ Otimizar o gerenciamento de dados
Ineficiências no gerenciamento de dados podem causar problemas de desempenho em sua carga de trabalho. Use as seguintes estratégias para otimizar seu patrimônio 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 os tempos de uso e processamento de recursos. Ele também distribui dados em vários dispositivos de armazenamento, o que reduz a carga individual e melhora o desempenho geral. Alinhar 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 as consultas usando recursos como a análise de desempenho de consultas para o Banco de Dados SQL do Azure.
Verifique se o modelo de dados é adequado para 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 como sua carga de trabalho é executada em diferentes cenários de produção. Emprega uma variedade de testes, como carga, estresse, imersão, pico e testes de compatibilidade com base em critérios e métricas. Medir como cada teste afeta o desempenho da carga de trabalho. As métricas devem incluir aspectos de desempenho, como tempo de resposta, taxa de transferência e uso de memória e CPU. Defina os critérios de aceitação que se alinham às metas. Para saber mais, consulte Recomendações para testes de desempenho.
Os testes de desempenho devem ser realizados em um ambiente dedicado como parte de sua estratégia de teste geral. Essa abordagem inclui testes de confiabilidade e segurança.
Examine os resultados do teste para identificar gargalos e ineficiências. Compare os resultados com metas, critérios predefinidos ou execuções anteriores.
Prós e contras: os ambientes de teste podem ser os principais geradores de custo. Projete ambientes de teste com apenas os recursos necessários para emular com precisão o cenário específico que está sendo testado. Para minimizar os custos de uso, verifique se os recursos são desligados ou excluídos após o teste.
Risco: Se você precisar usar dados de produção, verifique se os dados confidenciais são removidos antes de copiá-los em ambientes de teste. Use dados sintéticos quando prático.
Outra função de teste crítica é criar sua linha de base de desempenho. As linhas de base fornecem pontos de referência para comparar o desempenho ao longo do tempo. Identifique as métricas de desempenho e use-as como métricas de linha de base. Avalie o desempenho futuro nessas linhas de base para identificar melhorias ou degradação. Examine e atualize regularmente as linhas de base para capturar elementos e recursos de design atualizados. Linhas de base desatualizadas podem resultar em destinos irreais e inalcançáveis à medida que a carga de trabalho amadurece e novos recursos são adicionados.
Promover um ambiente de melhoria contínua em que as equipes aprendem com a produção e ouvem comentários internos e externos. Equipe as equipes de carga de trabalho com as habilidades e a mentalidade necessárias para otimizar o desempenho e lidar com as flutuações de demanda. Aloque tempo para monitorar e resolver problemas de desempenho. Defina expectativas claras com metas de desempenho visíveis, linhas de base e limites de desvio aceitáveis.
Transformar insights de produção em aprimoramentos sistemáticos de desempenho por meio da tomada de decisões controlada 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 tem operado por tempo suficiente para coletar insights úteis sobre como ele normalmente opera. Nesse nível, você deve usar essas informações para fazer as atualizações necessárias e aprimoramentos adicionais.
Use mecanismos de telemetria e comentários para identificar problemas de desempenho, como gargalos, e desenvolver planos para fazer melhorias. Use práticas de gerenciamento de alterações maduras 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 diminuição dos retornos. Você precisa decidir quando alcançar um estado funcional que atenda às suas necessidades. Um estado aceitável é quando o custo e a carga de corrigir ineficiências não superam as pequenas melhorias de desempenho que você obtém.
Lembre-se de que qualquer alteração que você fizer em seu ambiente para melhorar o desempenho afeta diretamente outros pilares do Well-Architected Framework. A otimização de custos é a contrapartida mais comum. Avalie cuidadosamente o impacto para outros pilares antes de fazer melhorias de desempenho para manter o equilíbrio certo para seus requisitos.
Principais estratégias
No Nível 4, você deve monitorar e testar o desempenho na produção. Você deve ter planos de teste bem desenvolvidos, cenários e dados de teste já preparados. O objetivo do teste é capturar possíveis problemas de desempenho antes que eles ocorram em produção. Portanto, o monitoramento e o teste devem ser rigorosos, padronizados e totalmente documentados. Considere as seguintes recomendações:
Revisite sua linha de base continuamente. Aplique o que você aprende com seu monitoramento de desempenho para garantir que sua linha de base reflita as métricas reais de desempenho. É importante manter uma linha de base porque você executa testes nessa linha de base para garantir que implantações como atualizações de recursos não afetem negativamente o desempenho.
Desloque para a esquerda no teste. Integre o teste anteriormente em seu ciclo de desenvolvimento para detectar possíveis problemas antes que eles ocorram em produção.
Desloque para a direita no teste. Teste no ambiente de produção. Para garantir que o teste não seja disruptivo, 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 do mundo real. Esses testes ajudam você a identificar problemas e possíveis melhorias antes que os usuários sejam afetados.
Automatize o monitoramento e o teste. Use ferramentas comprovadas pelo setor para automatizar o monitoramento e alertas em relação à linha de base e para testes de desempenho. A automação reduz as etapas manuais e garante a consistência.
Dilema: Os testes em produção podem ser complexos e geralmente exigem esforços significativos das equipes do DevOps. Esses requisitos podem afetar a velocidade de desenvolvimento e outras funções operacionais. Implantações azul-verde e testes A/B também podem adicionar custos à carga de trabalho usando recursos duplicados ao testar. 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 o gerenciamento de dados e garantir que sua carga de trabalho seja executada com eficiência à medida que ela continua evoluindo.
Use a compactação de dados sem perdas e com perdas para reduzir o volume de 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 o armazenamento separado e menos caro ou remova-os completamente para ajudar a economizar espaço de armazenamento e uso de largura de banda.
Ajuste as 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 de desempenho de 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 atingidos, o que causa gargalos que afetam as funcionalidades do aplicativo downstream. Monitorar o desempenho do armazenamento e observar tendências pode ajudá-lo a evitar limites proativamente.
✓ Otimizar fluxos críticos por meio do isolamento
Quando prático, isole 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 contêinerização para isolar fluxos críticos no nível lógico ou software.
Aloque explicitamente a capacidade de entrada/saída de CPU, memória e disco para fluxos críticos para garantir que eles sejam provisionados corretamente.
Dilema: Isolar fluxos por meio de recursos dedicados é mais caro do que compartilhar recursos entre fluxos. Execute uma análise de custo-benefício antes de implementar essa abordagem para garantir que ela seja a melhor abordagem para seu caso de uso.
✓ Estender as otimizações de código que você deriva da experiência de produção
Revisite as otimizações de código feitas anteriormente no desenvolvimento da carga de trabalho para encontrar áreas que precisam de aprimoramentos adicionais. Por exemplo, agora você deve ter telemetria da 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 runtime de produção ou encontrar caminhos quentes inesperados.
✓ Otimizar tarefas operacionais
Tarefas operacionais como verificações de vírus, rotações de segredo, backups, otimização de índices, como reorganização ou recompilação, e implantações podem afetar o desempenho da carga de trabalho. Manter a eficiência deles otimizada garante que sua carga de trabalho funcione de forma eficiente. 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 elas. Por exemplo, crie listas de exclusão para verificações de vírus para minimizar sua duração.
Ajuste as operações de 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 ajuste automático no Banco de Dados SQL do Azure para ajudar nesse esforço.
Investigue e teste novos recursos de plataforma que ficam disponíveis para determinar se eles podem ajudá-lo a obter eficiências. Monitore consistentemente os comentários e as métricas de desempenho dessas novas adições para refinar sua abordagem.
Prós e contras: lembre-se de como sua plataforma de nuvem empacota capacidades em SKUs. Alguns SKUs que fornecem um desempenho mais alto podem ser superprovisionados para seu caso de uso atual, mas podem economizar tempo e esforço em uma migração futura.
Dilema: 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 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.
Alcançar o desempenho máximo por meio de técnicas de experimentação, automação e otimização de ponta que fornecem um 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 sua carga de trabalho. Adotar 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 alterações estabelecidos para garantir que as melhorias sejam implementadas com segurança e eficiência.
Principais estratégias
Adotar uma abordagem proativa para melhorar a eficiência por meio da experimentação. Comece com uma hipótese para uma atualização de carga de trabalho que você espera fornecer 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 imita de perto as condições do mundo real o máximo possível para validar ou refutar sua hipótese. Depois de provar sua hipótese, avalie o ROI (retorno sobre o investimento) da alteração para decidir se vale a pena implementar. Inclua todos os pilares do Azure Well-Architected Framework na 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 ser perseguida.
✓ Otimizar a implantação e os lançamentos de funcionalidades
No Nível 5, você deve ter um processo de atualização padronizado em vigor que funcione de forma confiável. Nesse nível, reavaliar seus processos para determinar se sua estratégia atual é a melhor opção para a eficiência operacional. Avalie se o azul-verde, o canário ou outro modelo de implantação se alinha melhor às necessidades da sua organização. Considere usar sinalizadores de funcionalidades para implementar e reverter funcionalidades facilmente para grupos específicos de usuários. Verifique se sua estratégia de backup oferece suporte à recuperação rápida para um estado bom conhecido.
✓ Otimizar processos de monitoramento e depuração
Coletar 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 em log, telemetria, instrumentação e depuração remota. Identificar oportunidades de otimização. Se qualquer um desses processos reduzir mais o desempenho do que melhorar a observabilidade, considere reconfigurá-los ou desabilitá-los. Como parte de suas práticas de melhoria contínua, examine regularmente os dados de monitoramento coletados para garantir que você esteja coletando apenas as informações mais valiosas para os insights de desempenho necessários.
Reavaliar 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 automação de operações
Procure oportunidades para expandir sua automação de tarefas operacionais para obter mais eficiências. Você deve ter muitas tarefas operacionais repetitivas automatizadas no Nível 5, portanto, dê uma olhada abrangente nas operações para identificar outros destinos de automação valiosos. Considere as seguintes tarefas relacionadas ao desempenho:
Teste de desempenho: Use ferramentas bem estabelecidas e padrão do setor para simular cargas de trabalho.
Implantações: Implemente a integração contínua e as ferramentas de implantação contínua para implantações consistentes e eficientes.
Gerenciamento de incidentes: Automatize o roteamento de alertas, a criação de tíquetes e as atribuições.
Ações de correção: Automatize ações como reiniciar serviços e ajustar alocações de recursos.
Mecanismos de auto-recuperação: Crie recursos para corrigir automaticamente problemas de desempenho conhecidos.