Compromissos de desempenho e eficiência

Uma carga de trabalho que atenda às suas metas de desempenho sem provisionamento excessivo é eficiente. O objetivo da eficiência de desempenho é ter apenas 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 projeto, planejamento de capacidade e dimensionamento. Este pilar assenta em objetivos de desempenho claros e em testes.

Quando negocia metas de desempenho e desenha uma carga de trabalho para eficiência de desempenho, considere como decisões baseadas nos princípios de design de Eficiência de Desempenho e nas recomendações da lista de verificação de revisão de Desempenho para Eficiência de Desempenho podem influenciar os objetivos 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 exemplos de compromissos que uma equipa de carga de trabalho pode encontrar ao desenhar arquitetura e operações de carga de trabalho para eficiência de desempenho.

Equilíbrios de eficiência de desempenho com fiabilidade

Compromisso: replicação reduzida e densidade aumentada. Um dos pilares da fiabilidade é garantir a resiliência usando replicação e limitando o impacto das falhas.

  • Uma carga de trabalho que otimiza a eficiência adiando o dimensionamento até o último momento responsável atende de perto à demanda, mas é vulnerável a falhas imprevistas de nós e atrasos no dimensionamento.

  • A consolidação de recursos relacionados à carga de trabalho pode usar o excesso de capacidade e melhorar a eficiência. No entanto, aumenta o raio de impacto de um mau funcionamento no componente colocalizado ou na plataforma de aplicação.

  • Aumentar ou reduzir 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 da carga de trabalho com a 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.

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

  • Desnormalizar 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.

  • 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. Exemplos incluem:

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

Tradeoff: 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 a 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 APM são instaladas e configuradas no código do aplicativo ou no ambiente de hospedagem. O uso inadequado, a superação das limitações ou a configuração incorreta da ferramenta podem comprometer sua funcionalidade e manutenção, potencialmente minando a confiabilidade.

Compromissos entre eficiência de desempenho e segurança

Compensação: Redução dos controlos 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 contornar componentes ou processos que atrasam um fluxo quando o seu tempo de processamento não é justificado. Esta estratégia pode comprometer a segurança e requer uma análise de risco aprofundada. 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 a verificação de segurança ou as ferramentas de inspeção 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.

  • Remover 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 as 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 hashing, 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 vetores de ataque e reduzir o gerenciamento de controles de segurança.

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 bus de mensagens para nivelamento de carga

  • Um balanceador de carga para réplicas escaláveis automaticamente

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

  • Transferindo o processamento para trabalhos em segundo plano ou até mesmo para computação no cliente.

Compensação: Remover 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.

A partilha de recursos através do aumento da densidade é uma abordagem para melhorar a eficiência. Os exemplos incluem cenários de multitenant ou a combinação de aplicações diferentes numa arquitetura numa plataforma de aplicações 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 menor privilégio e obscurece trilhas individuais de auditoria em logs de acesso.

  • Controlos de segurança de perímetro, por exemplo, regras de rede, que são reduzidos de forma a abranger todos os componentes colocalizados, dando aos componentes individuais um acesso mais excessivo 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. Este aumento é causado pelo acesso mais fácil a componentes co-localizados.

  • Colocalização de componentes díspares, levando a mais componentes em escopo para conformidade devido ao seu host compartilhado.

Compromisso: Estado de segurança estagnado. O pilar de Segurança exige que decisões de autorização, conteúdo e confiança reflitam o estado atual do sistema.

A cache e a distribuição de bordas melhoram o desempenho ao servir respostas a partir de uma cópia em vez de as revalidar. Quanto mais longo o tempo de vida de uma cópia e mais fracos os seus controlos de invalidação, maior a probabilidade de refletir um estado de segurança que já não se mantém. Os resultados pré-computados apresentam um risco semelhante, mas, ao contrário dos caches, normalmente não têm TTL ou mecanismo de invalidação incorporado e permanecem obsoletos até ao próximo disparo de cálculo.

  • Tokens de autenticação em cache, decisões de autorização ou dados de sessão podem permitir o acesso após um utilizador ser desativado, uma função ser revogada, um token ser renovado, reivindicações ou permissões terem sido alteradas, ou políticas de acesso condicional terem sido atualizadas. A janela entre a revogação e a expiração do cache é uma janela de acesso não autorizado.

  • O conteúdo entregue a partir de uma CDN, cache de gateway API ou cache de navegador pode continuar a servir dados que foram retirados ou reclassificados na origem. Dados modificados por razões legais também podem persistir em respostas em cache depois de terem sido corrigidos na fonte. Esta persistência pode violar requisitos de tratamento de dados, retenção ou privacidade.

Equilíbrios de eficiência de desempenho com otimização de custos

Compensação: Demasiada oferta para a procura. Tanto a Otimização de Custos quanto a Eficiência de Desempenho priorizam ter apenas 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 provisionamento excessivo 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.
    • Aumentar ou expandir um recurso durante uma etapa de resolução de problemas de um incidente de resposta.
  • O dimensionamento automático pode ser configurado incorretamente. Alguns exemplos de dimensionamento automático mal configurado incluem:

    • A expansão com mudanças mínimas na demanda ou um período de resfriamento estendido 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.

Compromisso: 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 ao localizar a funcionalidade em conjunto.

  • 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 de custo geral para a carga de trabalho. Por exemplo, você pode incluir um barramento de mensagens para nivelamento de carga ou descarregar tarefas para um aplicativo ou rede de entrega 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, ele pode aumentar os custos totais de propriedade porque requer vários segmentos otimizados em vez de um único componente generalizado.

Troca: aumento do investimento em itens que não estão alinhados com os requisitos funcionais. Uma abordagem para a otimização de custos é avaliar o valor de qualquer solução que seja 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 metas de desempenho.

  • Uma carga de trabalho de desempenho requer dados de telemetria para observabilidade que devem ser transferidos e armazenados. Um aumento na telemetria de desempenho que está sendo coletada pode aumentar o custo de transferência e 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 testes de desempenho incluem:

    • Instanciação de ambientes dedicados a testes centrados no desempenho.
    • Utilização de ferramentas de desempenho especializadas.
    • Gastando 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 de Eficiência de Desempenho com a 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 logaritário e métrico para gastar menos tempo de processamento na recolha de telemetria reduz a observabilidade global. Exemplos incluem:

    • Menos pontos de dados para criar alertas significativos.
    • Lacunas de cobertura nas atividades de resposta a incidentes.
    • Observabilidade limitada em interações e limites sensíveis à segurança ou à conformidade.
  • Os padrões de design de desempenho frequentemente acrescentam complexidade ao introduzirem componentes em fluxos críticos. A estratégia de monitorização da carga de trabalho deve incluir esses componentes. Quando um fluxo abrange múltiplos componentes ou limites de aplicação, o desempenho deve ser correlacionado entre 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 através do aumento da 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 de rotina quando as equipes tentam garantir que essas tarefas não afetem a consistência dos dados.

Compensação: Stress cultural. A Excelência Operacional está enraizada numa cultura de irrepreensão, respeito e melhoria contínua.

  • A realização de análise de causa raiz de problemas de desempenho identifica deficiências em processos ou implementações que exigem correção. A equipa deve considerar o exercício uma oportunidade de aprendizagem. Se os membros da equipe forem culpados por 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, os horários de menor movimento podem ser inconvenientes ou fora do horário normal de trabalho para os membros da equipa que são responsáveis por ou qualificados para essas tarefas.

Explore as compensações para os outros pilares: