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.
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.
- API gRPC recebe pedidos
- API autentica via JWT
- Pedido é salvo como
PENDING - Evento é enviado para uma fila
- Workers processam pedidos
- Pedido termina como
COMPLETEDouFAILED
- Cliente chama API gRPC
- JWT é validado
- Pedido é criado no Mongo
- Evento vai para a fila
- Worker consome evento
- Worker tenta lock no pedido
- Processa pedido
- Atualiza status final
- 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
- JWT obrigatório em todas as chamadas gRPC
- Interceptor gRPC
- API deve ser stateless
- Fase 1: Channel
- Fase 2: AWS SQS (+ DLQ)
- ECS Fargate
- Application Load Balancer
- SQS
- MongoDB Atlas (Free)
Infra criada via Terraform.
Obrigatório:
go test -race- Testes de concorrência
- Teste do fluxo completo
- Parar API corretamente
- Finalizar workers
- Não perder mensagens
- 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
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.