Pular para o conteúdo
{ JT }Jonathan Gamez Tomoyosi
Voltar aos projetos
Em testes

Yma — E-commerce

Loja com backend resiliente: circuit breaker, rate limiting e sanitização

Loja online com front e backend separados. O interesse técnico está no backend: um serviço Fastify tratado como sistema que vai falhar, e não como sistema que espera não falhar.

Tecnologias

  • React
  • TypeScript
  • Vite
  • TanStack Query
  • Fastify
  • Prisma
  • PostgreSQL
  • Zod
  • Opossum
  • Pino
  • Vitest

Contexto

Uma loja depende de serviços que não são seus — pagamento, mídia, entrega. Cada um deles é um ponto onde a loja inteira pode parar por culpa de outra pessoa.

Desafio

  • Falha ou lentidão de serviço externo se propagando até o cliente final.
  • Entrada de usuário chegando ao banco e ao HTML sem tratamento.
  • Necessidade de diagnosticar problema em produção sem log estruturado.

Solução

  • Circuit breaker por dependência externa, com estado aberto interrompendo a cascata de timeouts.
  • Validação por schema na fronteira e sanitização antes da persistência.
  • Rate limiting por rota e cabeçalhos de segurança aplicados globalmente.
  • Logging estruturado, permitindo correlacionar requisição e falha.

Resultado

  • Indisponibilidade de terceiro deixa de significar indisponibilidade da loja.
  • Backend com cobertura de testes automatizada.

Destaques

  • Circuit breaker em chamadas a serviços externos, isolando falha de terceiro para que não derrube a loja.
  • Rate limiting, cabeçalhos de segurança e sanitização de HTML na entrada.
  • Retry com backoff no cliente HTTP, para falha transitória de rede não virar erro para o usuário.
  • Validação de CPF/CNPJ, logging estruturado e rotinas agendadas.
  • Suíte de testes com cobertura no backend e testes de componente no front.