Um engenheiro visualizando um monitor ou terminal.

O que é engenharia de desempenho?

Definição de engenharia de desempenho

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.

Engenharia de desempenho versus gerenciamento de desempenho de aplicações e testes de desempenho

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.

Como funciona a engenharia de desempenho?

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.

Benchmarks

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.

Testes e priorização

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:

Testes de carga

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.

Testes de escalabilidade

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.

Testes de estresse

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.

Teste de pico

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.

Teste de volume

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.

Testes de resistência

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.

Otimização

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:

  • Otimização de algoritmos, em que os algoritmos que impulsionam as funções do sistema são ajustados para melhorar a eficiência.

  • Otimização de bancos de dados, processo no qual problemas subjacentes aos dados do sistema são corrigidos por meio de métodos como otimização de consultas (o processo de determinar a maneira mais eficiente para um banco de dados executar uma consulta) ou otimização de índices, que visa garantir que o sistema utilize os caminhos de recuperação mais rápidos possíveis.

  • Caching, que armazena os resultados de operações de computação exigentes para que possam ser reproduzidos e recuperados mais rapidamente.

  • Otimização de memória, onde engenheiros reduzem vazamentos de memória e aceleram a coleta de lixo reutilizando objetos na memória, reorganizando dados ou armazenando alguns dados externamente.

  • Otimização de rede, que envolve compressão de largura de banda, balanceamento de carga, reutilização de conexões HTTP e outros métodos para acelerar o desempenho da rede.

Planejamento e monitoramento

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.

AI Academy

Preparando-se para a IA com a nuvem híbrida

Liderada pelos principais líderes da IBM, o currículo dessa experiência foi desenvolvido para ajudar líderes empresariais a terem o conhecimento necessário para priorizar os investimentos em IA capazes de estimular o crescimento.

Benefícios da engenharia de desempenho

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.

Melhoria da experiência do usuário

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.

Maior escalabilidade

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).

Resolução eficiente de problemas

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.

Planejamento de capacidade simplificado

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.

Desafios da engenharia de desempenho

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.

Complexidade

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.

Identificação de causas raiz

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

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.

Construção da infraestrutura

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.

Autores

Derek Robertson

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

Soluções relacionadas
IBM Cloud Infrastructure Center

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.

Explore o Cloud Infrastructure Center
Infraestrutura de TI

Ofereça infraestrutura preparada para IA e segura em ambientes de nuvem híbrida

Explore as soluções de infraestrutura de TI
Serviços de infraestrutura

Acelere, proteja e otimize sua infraestrutura corporativa de nuvem híbrida com orientação de especialistas do IBM Technology Expert Labs.

Explore serviços de infraestrutura
Dê o próximo passo

Transforme a infraestrutura da sua empresa com as soluções de nuvem híbrida e preparadas para IA da IBM. Explore servidores, armazenamento e software projetados para proteger, expandir e modernizar sua empresa, ou tenha insights de especialista para fortalecer sua estratégia de IA generativa.

  1. Explore a solução de infraestrutura de TI
  2. Conheça a IBM Cloud