Compensações de Eficiência do Desempenho

Uma carga de trabalho que atende às suas metas de desempenho sem provisionamento excessivo é eficiente. O objetivo da eficiência de desempenho é ter oferta suficiente para lidar com a demanda em todos os momentos. As principais estratégias para eficiência de desempenho incluem o uso adequado de otimizações de código, padrões de design, planejamento de capacidade e dimensionamento. Metas de desempenho e testes claros sustentam esse pilar.

Ao negociar metas de desempenho e projetar uma carga de trabalho para eficiência de desempenho, considere como as decisões com base nos princípios de design de Eficiência de Desempenho e nas recomendações na lista de verificação de revisão de design para Eficiência de Desempenho podem influenciar as metas e otimizações de outros pilares. Algumas decisões de eficiência de desempenho beneficiam um pilar, mas constituem compensações para outro. Este artigo descreve as compensações de exemplo que uma equipe de carga de trabalho pode encontrar ao projetar a arquitetura e as operações de carga de trabalho para eficiência de desempenho.

Trocas em Eficiência de Desempenho com Confiabilidade

Compensação: Replicação reduzida e maior densidade. Um pilar da confiabilidade é garantir a resiliência usando a replicação e limitando o raio de explosão de mau funcionamento.

  • Um sistema de trabalho que alcança eficiência ao atrasar o dimensionamento até o último momento possível acompanha de perto a demanda, mas é vulnerável a falhas de nó imprevistas e atrasos no dimensionamento.

  • O uso de capacidade excedente e a melhora na eficiência podem ser obtidos através da consolidação de recursos de tarefas. No entanto, aumenta o raio de explosão de um mau funcionamento no componente co-localizado ou na plataforma de aplicação.

  • Reduzir ou reduzir a escala para minimizar a capacidade excedente pode deixar uma carga de trabalho subprovisionada durante picos de uso, o que leva a interrupções de serviço devido ao fornecimento insuficiente.

Compensação: Maior complexidade. A confiabilidade prioriza a simplicidade.

  • O uso do dimensionamento automático para equilibrar a oferta de carga de trabalho em relação à demanda introduz variabilidade na topologia da carga de trabalho e adiciona um componente que deve funcionar corretamente para que o sistema seja confiável. O dimensionamento automático leva ao acionamento de mais eventos do ciclo de vida do aplicativo, como iniciar e parar.

  • O particionamento de dados e a fragmentação ajudam a evitar problemas de desempenho em conjuntos de dados grandes ou frequentemente acessados, mas aumentam a complexidade porque (eventual) a consistência deve ser mantida entre recursos adicionais.

  • A desnormalização de dados para padrões de acesso otimizados pode melhorar o desempenho, mas introduz complexidade porque várias representações de dados precisam ser mantidas sincronizadas.

  • Os padrões de design de nuvem centrados no desempenho às vezes exigem a introdução de componentes adicionais. O uso desses componentes aumenta a área de superfície da carga de trabalho. Os próprios componentes devem ser tornados confiáveis para manter toda a carga de trabalho confiável. Os exemplos incluem:

    • Um barramento de mensagens para nivelamento de carga, que introduz um componente com estado crítico.
    • Um balanceador de carga para réplicas dimensionadas automaticamente, que requer operação confiável e a inscrição de réplicas.
    • Descarregar dados para caches, o que requer abordagens confiáveis de invalidação de cache.

Compensação: Teste e observação em ambientes ativos. Evitar o uso desnecessário de sistemas de produção é uma abordagem de autopreservação e prevenção de riscos para confiabilidade.

  • O teste de desempenho em ambientes ativos, como o uso de transações sintéticas, acarreta o risco de causar mau funcionamento devido às ações ou configurações de teste.

  • As cargas de trabalho devem ser instrumentadas com um sistema de monitoramento de desempenho de aplicativos (APM) que permita que as equipes aprendam com ambientes ativos. As ferramentas do APM são instaladas e configuradas no código do aplicativo ou no ambiente de hospedagem. O uso inadequado, excedendo as limitações ou a configuração incorreta da ferramenta podem comprometer sua funcionalidade e manutenção, potencialmente prejudicando a confiabilidade.

Compensações de eficiência de desempenho com segurança

Compensação: Redução dos controles de segurança. Os controles de segurança são estabelecidos em várias camadas, às vezes de forma redundante, para fornecer defesa em profundidade.

Uma estratégia de otimização de desempenho é remover ou ignorar componentes ou processos que atrasam um fluxo quando o tempo de processamento não é justificado. Essa estratégia pode comprometer a segurança e requer uma análise completa de risco. Considere os seguintes exemplos:

  • A remoção da criptografia em trânsito ou em repouso para melhorar as velocidades de transferência expõe os dados a possíveis violações de integridade ou confidencialidade.

  • Remover ou reduzir as ferramentas de verificação ou inspeção de segurança para reduzir os tempos de processamento pode comprometer a confidencialidade, a integridade ou a disponibilidade que essas ferramentas protegem.

  • Diminuir a frequência de patches de segurança para limitar o impacto no desempenho pode deixar uma carga de trabalho mais vulnerável a ameaças emergentes.

  • A remoção de regras de firewall dos fluxos de rede para melhorar a latência da rede pode permitir uma comunicação indesejável.

  • Minimizar a validação de dados ou verificações de segurança de conteúdo para um processamento de dados mais rápido pode comprometer a integridade dos dados, especialmente se as entradas forem maliciosas.

  • Usar menos entropia em algoritmos de criptografia ou hash, por exemplo, no vetor de inicialização (IV), é mais eficiente, mas torna a criptografia mais fácil de quebrar.

Compensação: Aumento da área de superfície da carga de trabalho. A segurança prioriza uma área de superfície reduzida e contida para minimizar os vetores de ataque e reduzir o gerenciamento dos controles de segurança.

Os padrões de design de nuvem centrados no desempenho às vezes exigem a introdução de componentes adicionais. Esses componentes aumentam a área de superfície da carga de trabalho. Os novos componentes devem ser protegidos, possivelmente de maneiras que ainda não são usadas no sistema, e geralmente aumentam o escopo de conformidade. Considere estes componentes comumente adicionados:

  • Um barramento de mensagens para nivelamento de carga

  • Um balanceador de carga para réplicas dimensionadas automaticamente

  • Descarregar dados para caches, redes de entrega de aplicativos ou redes de distribuição de conteúdo

  • Descarregar o processamento para trabalhos em segundo plano ou até mesmo para a computação do cliente

Compensação: Removendo a segmentação. O pilar Segurança prioriza uma forte segmentação para permitir controles de segurança refinados e reduzir o raio de explosão.

Compartilhar recursos por meio do aumento da densidade é uma abordagem para melhorar a eficiência. Os exemplos incluem cenários de multilocação ou combinação de aplicativos diferentes em uma arquitetura em uma plataforma de aplicativo comum. O aumento da densidade pode levar às seguintes preocupações de segurança:

  • Aumento do risco de movimento lateral não autorizado de um inquilino para outro.

  • Uma identidade de carga de trabalho compartilhada que viola o princípio de privilégios mínimos e obscurece trilhas de auditoria individuais em logs de acesso.

  • Controles de segurança de perímetro, como regras de rede, que são ajustados para cobrir todos os componentes localizados no mesmo local, proporcionando assim aos componentes individuais mais acesso do que o necessário.

  • Um comprometimento do host da plataforma de aplicativos ou de um componente individual devido a um raio de explosão maior. Esse aumento é causado pelo acesso mais fácil aos componentes localizados juntos.

  • Co-localização de componentes distintos levando a um aumento de componentes no escopo de conformidade devido ao uso de um host compartilhado.

Compensação: estado de segurança obsoleto. O pilar de segurança requer decisões de autorização, conteúdo e confiança para refletir o estado atual do sistema.

Armazenamento em cache e distribuição na borda melhoram o desempenho atendendo às respostas de uma cópia em vez de revalidá-las. Quanto maior o tempo de vida de uma cópia e mais fracos forem seus controles de invalidação, maior a probabilidade de refletir um estado de segurança que não é mais válido. Os resultados pré-compilados têm um risco semelhante, mas ao contrário dos caches, eles normalmente não têm nenhum TTL interno ou mecanismo de invalidação e permanecem obsoletos até que o próximo gatilho de computação seja acionado.

  • Tokens de autenticação armazenados em cache, decisões de autorização ou dados de sessão podem permitir o acesso depois que um usuário é desabilitado, uma função é revogada, um token é girado, declarações ou permissões foram alteradas ou políticas de acesso condicional foram atualizadas. A janela entre a revogação e a expiração do cache é uma janela de acesso não autorizado.

  • O conteúdo entregue de uma CDN, cache de gateway de API ou cache do navegador pode continuar entregando dados que foram retraídos ou reclassificados na origem. Os dados modificados por motivos legais também podem persistir em respostas armazenadas em cache depois de serem corrigidos na origem. Essa persistência pode violar os requisitos de manipulação de dados, retenção ou privacidade.

Compensações de eficiência de desempenho com otimização de custos

Compensação: Muita oferta para a demanda. Tanto a otimização de custos quanto a eficiência de desempenho priorizam ter oferta suficiente para atender à demanda.

  • O provisionamento excessivo é um risco quando as equipes tentam mitigar problemas de desempenho em uma carga de trabalho. Algumas causas comuns de superprovisionamento incluem:

    • O planejamento inicial da capacidade foi mal avaliado porque a equipe se concentrou apenas nas estimativas de carga de pico, negligenciando as estratégias de suavização de pico no projeto da carga de trabalho.
    • Escalar um recurso para cima ou para fora durante uma etapa de solução de problemas de uma resposta a um incidente.
  • O dimensionamento automático pode ser configurado incorretamente. Alguns exemplos de dimensionamento automático configurado incorretamente incluem:

    • A expansão com mudanças mínimas na demanda ou um período de resfriamento prolongado pode incorrer em mais custos do que a demanda exige.
    • O uso do dimensionamento automático sem um limite superior definido pode levar a um crescimento descontrolado devido a mau funcionamento ou abuso do sistema e exceder os requisitos de carga de trabalho esperados.
  • A expansão para várias regiões pode melhorar o desempenho, aproximando as cargas de trabalho do usuário e evitando restrições temporárias de capacidade de recursos. No entanto, essa topologia também adiciona complexidade e duplicação de recursos.

Compensação: Mais componentes. Uma técnica de otimização de custos é consolidar com um número menor de recursos, aumentando a densidade, removendo a duplicação e co-localizando a funcionalidade.

  • Os padrões de design de nuvem centrados no desempenho às vezes exigem a introdução de componentes extras. Esses componentes extras geralmente levam a um aumento geral de custo para a carga de trabalho. Por exemplo, você pode incluir um barramento de mensagens para tarefas de nivelamento ou descarregamento de carga para um aplicativo ou rede de distribuição de conteúdo para melhorar os tempos de resposta.

  • A segmentação de recursos permite que diferentes partes de uma carga de trabalho tenham características de desempenho distintas, permitindo o ajuste independente para cada segmento. No entanto, pode aumentar os custos totais de propriedade porque requer vários segmentos otimizados em vez de um único componente generalizado.

Compensação: Aumento do investimento em itens que não estão alinhados com os requisitos funcionais. Uma abordagem para otimização de custos é avaliar o valor fornecido por qualquer solução implantada.

  • Serviços premium e SKUs podem ajudar uma carga de trabalho a atingir as metas de desempenho. Esses serviços geralmente custam mais e podem fornecer recursos extras. Eles podem ser subutilizados se muitos dos recursos premium não forem usados especificamente para atingir as metas de desempenho.

  • Uma carga de trabalho de alto desempenho requer dados de telemetria para observabilidade que devem ser transferidos e armazenados. Um aumento na telemetria de desempenho coletada pode aumentar o custo da transferência e do armazenamento de dados de telemetria.

  • As atividades de teste de desempenho adicionam custos que não estão associados ao valor do sistema de produção. Exemplos de custos de teste de desempenho incluem:

    • Instanciar ambientes dedicados a testes centrados no desempenho.
    • Usando ferramentas de desempenho especializadas.
    • Gastar tempo para executar os testes.
  • Treinar membros da equipe para tarefas especializadas de otimização de desempenho ou pagar por serviços de ajuste de desempenho aumenta o custo de uma carga de trabalho.

Compromissos entre eficiência de desempenho e excelência operacional

Compensação: observabilidade reduzida. A observabilidade é necessária para fornecer uma carga de trabalho com alertas significativos e ajudar a garantir uma resposta bem-sucedida a incidentes.

  • Reduzir o volume de logs e métricas para gastar menos tempo de processamento na coleta de telemetria reduz a observabilidade geral. Os exemplos incluem:

    • Menos pontos de dados para a criação de alertas significativos.
    • Lacunas de cobertura nas atividades de resposta a incidentes.
    • Observabilidade limitada em interações e limites sensíveis à segurança ou sensíveis à conformidade.
  • Os padrões de design de desempenho geralmente adicionam complexidade introduzindo componentes em fluxos críticos. A estratégia de monitoramento de carga de trabalho deve incluir esses componentes. Quando um fluxo abrange vários componentes ou limites de aplicativo, o desempenho deve ser correlacionado em todos eles.

Compensação: Aumento da complexidade nas operações. Um ambiente complexo tem interações mais complexas e uma maior probabilidade de um impacto negativo de operações de rotina, ad hoc e de emergência.

  • Melhorar a eficiência do desempenho aumentando a densidade eleva o risco nas tarefas operacionais. Um erro em um único processo pode ter um grande raio de explosão.

  • À medida que os padrões de design de desempenho são implementados, eles influenciam os procedimentos operacionais, como backups, rotações de chaves e estratégias de recuperação. Por exemplo, o particionamento e a fragmentação de dados podem complicar tarefas rotineiras quando as equipes tentam garantir que essas tarefas não afetem a consistência dos dados.

Compromisso: Estresse cultural. A Excelência Operacional está enraizada em uma cultura de ausência de culpa, respeito e melhoria contínua.

  • A realização da análise de causa raiz de problemas de desempenho identifica deficiências em processos ou implementações que exigem correção. A equipe deve considerar o exercício uma oportunidade de aprendizado. Se os membros da equipe forem culpados pelos problemas, o moral pode ser afetado.

  • Processos de rotina e ad hoc podem afetar o desempenho da carga de trabalho. Muitas vezes, é considerado preferível realizar essas atividades fora do horário de pico. No entanto, o horário fora do horário de pico pode ser inconveniente ou fora do horário normal para os membros da equipe responsáveis ou qualificados nessas tarefas.

Explore as compensações para os outros pilares: