O monitoramento do desempenho de aplicativos (APM) é a prática de usar dados em tempo real para rastrear o desempenho de um aplicativo e as experiências digitais dos seus usuários finais.

Uma boa ferramenta de APM deve responder às seguintes perguntas:

  • "O aplicativo está corrompido ou lento?"
  • "Se o aplicativo está corrompido ou lento, o que está causando o problema?"

As equipes de DevOps e engenharia podem usar ferramentas de APM para responder essas perguntas e encontrar e corrigir problemas rapidamente, antes que afetem os usuários reais.

Os termos "monitoramento do desempenho de aplicativos" e "gerenciamento de desempenho do aplicativo" normalmente fazem referência ao mesmo assunto, e você também pode ver termos como "monitoramento de desempenho" ou "monitoramento de aplicativos".

Hoje em dia, os aplicativos empresariais costumam ser altamente distribuídos, o que faz com que problemas de desempenho e erros sejam mais difíceis de ser encontrados sem uma solução de APM.

Por que o monitoramento do desempenho de aplicativos é importante?

Ninguém quer lidar com um aplicativo lento ou corrompido, seja um usuário final ou as equipes que fazem a manutenção e criam aplicativos.

Experiência do usuário final

Os usuários finais esperam velocidade e confiabilidade quando usam aplicativos web. Eles querem desempenho otimizado e tempo de resposta rápido.

Os usuários abandonam um site em segundos se ele não carrega. E pior ainda: se uma pessoa tiver uma experiência do usuário ruim, ela provavelmente vai procurar a concorrência. Um estudo sugere que 12% dos usuários avisariam amigos e familiares sobre um site ou aplicativo com o qual não tiveram uma boa experiência, o que pode ter um impacto negativo no êxito da empresa, na satisfação dos clientes e na reputação da marca.

Facilidade para as equipes de engenharia

Os problemas de desempenho do aplicativo também podem causar grandes transtornos para as equipes de engenharia. Um engenheiro de plantão pode receber um alerta crítico do sistema sobre transações da empresa às 3h, o que pode fazer com que todas as equipes tentem resolver o problema no meio da noite.

É ainda pior quando um problema crítico não tem contexto, o que significa que os engenheiros nem mesmo têm certeza de onde ele vem. O problema pode vir de uma API, do cluster do Kubernetes, do serviço na nuvem ou de vários outros locais, do código à nuvem. E quanto mais tempo demorar para ele ser resolvido, maior será o impacto negativo sobre os clientes e os resultados da empresa.

O monitoramento do desempenho de aplicativos ajuda as equipes de engenharia a localizar os problemas rapidamente e resolvê-los de maneira proativa. Por exemplo, uma equipe de engenharia pode definir um limite crítico que envia um alerta quando os tempos de carregamento da página se tornam lentos e, depois, combinar isso com um rastreamento detalhado para localizar rapidamente a causa e corrigi-la antes que os usuários finais sejam afetados.

A alternativa é aprender sobre o problema dos usuários finais, o que significa que eles já foram impactados, e lutar para resolver o problema sem o contexto adicional que o monitoramento do desempenho de aplicativos fornece, resultando em tempo médio de detecção (MTTD) e tempo médio de resolução (MTTR) mais longos.

O APM pode pegar um grande volume de dados de telemetria brutos e correlacioná-los em métricas, padrões e anomalias para que as equipes de engenharia possam encontrar e corrigir problemas rapidamente.

O que você pode monitorar com uma solução de monitoramento do desempenho de aplicativos?

Geralmente, um aplicativo de software tem muitos serviços e camadas diferentes, e o APM pode ser usado para monitorar cada uma dessas camadas. Por exemplo, uma solução de APM pode ser usada para coletar informações atuais e históricas sobre as seguintes camadas:

  • Infraestrutura, incluindo uso de memória, uso de CPU e disponibilidade do aplicativo
  • Back-end do aplicativo, como desempenho de consulta ao banco de dados e análise de erro
  • Front-end do aplicativo, incluindo renderização de navegador web, monitoramento da experiência do usuário e métricas de desempenho

O APM não é limitado ao monitoramento de websites. Você também pode monitorar aplicativos móveis, servidores, redes, APIs, aplicativos internos voltados a funcionários, serviços com base na nuvem e outras tecnologias.

Vamos nos aprofundar e ver mais de perto os tipos de ferramentas que normalmente estão inclusas em uma solução de monitoramento de aplicativos.

Dashboards operacionais

Os dashboards operacionais fornecem uma exibição geral de alto nível do desempenho do seu aplicativo. É possível personalizar dashboards operacionais para exibir suas métricas mais importantes, desde sinais clássicos até KPIs personalizadas e quaisquer serviços que você esteja monitorando.

Monitoramento real do usuário

O monitoramento real do usuário, também conhecido como RUM, fornece insights sobre o que os usuários reais estão fazendo no seu aplicativo, além de quão bem o aplicativo está funcionando para esses usuários.

Monitoramento sintético

O monitoramento sintético envolve usar um navegador headless para imitar o comportamento de usuários reais. Os utilizadores podem testar fluxos de usuário específicos proativamente sem precisar de dados de usuários reais.

Monitoramento Serverless

O monitoramento Serverless também permite que você monitore o desempenho dos aplicativos que usam serviços na nuvem, como o AWS, em vez de servidores locais.

Monitoramento de banco de dados

O monitoramento de banco de dados permite monitorar o desempenho do seu banco de dados para determinar quanto tempo as consultas estão demorando.

Monitoramento de Mobile

O monitoramento de Mobile permite monitorar aplicativos Android e iOS, incluindo problemas de latência e histórico de crash. 

Monitoramento de infraestrutura

O monitoramento de infraestrutura é necessário para obter insights sobre o desempenho da sua infraestrutura, seja hardware, infraestrutura de nuvem ou clusters do Kubernetes.

Mapas de serviço

Os mapas de serviço permitem que você veja rapidamente suas dependências e conexões do aplicativo, o que é especialmente importante em aplicativos grandes que usam milhares de serviços.

Uma boa solução de APM também proporciona a oportunidade de consultar seus dados de telemetria para obter insights mais detalhados, examinar logs e usar trace distribuído para examinar vários eventos e encontrar a causa raiz dos problemas.

Quais são os benefícios do monitoramento do desempenho de aplicativos?

Uma boa solução de monitoramento de aplicativos proporciona benefícios diretos e indiretos.

  • Abordagem proativa para gerenciar incidentes
  • Tempo médio de detecção e tempo médio de resolução de problemas mais baixos
  • Mais tempo investido em inovação e criação de recursos
  • Menos trabalho e estresse para os engenheiros de confiabilidade de sites e para as equipes de resposta a incidentes
  • Interrupções mais curtas e em menor frequência
  • Melhor experiência do usuário
  • Uso mais eficiente e econômico de serviços na nuvem e outros serviços baseados em consumo
  • Impacto positivo nos resultados, incluindo margem bruta e lucro maiores

Quem usa o monitoramento do desempenho de aplicativos?

O monitoramento do desempenho de aplicativos é uma prática importante para todas as empresas, sejam ou não do setor de tecnologia. Como a maioria das empresas tem presença on-line, é necessário monitorar o desempenho dos ativos web e a experiência geral dos usuários finais. Mas quais equipes estão usando e se beneficiando do APM? Isso pode variar com base no tamanho e no escopo do aplicativo.

  • Engenheiros de DevOps automatizam processos relacionados a teste, implantação e manutenção de aplicativos em produção. O monitoramento do desempenho de aplicativos é uma prática recomendada essencial de DevOps.
  • Engenheiros de confiabilidade de sites (SREs) usam uma abordagem baseada em software para as operações. O foco desse trabalho é garantir que os aplicativos sejam confiáveis. É absolutamente essencial que as equipes de SRE usem o APM para monitorar proativamente a confiabilidade do site.
  • Engenheiros de software escrevem código e criam recursos. Em empresas menores, engenheiros de software podem estar envolvidos em todas as partes do processo, incluindo o monitoramento do código em produção. Até mesmo em empresas maiores, engenheiros se envolvem bastante em muitas partes do ciclo de vida do software.

Quais etapas estão envolvidas na configuração do monitoramento do desempenho de aplicativos?

Para integrar o monitoramento do desempenho de aplicativos, é necessário instalar agentes para rastrear os dados que fluem pelo aplicativo. Esse processo é conhecido como instrumentação, e costuma ser tão simples quanto usar uma interface de linha de comando (CLI) para instalar automaticamente os agentes que você precisar. Esses agentes coletam e relatam informações sobre transações da web e fora dela. Também é possível usar a instrumentação personalizada para incluir mais detalhes nos traces da transação ou bloquear a instrumentação de transações que você não deseja acompanhar. Ao usar a CLI para automatizar o processo de instrumentação, você pode começar a enviar os dados de telemetria para sua solução de APM em minutos.

Os aplicativos distribuídos complexos usam muitos serviços diferentes e, idealmente, todas as partes de um aplicativo devem ser instrumentadas. Uma ferramenta de APM abrangente fornece integrações para muitos serviços populares, como AWS e Azure, para que você possa instrumentar rapidamente dependências de terceiros em seu aplicativo.

Basicamente, você pode escolher quais recursos precisa para seu aplicativo e o que deseja instrumentar. Você verá mais benefícios na abordagem "todos os anteriores", o que significa que você tem um monitoramento de ponta a ponta, também conhecido como observabilidade, para seus aplicativos.

Qual é a diferença entre monitoramento do desempenho de aplicativos e observabilidade?

APM é sobre o monitoramento do desempenho de um aplicativo, mas muitas arquiteturas modernas são complexas demais para monitorar e gerenciar apenas com isso. O APM fornece uma visão de alto nível de como um aplicativo está sendo executado, mas, para chegar à causa raiz de um problema em aplicativos maiores e complexos, é necessário usar uma abordagem mais técnica.

Observabilidade é sobre ter insights técnicos mais aprofundados sobre o estado de todo o sistema, independentemente do tamanho ou da complexidade dele. Embora o APM forneça métricas agregadas, você também precisa de outras ferramentas, como trace distribuído, para se aprofundar em seus dados.

O monitoramento do desempenho de aplicativos é uma parte da observabilidade, e a observabilidade é um superconjunto do APM. Com tantos aplicativos, é necessário ter uma solução de observabilidade completa.

Para saber mais sobre as diferenças entre APM e observabilidade, confira APM versus observabilidade.