Compensações de eficiência de desempenho
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.
Durante o processo de negociação das metas de desempenho de uma carga de trabalho e de design de uma carga de trabalho para eficiência de desempenho, é importante estar ciente de como os princípios de design de Eficiência de Desempenho e as recomendações na lista de verificação de revisão de Projeto para Eficiência de Desempenho podem afetar as metas de otimização de outros pilares. Certas decisões de eficiência de desempenho podem beneficiar alguns pilares, mas constituem compensações para outros. Este artigo lista exemplos de compensações que uma equipe de carga de trabalho pode encontrar ao projetar a arquitetura e as operações da carga de trabalho para eficiência de desempenho.
Compensações de eficiência de desempenho com confiabilidade
Compensação: replicação reduzida e densidade aumentada. Uma pedra angular da confiabilidade é garantir a resiliência usando replicação e limitando o raio de explosão de avarias.
Uma carga de trabalho que alcança eficiência ao adiar o dimensionamento até o último momento responsável atende de perto à demanda, mas é vulnerável a falhas de nó imprevistas e atrasos de escala.
A consolidação de recursos de carga de trabalho pode usar o excesso de capacidade e melhorar a eficiência. No entanto, aumenta o raio de jateamento 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.
O particionamento e a fragmentação de dados ajudam a evitar problemas de desempenho em conjuntos de dados grandes ou acessados com frequência. No entanto, a implementação desses padrões aumenta a complexidade porque a consistência (eventual) precisa ser mantida em 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.
Compensações de eficiência de desempenho com 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 ignorar componentes ou processos que contribuem para atrasos em um fluxo, especialmente quando seu tempo de processamento não é justificado. No entanto, esta estratégia pode comprometer a segurança e deve ser acompanhada por uma análise de risco exaustiva. 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 barramento de mensagens para nivelamento de carga
Um balanceador de carga para réplicas dimensionadas automaticamente
Descarregamento de dados para caches, redes de entrega de aplicativos ou redes de distribuição de conteúdo
Descarregando o processamento para trabalhos em segundo plano ou até mesmo computação de 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 multilocação ou a 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 menor privilégio e obscurece trilhas de auditoria individuais em logs de acesso.
Controlos de segurança de perímetro, por exemplo, regras de rede, que são reduzidos para abranger todos os componentes colocalizados, dando 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. 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.
Compensações 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.
- Dimensionar um recurso para cima ou para fora durante uma etapa de solução de problemas de uma resposta a incidentes.
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.
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 a funcionalidade de colocalização.
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.
Compensação: 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 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 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.
Compensações de Eficiência de Desempenho com 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 log e métrica para reduzir o tempo de processamento gasto na coleta de telemetria em vez de outras tarefas reduz a observabilidade geral do sistema. Alguns exemplos da observabilidade reduzida resultante incluem:
- Ele limita os pontos de dados que são usados para criar alertas significativos.
- Conduz a lacunas na cobertura das atividades de resposta a incidentes.
- Limita a observabilidade em interações e limites sensíveis à segurança ou à conformidade.
Quando padrões de design de desempenho são implementados, a complexidade da carga de trabalho geralmente aumenta. Os componentes são adicionados aos fluxos críticos. A estratégia de monitoramento da carga de trabalho e o monitoramento do desempenho devem incluir esses componentes. Quando um fluxo abrange vários componentes ou limites de aplicativos, a complexidade de monitorar o desempenho desse fluxo aumenta. O desempenho do fluxo precisa ser correlacionado em todos os componentes interconectados.
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, fora do horário de pico pode ser inconveniente ou fora do horário normal para os membros da equipe que são responsáveis ou qualificados nessas tarefas.
Ligações relacionadas
Explore as compensações para os outros pilares: