Voltar aos projetosEm 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.