Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Observabilidade no Nubank

Julio Turolla
December 13, 2018

Observabilidade no Nubank

Como monitorar mais de 200 microserviços em produção.

Julio Turolla

December 13, 2018
Tweet

More Decks by Julio Turolla

Other Decks in Technology

Transcript

  1. www.yourdomain.com Agenda •O que é Observabilidade e por que eu

    preciso disso? •Ferramental •Implementando no Nu •Infra do Nu •Instrumentando aplicações •Rollout & Escalabilidade •Resultados
  2. O seu serviço em produção é uma caixa preta que

    recebe e responde requisições web, mensagens ou outros tipos de IO; se comunica com bancos de dados, caches, e third parties. Um bom toolset de observabilidade permite o acesso fácil a detalhes do funcionamento de cada um dos componentes do seu sistema, em diferentes níveis de granularidade e latência e tipos de dados.
  3. www.yourdomain.com Ferramental para Observabilidade Agregador de Logs Métricas em tempo

    real Alertas & OnCall Tracing Distribuído Flamegraphs Resposta à incidentes & Postmortem
  4. Agregador de Logs COMPONENTES DE OBSERVABILIDADE Todas as requisições e

    mensagens trafegadas. Audit Trail. DADOS Alta para queries que envolvem full text search de um período muito grande. LATÊNCIA ALERTING Desencorajado pois o consumo de recursos computacionais para alertar é muito alto (full text search). Splunk queries (grep with steroids and statistics) QUERYING No Nubank Desde 2014 Analisar em detalhe cada operação realizada no sistema, rastrear individualmente um cliente, uma mensagem, uma exception, realizar operações estatísticas e quantificar. Alto volume de dados para análise, latência alta.
  5. Métricas em tempo real COMPONENTES DE OBSERVABILIDADE Métricas numéricas com

    dimensões. DADOS Muito baixa, informação obtida a cada 30s; Queries rápidas para retenção longa. LATÊNCIA Suitable, fácil de definir thresholds e regras. ALERTING PromQL QUERYING v1 (Riemann) Desde 2013 v2 Desde 2018 Permitem criar visualizações, dashboards, e alertas, definir thresholds, tempos de resposta aceitáveis, taxa de erros aceitáveis. Dados dimensionais numéricos, latência baixa.
  6. Alertas & OnCall COMPONENTES DE OBSERVABILIDADE Alertas disparados pelo sistema

    de métricas em tempo real. DADOS < 60s entre o disparo de um alerta e o acionamento de uma engenheira. LATÊNCIA No Nubank desde 2016
 Deployado para todo mundo em 2018 Garantir que quando um problema ocorrer, a engenheira responsável será alertada e estará pronta para iniciar um procedimento de resposta a incidentes.
  7. Distributed Tracing COMPONENTES DE OBSERVABILIDADE 10 Billion Trace Spans each

    day.
 12 Instances Elasticsearch. SIZE Sample de requisições e mensagens. DADOS No Nubank desde Setembro, experimental. Analisar o percurso de uma requisição ou mensagem, desde o momento que ela sai do app, até o momento que todas as operações resultantes dessa sejam concluídas. Dados de amostragem.
  8. Flamegraphs COMPONENTES DE OBSERVABILIDADE Overhead computacional para extrair, nada muito

    crítico :) LATÊNCIA Snapshot de performance da aplicação. DADOS nu k8s dump flamegraph s0 billing --env prod COMO USAR Entender a fundo o funcionamento de um processo, quais métodos estão tomando mais tempo, com lock ou baixa eficiência, usando muita cpu. Dados ad-hoc, solicitados pela engenheira durante debugging.
  9. Incident Response & Postmortem COMPONENTES DE OBSERVABILIDADE As pessoas envolvidas

    na correção do incidente se reúnem no canal #crash, ou pessoalmente para coordenar a resposta. DURANTE O INCIDENTE Uma reunião de Postmortem é agendada para discutir mitigações para que o incidente não volte a ocorrer. APÓS O INCIDENTE Ao identificar um problema, os responsáveis pelo sistema devem estar prontos para implementar uma mitigação e correção do problema, e realizar uma reunião posterior para evitar que o problema se repita e compartilhar informação.
  10. Criada para melhorar a visibilidade sobre todos os sistemas, coletar

    métricas, criar alertas, dashboards e ferramental para aumentar a eficiência de operação da engenharia do Nu. Monitoring Taskforce IMPLEMENTANDO NO NU
  11. Nubank Size Avaliando a dimensão da infraestrutura que precisamos monitorar.

    212 200kk 12kk 50k 5kk 2800 900 0 4 MICROSERVIÇOS REQUISIÇÕES/DIA MÉTRICAS/MIN MENSAGENS/S CLIENTES INSTÂNCIAS DE COMPUTAÇÃO BANCOS DE DADOS MAINFRAMES INSTÂNCIAS WINDOWS
  12. www.yourdomain.com Deve haver recursos computacionais suficientes para atender toda a

    demanda sem comprometer as métricas anteriores. Saturação As operações devem finalizar em tempo aceitável, evitando uma experiência frustrante do ponto de vista do cliente ou do backoffice. Latência Quantas requisições por segundo estamos recebendo? Houve uma degradação por um pico de acesso? Tráfego Cada operação realizada deve ter sucesso na grande maioria dos casos. Taxa de erro acima de um limite pode indicar um problema e deve acionar os engenheiros. Taxa de Erros 1 Ou... Funcionar com (bem) poucos defeitos 2 3 4 Todas métricas de tempo real, logo, vamos implementá-las!
  13. www.yourdomain.com Mas o que é uma métrica? Whitebox Metrics services_http_errors_total{service="billing",

    shard="s0"} 100.0 services_http_requests_total{service="billing", shard="s1"} 13370.0 Identificador (nome da métrica) Dimensões
 (labels) Valor O serviço expõe o que está acontecendo internamente.
  14. www.yourdomain.com Criar mais métricas, instrumentar mais componentes, criar mais alertas;

    você não vai conseguir fazer isso sozinha! Incentive um loop de feedback Nossas aplicações precisa exibir as métricas que estamos buscando, como requisições HTTP com sucesso, com erro, e mensagens consumidas. Instrumentar uma métrica Uma aplicação de monitoramento precisa coletar estas métricas, armazená-las e permitir querying. Infraestrutura de Coleta e Query Com os dados ingeridos, criamos o primeiro alerta de taxa de erros acima do limite. Criar o primeiro alerta 1 Baby Steps... Um serviço por vez, e mudanças culturais. 2 3 4 Rollout do monitoramento foi a parte mais custosa.
  15. Q1 Q2 Q3 Q4 1 3 14 20 1 30

    140 195 Serviços com métricas Rollout do monitoramento foi a parte mais custosa. SERVIÇOS COM INSTRUMENTAÇÃO SQUADS Scalability Issues
  16. UMA DICA Quanto mais cedo você iniciar o monitoramento das

    suas aplicações, melhores serão suas métricas e mais dados estarão disponíveis para negociar com stakeholders aquele refactor que já foi postergado por tempo demais.
 
 Monitorando desde o dia zero, a curva de rollout para métricas e alertas vai ser orgânica e demandar muito menos esforço. Comece a monitorar cedo!
  17. UMA DICA Escolha as ferramentas mais importantes para seu workload,

    log e métricas em geral são as mais utilizadas. Você não precisa de todas essas ferramentas!
  18. UMA DICA Mostre o benefício de um bom monitoramento, e

    ele crescerá organicamente. Desenvolva a plataforma, playbooks e garanta que ela esteja funcionando, mas não é escalável realizar todas as instrumentações você mesmo — ensine as pessoas que monitorar é parte de desenvolver um software. Você não consegue fazer o trabalho sozinho!
  19. Venha trabalhar com a gente! 
 Para trabalhar com sistemas

    e observability, aplique para a vaga de Software Engineer e nos avise no cadastro :) sou.nu/jobs-at-nubank @jturolla