escute o que a sua aplicação fala!... · 2021. 4. 2. · •codando em java e kotlin...

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

Upload: others

Post on 30-Jul-2021

7 views

Category:

Documents


1 download

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