Skip to content

jalvess021/orderFlawless

Repository files navigation

OrderFlawless

PROJETO PESSOAL de sistema de processamento assíncrono de pedidos, focado em concorrência, controle de carga, mensageria e consistência de estado sob alto volume.


🎯 Propósito

Este projeto existe para treinar:

  • Concorrência e paralelismo em Go
  • Evitar data race e race condition
  • Processamento assíncrono (fila + workers)
  • gRPC + JWT
  • MongoDB como fonte da verdade
  • Mensageria (local e AWS SQS)
  • Cloud (AWS) + Terraform

Não é CRUD. Não é síncrono.


🧩 Escopo do Sistema

  • API gRPC recebe pedidos
  • API autentica via JWT
  • Pedido é salvo como PENDING
  • Evento é enviado para uma fila
  • Workers processam pedidos
  • Pedido termina como COMPLETED ou FAILED

🔄 Fluxo Básico

  1. Cliente chama API gRPC
  2. JWT é validado
  3. Pedido é criado no Mongo
  4. Evento vai para a fila
  5. Worker consome evento
  6. Worker tenta lock no pedido
  7. Processa pedido
  8. Atualiza status final

🧵 Regras de Concorrência

  • Nenhum pedido pode ser processado duas vezes
  • Lock é feito no banco (não em memória)
  • Worker pool com limite fixo
  • Nenhuma goroutine sem ciclo de vida
  • Uso obrigatório de context.Context

🔐 Segurança

  • JWT obrigatório em todas as chamadas gRPC
  • Interceptor gRPC
  • API deve ser stateless

📨 Mensageria

  • Fase 1: Channel
  • Fase 2: AWS SQS (+ DLQ)

☁️ Cloud (AWS)

  • ECS Fargate
  • Application Load Balancer
  • SQS
  • MongoDB Atlas (Free)

Infra criada via Terraform.


🧪 Qualidade

Obrigatório:

  • go test -race
  • Testes de concorrência
  • Teste do fluxo completo

🛑 Shutdown

  • Parar API corretamente
  • Finalizar workers
  • Não perder mensagens

✅ Checklist de Desenvolvimento

  • gRPC API funcionando
  • JWT interceptor
  • Mongo persistindo pedidos
  • Fila funcionando
  • Worker pool implementado
  • Lock seguro no processamento
  • Testes com race detector
  • Terraform sobe a infra

📌 Lembrete Importante

Se surgir dúvida, sempre pergunte:

“Isso respeita o processamento assíncrono
e evita concorrência incorreta?”

Se a resposta for não, pare e ajuste.

About

Sistema de processamento assíncrono de pedidos, focado em concorrência, controle de carga, mensageria e consistência de estado sob alto volume.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors