A engenharia de desempenho é a prática de otimizar sistemas de TI para atender a benchmarks de velocidade e eficiência.
A engenharia de desempenho não é apenas uma ação única, mas uma metodologia de DevOps e shift-left que permite que as empresas acompanhem e otimizem o desempenho em cada etapa do ciclo de vida de desenvolvimento de software (SDLC). Seu objetivo é garantir que os sistemas atendam a métricas de desempenho para critérios como velocidade, confiabilidade, eficiência e tempo de resposta.
As equipes de engenharia de desempenho primeiro estabelecem o desempenho de linha de base do sistema por meio de testes de estresse. Em seguida, usam essa linha de base para identificar problemas de rede e oportunidades de melhoria. Quando os benchmarks são definidos, os engenheiros podem começar a reconfigurar a rede, implementar correções e monitorar continuamente a rede em busca de problemas de desempenho e planejamento futuro de capacidade.
A observabilidade é a base da engenharia de desempenho. As ferramentas de observabilidade coletam os dados brutos (logs, métricas e rastreamentos) que descrevem o desempenho do sistema, e as equipes de engenharia de desempenho usam esses mesmos dados para rastrear os efeitos de suas correções. Os engenheiros de desempenho também utilizam várias outras ferramentas para gerenciamento e monitoramento de desempenho de aplicações, testes de estresse, auditoria de navegadores e benchmarking para obter as imagens mais claras possíveis de seus sistemas.
A engenharia de desempenho é a disciplina mais ampla, de ponta a ponta, da otimização de sistemas de TI para atender a benchmarks predeterminados. O gerenciamento de desempenho de aplicações (APM) e os testes de desempenho são duas das atividades envolvidas nesse processo geral.
O gerenciamento de desempenho de aplicações é uma prática que utiliza ferramentas de software, análise de dados e processos de gerenciamento de aplicações para ajudar as organizações a otimizar o desempenho, a disponibilidade e a experiência do usuário em aplicações empresariais. Enquanto a engenharia de desempenho abrange todo o processo de desenvolvimento, o APM se concentra em detectar e corrigir problemas em aplicações ativas.
Da mesma forma, os testes de desempenho são a atividade específica de testar o desempenho de uma rede ou aplicação sob várias condições por meio de testes de carga, testes de estresse, testes de resistência e outros testes. Assim como o APM, os testes de desempenho são apenas uma atividade dentro da prática mais ampla da engenharia de desempenho.
Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.
A engenharia de desempenho é realizada por meio de uma sequência flexível, mas abrangente, que inclui definição de benchmarks, testes e priorização, otimização, planejamento e monitoramento de desempenho.
Primeiro, a organização identifica o nível de desempenho necessário para seus sistemas e aplicações para atender às metas de negócios. Em seguida, os engenheiros de desempenho testam o desempenho atual para estabelecer pontos de referência e determinar como atender aos benchmarks.
As métricas de benchmark comuns incluem latência, rendimento, utilização de recursos e taxa de erro. As equipes de desenvolvimento podem medir essas métricas no nível micro (em um servidor ou serviço específico) ou em uma escala maior em toda uma aplicação ou rede.
O benchmarking geralmente envolve perguntas específicas sobre requisitos de desempenho e o ambiente de desenvolvimento. Por exemplo, em vez de tentar definir um limite geral para a utilização da CPU, os engenheiros podem perguntar se menos de 60% da CPU é usada quando 5.000 usuários estão usando uma aplicação simultaneamente.
Usando ferramentas de testes de desempenho, os engenheiros de desempenho validam os dados de teste em relação a benchmarks estabelecidos para identificar onde e quais alterações devem ser feitas para atender aos níveis de serviço necessários.
As formas comuns de testes de desempenho incluem:
Os testes de carga indicam o desempenho do sistema operando com cargas esperadas. O objetivo dos testes de carga é mostrar o comportamento do sistema ao encontrar cargas de trabalho de tamanho rotineiro sob condições normais de trabalho com números médios de usuários simultâneos.
Os testes de escalabilidade colocam o sistema sob estresse, aumentando o volume de dados ou as cargas dos usuários que estão sendo tratadas. Ele mostra se um sistema pode atender a um ritmo mais acelerado e, ainda assim, cumprir o prometido.
Os testes de estresse levam o sistema ao seu limite operacional conhecido (e até mais longe) para determinar exatamente o quanto o sistema pode suportar antes de atingir o ponto de ruptura.
Os testes de pico observam o que acontece quando o tráfego de usuários ou o volume de dados de repente experimenta um pico acentuado e drástico na atividade. O sistema deve absorver várias alterações enquanto continua as operações normais.
Os testes de volume examinam como um sistema lida com grandes quantidades de dados, especificamente se ele pode processar totalmente esses dados e armazená-los sem degradação.
Os testes de resistência, ou testes de imersão, ocorrem quando os engenheiros observam um sistema ao longo do tempo para detectar problemas como a degradação gradual de dados ou vazamentos de memória.
Após a identificação dos limites e deficiências do sistema, o processo de otimização começa.
Dependendo da natureza do gargalo de desempenho em questão, os engenheiros de desempenho podem usar estratégias de otimização como:
Depois que o sistema for otimizado, os engenheiros de desempenho monitorarão continuamente a divergência em relação à nova linha de base e planejarão o crescimento e a atividade futuros.
A observabilidade permite que os engenheiros de desempenho determinem se o sistema está funcionando conforme o planejado. Ao coletar e analisar logs, métricas e rastreamentos, as ferramentas de observabilidade permitem que as equipes de TI automatizem a identificação e a resolução de problemas em tempo real. Quanto mais observável for um sistema, mais rapidamente e com precisão as equipes de TI podem passar de um problema de desempenho identificado para sua causa raiz, sem testes ou programação extras.
O planejamento de capacidade permite que os engenheiros de desempenho estejam um passo à frente das necessidades de negócios, ao prever futuras exigências de infraestrutura de TI. O planejamento de capacidade envolve a análise da demanda atual e da capacidade disponível, comparando-as com as capacidades e recursos da organização. As organizações, então, desenvolvem uma estratégia ajustável que lhes permite escalar com eficiência os recursos e a produção.
Os benefícios da engenharia de desempenho incluem uma melhor experiência do usuário, uma infraestrutura de TI mais escalável, uma resolução mais eficiente de problemas e um planejamento de capacidade aprimorado.
A engenharia de desempenho melhora a experiência do usuário corrigindo problemas de desempenho, como alta latência, que podem afastar os usuários de um serviço. Ao otimizar o processo de engenharia de software e seus resultados, a engenharia de desempenho pode ajudar a gerar confiança com os usuários e impulsionar a fidelização.
A engenharia de desempenho oferece uma visão clara dos problemas dentro de um sistema. Essa imagem facilita a identificação de gargalos ao expandir esse sistema (seja horizontal, adicionando novos serviços, ou verticalmente, usando mais capacidade de rede).
A engenharia de desempenho ajuda a garantir que os engenheiros estejam equipados com as ferramentas e o conhecimento necessários para produzir sistemas que atendam aos benchmarks estabelecidos. Os engenheiros podem resolver problemas de desempenho mais rapidamente, reduzindo o tempo médio de reparo (MTTR) e a um menor custo, porque os problemas são detectados antes de terem a oportunidade de interromper significativamente o desempenho da rede.
A engenharia de desempenho pode ajudar a melhorar a eficácia do planejamento de capacidade, aprimorando a compreensão dos engenheiros sobre como os sistemas se comportam. Por meio do processo de benchmarking e das práticas contínuas de observabilidade, os engenheiros obtêm um insight mais amplo das necessidades de suas redes. Esse insight ajuda os engenheiros a tomar melhores decisões sobre a capacidade, reduzindo o risco de gastos excessivos ou insuficientes na capacidade do servidor.
Os desafios da engenharia de desempenho incluem a complexidade dos sistemas modernos, a identificação das causas raiz dos problemas, a contabilização dos problemas de "cauda longa" e a criação das ferramentas e do conhecimento especializado necessários.
Os ambientes modernos de TI são dominados por microsserviços que podem chegar a milhares, geralmente hospedados em ambientes complexos de nuvem híbrida. Coletar, analisar e agir com base em insights nesses sistemas distribuídos pode ser um processo que consome muitos recursos e, às vezes, apresenta fluxos de trabalho imprevisíveis.
A complexidade também torna mais difícil identificar as verdadeiras causas raiz dos problemas de rede. Se uma API está respondendo lentamente, pode ser resultado de um banco de dados mal indexado, um vazamento de memória ou um problema de configuração. Os engenheiros de desempenho talvez precisem realizar uma análise da causa raiz para identificar a oportunidade real de otimização.
Problemas de cauda longa são condições de rede ruins enfrentadas por uma pequena minoria de usuários. Geralmente são causadas por problemas idiossincráticos e difíceis de detectar, que escapam às práticas normais de observabilidade. No contexto da engenharia de desempenho, esses problemas representam um desafio porque ameaçam as condições gerais da rede, mas suas causas raiz são difíceis de descobrir por meio de testes de desempenho normais.
A prática da engenharia de desempenho exige conhecimento especializado da equipe e recursos de plataforma sofisticados. Os testes de desempenho requerem simulações caras e em grande escala das condições da rede. As equipes devem entender os sistemas bem o suficiente para transformar uma grande quantidade de dados de telemetria em insights praticáveis. A natureza flexível e iterativa da engenharia de desempenho exige uma estrutura institucional que possa lidar com mudanças rápidas.
O IBM® Cloud Infrastructure Center é uma plataforma de software compatível com OpenStack projetada para gerenciar infraestrutura de nuvem privada em sistemas IBM Z e IBM LinuxONE.
Ofereça infraestrutura preparada para IA e segura em ambientes de nuvem híbrida
Acelere, proteja e otimize sua infraestrutura corporativa de nuvem híbrida com orientação de especialistas do IBM Technology Expert Labs.