Security

Code profiling: guia de uma ferramenta para monitoring

Code profiling: guia de uma ferramenta para monitoring

A performance de uma aplicação é crucial para o sucesso dela – ou você continua a usar uma aplicação lenta e com quedas constantes? 

Um dos fatores determinantes para garanti-la, entre outros, é a eficiência do seu código. Um código limpo e enxuto não é apenas bonito de se ver, ele é mais rápido e responsivo, é livre de regressões e voltas. 

No entanto, produzir bom código é desafiador em vários aspectos. Os ciclos de desenvolvimento são curtos, deixando pouco tempo para o refatoramento do código. Cada vez mais, a qualidade compete com a velocidade.

É nisso que o code profiling pode ajudar – lado a lado com sua equipe de testers, de infraestrutura e segurança.

Em monitoramento, o code profiling é mais uma fonte de informação, oferecendo contexto para que você detecte e previna mais rápido um problema que impacte o usuário. 

Neste artigo, vamos abordar o que significa e como ele funciona, trazer algumas ferramentas e dar exemplos de code profiling.

Leia também: Como a Dock estruturou o monitoring de aplicações em seu ecossistema com a DataRunk

 

O que é code profiling?

Você pode ter um excelente time de desenvolvedores, mas serão poucas as linhas de código que vão rodar com performance máxima desde a primeira vez. O mais comum – e até natural – é que o novo código (assim como o antigo) injete problemas na aplicação. 

Por isso, o consenso é que o código precisa ser analisado, testado e revisado desde os primeiros estágios do ciclo de desenvolvimento até chegar à versão mais eficiente.

O code profiling é uma técnica de performance monitoring que proporciona visibilidade no nível do código, identificando as maneiras pelas quais ele impacta o processamento e o uso de memória, afetando a oferta do serviço.

Então, sem precisar mexer no código, por meio dessa técnica, as equipes de desenvolvimento podem determinar se e quais rotinas consomem recursos de maneira excessiva ou estão com defeito a fim de utilizá-los.

O code profiling responde coisas como:

  • Quantas vezes cada método da aplicação foi chamado?
  • Quanto tempo leva a execução desse método?
  • Quais os métodos chave do código?
  • Qual a performance de chamadas dependentes?
  • Como a memória é alocada?

 

Leia também: Observability vs. monitoring: qual é a diferença?

 

Ferramentas de code profiling

As ferramentas tradicionais de code profiling eram consideradas invasivas e difíceis de usar. Elas exigiam muitas mudanças no código para fornecerem dados acurados. Como isso pode resultar em mudanças no código-fonte, levando a uma perda de controle sobre o código, elas tinham pouca simpatia das equipes.  

Além disso, muitos consideravam que as próprias ferramentas deixam as aplicações mais lentas, contribuindo para o problema que deveria resolver.

No entanto, esse cenário vem mudando. As ferramentas da nova geração não vêm mais com as limitações das tradicionais. Pelo contrário, elas são menos invasivas e, mesmo assim, oferecem uma série de métricas e se integram bem ao processo de desenvolvimento, dando suporte ao processo de debugging.

Da mesma forma, elas também são mais fáceis de usar. O nível de configuração exigido é menor, diminuindo a curva de aprendizado e o grau de complexidade da ferramenta.

Em relação ao peso, pode-se dizer que elas vão adicionar alguma sobrecarga à performance da aplicação monitorada, isso vai variar de acordo com a ferramenta, mas também com o tipo de profiling aplicado. Isso pode ser gerenciado com a diminuição do escopo e profundidade da análise, cabendo uma decisão.

Com isso, o code profiler vem se tornando fundamental ao lado de ferramentas de APM, oferecendo mais detalhes diretamente sobre funções e objetos alocados dentro da aplicação.

Há muitos tipos de ferramentas no mercado, variando desde opções open-source até ferramentas focadas em certas linguagens de programação ou em certos problemas.

 

Quando usar code profilers?

Muitos desenvolvedores consideravam os code profilers um pesado trabalho extra para somar às suas atividades. Isso os levava a ver como perda de tempo esse trabalho, que deveria ser delegado à equipe de testes.

Então, se usavam, usavam como ferramentas situacionais. Em bom português, eles começavam a prestar a atenção nelas quando vivenciavam grandes problemas – em muitos casos, já em produção. 

Mas isso mudou, junto com a mudança das soluções e com o surgimento da cultura da busca por problemas no código DURANTE – e não apenas após – os primeiros estágios de desenvolvimento (muito devido ao DevSecOps e outras metodologias). Os resultados desse tipo de postura em termos de redução do número de problemas posteriores falam por si sós.

Com as ferramentas e treinamentos certos, os code profilers permitem que o código seja perfilado de diferentes maneiras, apontando para diferentes tipos de bugs.

Assim, eles têm se tornado parte do processo de desenvolvimento sem ser considerado um fardo para as equipes. 

Logo, o code profiling vem sendo usado quando a equipe considera ter chegado a um nível adequado de estabilidade funcional no código. A chave é não perfilar o código nem cedo demais – para não otimizar algo que ainda vai sofrer muitas modificações – nem tarde demais.

 

O que esperar de um code profiler

Um code profiler nunca vai descobrir todos os problemas que load testes descobrem, mas revela partes do código que potencialmente podem ser fontes de problemas, sobretudo quando a aplicação for estressada. Então ela leva a equipe a lançar um olhar mais cuidadoso para esse código.

Há outros benefícios:

  • Ciclos de desenvolvimento mais curtos
  • Confiabilidade no desempenho da aplicação sob quaisquer circunstâncias
  • Ajustes de anomalias em tempo real
  • Melhoria da experiência do usuário.

 

Code profiling: você pratica?

O code profiling tem ajudado equipes que tem como rotina a proativamente analisar o código que produzem a fim de corrigir e, acima de tudo, produzir um código melhor.

Você tem usado essa ferramenta na sua organização?

Se está buscando ajuda nesse caminho, fale conosco!

Explore conteúdos relacionados:

Security

User and entity behavior analytics (UEBA): como funciona?

Security

SOAR: o que é, como funciona e quando adquirir?