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

Escalando globalmente com TypeScript e JavaScript na Klarna

Escalando globalmente com TypeScript e JavaScript na Klarna

Lucas Santos

July 25, 2023
Tweet

More Decks by Lucas Santos

Other Decks in Programming

Transcript

  1. > agenda.ts export const agenda = new Set<string>([ 'O que

    é a Klarna?', 'Uma noção de escopo', 'Premissas básicas', 'O que eu vou detalhar', 'Código', 'Testes', 'Comunicação entre serviços', 'Tracing', 'Outros pontos', 'Things happen…', 'Refs e surpresa', ]);
  2. em números - ~7000 funcionários - Manter centralização é complicado

    - 25 Países - Muitas regras distintas (especialmente USA) - 18 anos no mercado - Legados são um problema real - em média ~850M de mensagens no Kafka por dia (~10.000/s) - Lags pequenos são significativos - +500 microsserviços
  3. Tópicos O que a gente vai ver - Testes -

    Persistência - Comunicação - Práticas de código O que a gente não vai ver - Segurança - Infraestrutura - Processos - Automação, CI/CD, etc
  4. outros padrões - Middlewares x Handlers - Middleware hell -

    Mutable vs Immutable - Mudança por referência - Variáveis globais
  5. outros padrões - Middlewares x Handlers - Middleware hell -

    Mutable vs Immutable - Mudança por referência - Variáveis globais
  6. Takeaways - Sempre seja assíncrono - Console.log é síncrono -

    Use streams para processar grandes quantidades de dados - Não bloqueie o event loop
  7. Testes unitários - Tenha muitos (muitos mesmo) - Simples e

    fáceis de executar - Não mantenha estados - Mocks/Spies Stubs
  8. Testes de integração - Exigem infra - Podem exigir estados

    - Isolar é mais complicado - Essenciais para o bom funcionamento do app
  9. Outros pontos - Persistência - Normalização: As coisas precisam fazer

    sentido - Migrations: Porque você não vai acessar o DB de produção - URNs: Em múltiplos domínios, é muito difícil saber de onde aquele UUID veio - ORMs: Por favor…
  10. Outros pontos - Logging - Foque em campos úteis -

    Logs são caros, faça bom uso - Sustentação vs Active Development - Manter não é o mesmo de criar - Dados sensíveis: devem ser censurados - Ou criptografados - Indexação e busca: Se for para logar sem index, melhor imprimir - Correlação: adicione IDs de correlação, similares ao trace-id
  11. refs_ - https://lsantos.dev/frontin-23-slides - https://formacaots.com.br - https://lsantos.dev/klarna-careers - https://lsantos.dev/yt-apps-ts -

    https://lsantos.dev/yt-large-systems - https://lsantos.dev/yt-distributed-systems - https://lsantos.dev/talk-global-scale