Revista iMasters 27 - Agosto

Page 70

70 // DESENVOLVIMENTO

INSTRUMENTAÇÃO DE SERVIÇOS COM MICROMETER, SPRING BOOT E KOTLIN Por Rafael Grisotto, Desenvolvedor backend na Wavy e Lucy Narita, Desenvolvedora na Wavy Sexta-feira à tarde. Depois de um dia de trabalho normal, está chegando a hora de arrumar as coisas e ir embora para casa, quando, pelo canto dos olhos, Enzo avista aquela temida notificação no chat da empresa: “Estamos tendo algum problema na plataforma?”. A pressão chega quase a abaixar e o suor começa a ficar frio. Mais uma mensagem no inbox: “A fila não está conseguindo escoar. Estamos com 100k mensagens e só aumentando”. Sentindo o desespero bater, os dedos correm pelo teclado. Os logs indicam que a aplicação está de pé e consumindo mensagens da fila. “Deve ser algo pontual.”, o coração acalma, “A fila logo vai estar zerada”. Alguns minutos depois, e nada acontece. A fila continua a crescer. A aplicação continua a consumir... E os ícones vermelhos notificando novas mensagens ficam cada vez mais agressivos aos olhos. Tem algo (muito) errado, mas o que será? Vários tails, greps, tops e revisões do código depois, vem a luz no fim do túnel: “O tempo de resposta da minha API está na grandeza de segundos!”. Infelizmente, a real pergunta fica no ar: “Mas por quê?”. A história acima é fictícia, mas para alguns pode ter sido uma experiência real (e não queremos nem falar do estresse envolvido). Diferentemente do que você pode estar imaginando, o tema deste artigo não é como escrever sistemas real-time altamente performáticos e com tempos de resposta baixíssimos, mesmo com um número enorme de eventos e dados trafegados. Em tempos em que “Agile” é mais do que uma buzzword e que o tempo de (re)ação e a eficiência iMasters #27 Agosto 2018

custam dinheiro, saber identificar o problema de forma rápida e precisa é essencial. Por isso é importante oferecer formas de monitoramento e visualização para poder discernir qual parte da sua aplicação precisa de melhorias mais urgentes. Se Enzo tivesse seguido esse princípio, teria tido menos dificuldade em identificar o problema e poderia tê-lo solucionado muito mais rapidamente, diminuindo seu impacto drasticamente. Existem três principais formas de se visualizar uma plataforma: Logs: o que está acontecendo agora? Métricas: dado o que aconteceu, qual a tendência para esse momento? Tracing: em uma plataforma com diversos sistemas ou muita troca de contexto (microservices/async services), o que está acontecendo enquanto eles interagem entre si? Nenhuma delas é menos importante que a outra, mas este artigo procura focar na segunda forma. Coletar e expor métricas significativas de sua aplicação não precisa ser difícil. Há diversos jeitos de se fazer isso atualmente, e queremos apresentar um dos modos como fazemos isso aqui na Movile: utilizando Micrometer e Prometheus em aplicações Spring Boot. A ideia do Spring Boot é você criar aplicações completas com o mínimo ou zero de configuração


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.