Middleware

O que é Application Performance Management?

APM refere-se ao gerenciamento de desempenho de aplicativos e sistemas, ou ao monitoramento de desempenho de aplicativos. APM não é monitoramento!.

Você pode dizer que eles são a mesma coisa, ou talvez a administração inferir ser mais pró-ativa e o monitoramento apenas é reativo quando se trata do desempenho de sua aplicação. Não é assim que as coisas funcionam. Talvez em algumas empresas onde não exista um envolvimento/entendimento do assunto.

De qualquer forma, APM é uma ferramenta essencial para ajudar a otimizar e monitorar o desempenho de seus aplicativos e sistemas.

Em termos simples, APM ou gerenciamento de desempenho de aplicativos, é em grande parte um termo criado pelo setor ou pelo fornecedor para qualquer coisa que tenha a ver com o gerenciamento ou monitoramento do desempenho de seu código, dependências de aplicativos, tempos de transações e experiências gerais de usuários.

Conforme um trecho da Wikipedia: “Desde o primeiro semestre de 2013, a APM entrou em um período de intensa competição de tecnologia e estratégia com uma multiplicidade de fornecedores e pontos de vista. Isso causou uma agitação no mercado com vendedores de origens não relacionadas (incluindo monitoramento de rede, gerenciamento de sistemas, instrumentação de aplicativos e monitoramento de desempenho na web) para adotar mensagens em torno da APM. Como resultado, o termo APM tornou-se diluído e evoluiu para um conceito para gerenciar o desempenho das aplicações em muitas plataformas de computação diversas, em vez de um mercado único”.

Uma vez que a APM é uma espécie de termo presente para qualquer coisa e tudo relacionado ao desempenho, alguns vendedores usam o termo para significar coisas totalmente diferentes. APM pode abranger diversos tipos de soluções de fornecedores.

  • Métricas de aplicativos: Várias ferramentas usam várias métricas de servidor e aplicativo e a chamam de APM. Na melhor das hipóteses, eles podem dizer-lhe quantos pedidos o seu aplicativo obtém e, potencialmente, quais URLs podem estar mais lentas. Como eles não fazem análise de perfil de nível de código, eles não podem dizer o porquê.
  • O desempenho do nível de código: Stackify Retrace, New Relic, AppDynamics e Dynatrace são o tipo típico de produtos APM que você pensa, com base no perfil de código e no rastreamento de transações. Tais aplicações são voltadas para negócio. Muitas vezes erroneamente são administradas por times de infraestrutura ou desenvolvimento. Este tipo de aplicação deve ser vista como Arquitetura ou por outra área cross da empresa.
  • Baseado em rede – o Extrahop usa o termo APM em relação à sua capacidade de medir o desempenho das aplicações com base no tráfego de rede. Existe toda uma categoria de produtos chamada NPM que se concentra neste tipo de soluções.

Algumas outras ferramentas fazem o monitoramento com base nas métricas do servidor e do aplicativo, e não no desempenho do nível de código, às vezes se referem a seus produtos como soluções de monitoramento de desempenho de aplicativos. Conhecer a carga de uso de CPU do servidor, uso de memória, heap ou nivel de log, ou mesmo a resposta média do seu servidor web é importante e útil, mas a APM pretende avançar muito mais.

Ao alavancar o perfil de código e outras técnicas de coleta de dados, as ferramentas de monitoramento de desempenho de aplicativos podem fornecer rastreamento detalhado de transações.

A APM trata de entender o “porquê” o mais rápido possível. Se você quiser medir o desempenho de um aplicativo da web, é bastante trivial analisar os logs de acesso e ter uma idéia de quanto tempo os pedidos da web são necessários. Isso lhe daria uma idéia sobre o desempenho geral e quais páginas são lentas. Infelizmente, não responde a questão-chave do porquê e como resolver.

O coração das soluções de APM é de entender por que as transações em sua aplicação são lentas ou falham. Por exemplo, um time de desenvolvimento ou operações pode informar instantaneamente e de modo visual que seu banco de dados está causando alguns pontos de lentidão no desempenho. Eles também podem aproveitar o APM para identificar exatamente qual consulta de banco de dados e solicitações da web foram afetadas juntamente com classes da aplicação, e momento exato do clique do usuário.

As soluções APM podem ajudar a identificar problemas comuns de aplicativos rapidamente:

  • Acompanhe o uso geral das aplicações para entender os picos
  • Encontre problemas de lentidão ou conexão com dependências de aplicativos, incluindo SQL, filas, cache, etc.
  • Identificar consultas SQL lentas
  • Encontre o maior volume e páginas mais lentas ou transações
  • Verificar o gargalo exato em nivel de infraestrutura ou integração

Para desenvolvedores, APM é realmente tudo sobre análise de dados. Mas eles precisam de mais dados, eles precisam de insights acionáveis ??a partir desses dados para que possam chegar rapidamente à causa raiz do que está causando problemas em sistemas.

Aqui estão alguns dos principais recursos que a maioria deles suportam:

Desempenho de cada pedido e transação na web

No coração da APM, você precisa medir o desempenho de cada solicitação e transação da web em sua aplicação. Você pode usar isso para entender quais pedidos são mais acessados, quais são os mais lentos e quais você deve adicionar ao seu atraso para melhorar.

Conhecer o desempenho de cada pedido na web é apenas o começo. Você poderia obter isso de um registro de acesso ao servidor web. A verdadeira chave é entender o porquê.

Perfis de desempenho de nível de código

Se você quer entender por que sua aplicação é lenta, emite erros ou tem erros esquisitos, você precisa ir ao nível do código. Saber que uma determinada solicitação na web não funciona é importante e realmente muito fácil. Descobrir por que não funciona é difícil, às vezes muito difícil.

Ao rastrear o que o seu aplicativo está fazendo por todo o caminho até o nível do código, você pode potencialmente obter mais informações sobre o que está ocorrendo:

  1. Quais os principais métodos em seu código são mesmo chamados?
  2. Quais métodos são lentos?
  3. O seu aplicativo é lento devido a coisas como JIT, coleta de lixo, etc.?
  4. Quais dependências estão sendo chamadas?
  5. Quais requisições efetivamente chegaram em seu sistema?

Uso e desempenho de todas as dependências de aplicativos, como bancos de dados, serviços da web, cache, etc.

Por que seu aplicativo é lento normalmente se resume a um aumento no tráfego ou a um problema com uma das suas dependências de aplicativos. É muito comum ter esses tipos de problemas:

  1. Uma consulta SQL específica é mais lenta
  2. O servidor de banco de dados SQL está desativado
  3. As chamadas de serviços HTTP/HTTPS externos estão falhando
  4. Servidores da integração estão causando problemas

Como um exemplo, recentemente tivemos alguns problemas acessando uma certa API. Eles estavam nos enviando excessivas requisições e a única maneira que nós teríamos de método conhecido é porque estávamos acompanhando todas as exceções e conseguimos ver na nossa APM que as transações afetadas também estavam falhando.

Traços detalhados de pedidos ou transações individuais da web

Resolução de problemas na produção são muito difíceis. Os traços de transações tornam isso muito mais fácil ao poder ver detalhes sobre exatamente o que está acontecendo no seu código e como isso afeta seus usuários.

Os traços podem conter esses tipos de dados:

  1. Informações de solicitação na Web como URL, etc.
  2. Quem era o usuário
  3. Quais dependências o seu código chamou (SQL, cache, chamadas HTTP, etc.)
  4. Declarações de registro
  5. Erros de aplicação
  6. Principais métodos no seu código

Ver todos esses dados em um único rastreamento pode ajudar a ter como reproduzir um problema em um ambiente de homologação ou qualidade. Chegar à causa raiz de um problema, pode ser quase instantâneo com uma solução APM que coleta traços em detalhes.

Monitoramento básico do servidor e métricas como CPU, memória, etc.

Problemas de aplicação podem ocorrer por muitos motivos. Graças à virtualização e à nuvem, um servidor que fica indisponível não é tão comum nos dias de hoje.

No entanto, ainda acontece e é algo que você precisa monitorar. Também é crítico monitorar coisas como CPU e memória do servidor. Muitas aplicações web modernas geralmente não são conectadas pela CPU, mas elas ainda podem usar uma grande quantidade de CPU e é um indicador útil para o dimensionamento automático de sua aplicação.

Métricas da estrutura de aplicativos, como contadores de desempenho, JMX MBeans, etc.

As métricas do servidor, como CPU e memória, são interessantes, mas para os desenvolvedores, as métricas de aplicativos podem ser muito mais valiosas para um verdadeiro monitoramento do desempenho das aplicações.

Os desenvolvedores precisam monitorar métricas em torno de coisas como coleta de lixo, filas de solicitação, volumes de transações, tempos de carregamento de páginas e muito mais.

Os desenvolvedores podem monitorar uma grande variedade de Windows Performance Counters e JMX MBeans. Também pode ser crítico monitorar coisas como Redis, Elasticsearch, SQL e outros serviços para métricas chave.

Métricas de aplicativos personalizados criadas pela equipe de desenvolvimento ou empresa

As métricas padrão de aplicativos e servidores podem ser muito úteis para monitorar seus aplicativos. No entanto, você pode obter muito mais valor criando e monitorando suas próprias métricas personalizadas.

Com um bom entendimento de APM, é possivel fazer coisas como monitorar quantas mensagens de log por minuto estão sendo carregadas para nós ou quanto tempo leva para processar uma mensagem fora de uma fila.

Esses tipos de métricas personalizadas são fáceis de criar e podem ser muito úteis para o monitoramento do desempenho das aplicações.

Dados do registro do aplicativo

Sempre que algo der errado na produção, a primeira coisa que você vai ouvir um desenvolvedor dizer é “envie-me os logs”. Os dados do registro geralmente são os olhos e os ouvidos dos desenvolvedores, uma vez que suas aplicações são implantadas.

Os desenvolvedores precisam acessar seus logs através de uma solução de log centralizada como um produto de gerenciamento de logs. Felizmente, o gerenciamento de logs é um recurso APM incluído na maioria das ferramentas ou implementada com uma ferramenta adicional e integrada. A maioria das soluções de APM não suporta o que os programadores querem ver … seus logs!

Erros de aplicação

A última coisa que queremos é que um usuário entre em contato conosco e nos diga que nosso aplicativo está dando-lhes um erro ou apenas lentidão em uma localidade. Como desenvolvedores, precisamos estar cientes de qualquer problema, isso ocorre e é constantemente observado por eles.

Os erros são a primeira linha de defesa para encontrar problemas de aplicação. Precisamos encontrar e corrigir os erros, ou, pelo menos, saber sobre eles, antes ou de os clientes chamar-nos para nos dizer. Na maioria das vezes, aposto que as chances são de que em sua empresa o usuário entre em contato primeiro para informar o problema.

Um excelente rastreamento de erros, relatórios e alertas são absolutamente críticos para os desenvolvedores em um sistema de gerenciamento de desempenho de aplicativos.

Eu recomendo configurar alertas para novas exceções, bem como para monitorar as taxas gerais de erro. Sempre que você fizer uma nova implantação para a produção, você deve estar assistindo seus painéis de erro para ver se surgiram novos problemas. As probabilidades são que, você encontrará algum tipo de novos erros que você pode identificar e assim corrigir rapidamente.

Monitoramento do usuário real

Compreender o desempenho de seus aplicativos no lado do servidor é importante. No entanto, as aplicações de hoje utilizam tantas e diversas linguagens, que é importante também monitorar quanto tempo demora seu navegador carregar e renderizar suas páginas web.

Um erro simples de código ou um arquivo estranho aos navegadores pode ocasionar um carregamento lento que pode prejudicar sua aplicação. O monitoramento de usuários reais, ou RUM, é outra característica importante da APM que os desenvolvedores precisam monitorar completamente suas aplicações.

Para finalizar, caso precise de ajuda no entendimento, entre em contato.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *