Top Banner
Escute o que a sua aplicação fala! Rômulo Farias romulets.github.io
58

Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Jul 30, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Escute o que a sua aplicação fala!

Rômulo Fariasromulets.github.io

Page 2: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Quem sou eu?

Programador, 8+ anos

Curitiboca

Esporte, música, viagens

Page 3: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Onde estou?

Programando para enviar entre

1 e 4 milhões de notificações todos os

dias no maior e-commerce da Benelux!

Page 4: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Onde estou?

• Codando em Java e Kotlin

• Armazenando em PostgreSQL• Rondando no Kubernetes

• Observando com Prometheus, Grafana and Kibana• E outros recursos do Google Cloud

Page 5: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Heh? “escutar o que a sua aplicação fala”?

Page 6: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que é “escutar o que a sua aplicação fala”?

Coletar, processar, agregar eapresentar dados em tempo real

sobre seu sistema

Page 7: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que é “escutar o que a sua aplicação fala”?

• Quantidade de acessos

• Quais acessos

• Taxa de erros

• Uso de CPU

• Tempo de processamento

• E por aí vai!

Page 8: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que é “escutar o que a sua aplicação fala”?

Monitorar

Page 9: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá, e por que quero monitorar? Tá funcionando ué.

Page 10: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

E por que eu quero monitorar?

Para confirmar que você está entregando o melhor

para o consumidor final

Page 11: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

E por que eu quero monitorar?

Para alertar o time de que a aplicação não está funcionando

bemNinguém deve ser pago para assistir

tela. Coloque tecnologia para trabalhar!

Page 12: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Se não processarmos nenhuma

mensagem (0 mensagens) em

10 minutos, e-mail para o time!

Page 13: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

E por que eu quero monitorar?

Para identificar sintomas e causas de problemas

Seu sistema está respondendo em 5

segundos (sintoma). Qual a causa?

Page 14: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

E por que eu quero monitorar?

Para construir dashboards que respondem rápidamente questões

sobre a saúde da sua aplicaçãoE é bonito de ver!

Page 15: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

E por que eu quero monitorar?

Para analisar padrõese tendências ao longo

do tempo

Page 16: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Claramente temos um padrão diário, se

algo foge disso – sei que algo incomum

aconteceu

Page 17: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

E por que eu quero monitorar?

Para comparar períodos e experimentosQual foi o impacto no uso do meus

sitema depois de entregar a funcionalidade X?

Page 18: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Recentemente arrumei um erro no

nosso processamento e a taxa de erro

caiu para 0! Posso provar com dados!

Page 19: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

E por que eu quero monitorar?

Para aprender sobre falhas acontecidas

Ao entender os gráficos plotados

durante uma falha é mais fácil de

compreender o problema

Page 20: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Que massa! Vou começar a monitorar!

Page 21: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Mas o que monitorar?

Page 22: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

Depende do contexto.Processo interativo e incremental

Page 23: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

O Livro SRE recomenda“Os 4 Sinais de Ouro”

[Site Reliability Engineering: How Google Runs Production Systems, chapter 6]

Page 24: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

1. LatênciaQuanto tempo seu sistema

leva para processar algo.

Page 25: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

1. LatênciaDemonstra como o sistema lida

com a carga atualPossibilidade de comparar o desempenho entre períodos

Page 26: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

1. LatênciaDiferencie a latência por tipos de

resposta (sucesso e falhas)Falhas geralmente possuem tempo de processamento diferentes de

sucesso.

Falhas longas são piores que falhas rápidas

Page 27: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

2. TráfegoA carga que seu sistema

está recebendo

Page 28: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

2. TráfegoDemonstra qual o cenário

que seu sistema está sendo

submetido

Page 29: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

3. ErrosA quantidade de erros

de seu sistema.

Erro, problema, exceção, HTTP 500,

HTTP 200 { erro: true }

Page 30: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

3. ErrosErros não deveriam acontecer.

Erro? Ação necessária!

Page 31: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

4. SaturaçãoO quão “cheio” o seu sistema

está. CPU, RAM, I/O, Thread

etc.

Page 32: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

4. SaturaçãoAjuda a entender fatores

“externos” à aplicação, e.g.

Garbage Colector

Page 33: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

E eu tenho um 5o Sinal de Ouro

pessoal!

Page 34: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

5. Latência das DependênciasTempo que depências levam

para responder, por sucesso e

falhas

Page 35: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

5. Latência das DependênciasAjuda a entender onde está

problema

Page 36: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

O que monitorar?

E seja crítico! Leve seu contexto em

consideração.

Page 37: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Page 38: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Eu, como desenvolvedor, não sou reponsável pela infrastrutura, mas

pelas métricas que exponho e os

alertas que crio

Page 39: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Eu utilizo Prometheus para métricas. Grafana para criar dashboards

Page 40: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Tento utilizar o máximo de métricas disponibilizadas pelas ferramentas

que uso

Page 41: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Exponho em nível de aplicação utilizando a biblioteca Micrometer

(micrometer.io)

Page 42: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

___

Page 43: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Utilizo muito histogramas, evito gráficos que mostram apenas o

estado atual

Algo estranho pode ter acontecido 1 hora atrás e o seu dashboard

não irá te mostrar.

Page 44: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação
Page 45: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Procuro monitorar o “tail” da métrica. Gráficos baseados em média

enganam

1 minuto, 1k requisições.

900req - 100ms

100req - 5000ms

900𝑟𝑒𝑞 ∗ 100𝑚𝑠 + ( 100𝑟𝑒𝑞 ∗ 5000𝑚𝑠)1000𝑟𝑒𝑞

= 590𝑚𝑠

Page 46: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação
Page 47: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Monitoramento faz parte do processo de desenvolvimento (DoD).

Page 48: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Meus alertas são versionados

Page 49: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação
Page 50: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Mantenho meus dashboards e regras de alerta simples.

Um dashboard tem que responder perguntas, e não criar

Page 51: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Tá e na vida real, como que monitoro?

Cuido de meus alertas de forma crítica. Falsos Alertas podem ser tão

prejudiciais quanto a falta de

monitoramento e alertas

Page 52: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Isso é o que eu faço. Adapte para sua realidade!

Page 53: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Mais sobre o assunto?

Page 54: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Foco: colocar aplicações de

qualidade em produção

Mais sobre o assuto?

sre.google/books

Page 55: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Mais sobre o assuto?

Busque tecnologias do mercado. Como Prometheus, DataDog, New Relic entre

outros

Page 56: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Discuta com seu time!

Mais sobre o assuto?

Page 57: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Curtiu minha stack e o que estou mostrando? Chega pra ver mais de perto!

careers.bol.com

Page 58: Escute o que a sua aplicação fala!... · 2021. 4. 2. · •Codando em Java e Kotlin •Armazenando em PostgreSQL •Rondando no Kubernetes •Observando com Prometheus, ... Ação

Muito obrigado, e espero poder ter contribuido de alguma forma!romulets.github.ioTwitter: @romulets