Central de Monitoramento da Rota Norte
Construa um sistema assíncrono para rastrear entregas em tempo real, com WebSockets, cache Redis, filas de tarefas, observabilidade e segurança avançada de API.
- Nível
- difícil
- Categoria
- Programação
- Tecnologias
- Python, API, Banco de dados, Redis, Message Broker, Docker
O problema da Rota Norte
A transportadora Rota Norte tem uma frota de caminhões espalhada pela região, entregando pedidos de várias empresas parceiras. Hoje, o cliente final só descobre que a entrega atrasou quando liga reclamando. A diretoria quer um painel que mostre o status das entregas em tempo real, aguente picos de tráfego nos horários de pico e continue funcionando mesmo se um serviço interno cair.
Arquitetura distribuída
O sistema deve ser dividido em pelo menos três microsserviços independentes, cada um com sua própria responsabilidade:
- Serviço de Pedidos: recebe e armazena os pedidos das empresas parceiras.
- Serviço de Rastreamento: recebe atualizações de posição dos caminhões e calcula o status da entrega.
- Serviço de Notificação: avisa o cliente final quando o status de uma entrega muda.
Os serviços devem se comunicar entre si de forma distribuída, sem endereços fixos hardcoded, usando um mecanismo de service discovery para se localizarem em tempo de execução.
Tempo real e concorrência
- Toda a lógica de recebimento e processamento de atualizações de posição deve ser escrita com async e await, aproveitando o event loop para lidar com muitas conexões simultâneas sem bloquear.
- O acesso ao banco de dados deve usar drivers assíncronos, evitando que uma consulta lenta trave o processamento de outras requisições.
- O cliente final acompanha a entrega por uma conexão WebSocket, recebendo atualizações de posição e status sem precisar ficar recarregando a página.
Aguentando o horário de pico
Nos horários de maior movimento, o serviço de rastreamento recebe um volume alto de atualizações de posição. Para não sobrecarregar o banco, os dados de localização mais recentes de cada caminhão devem ficar em cache com Redis, reduzindo a latência das consultas de "onde está o caminhão agora" feitas pelo painel.
Tarefas mais pesadas, como gerar o relatório diário de entregas de cada empresa parceira, não devem travar a resposta da API: elas precisam ser jogadas para uma fila de mensagens e processadas em background por um worker separado.
De olho no que acontece em produção
- Todos os serviços devem gerar logs estruturados, no mesmo formato, para facilitar a busca quando algo dá errado.
- Deve haver coleta de métricas básicas de cada serviço, como tempo de resposta e número de entregas processadas por minuto.
- Uma requisição que passa pelos três microsserviços deve poder ser rastreada de ponta a ponta com tracing distribuído, para identificar em qual serviço um atraso está acontecendo.
Protegendo a API
- Endpoints públicos, como o de consulta de status de entrega, devem ter rate limiting para evitar abuso e picos artificiais de tráfego.
- A API deve ser revisada contra os riscos mais comuns do OWASP Top 10, como injeção de dados, exposição excessiva de informações e falhas de autenticação entre os serviços.
Entrega contínua e performance
O projeto deve ter um pipeline de CI/CD que rode os testes automaticamente a cada mudança e faça o deploy dos serviços sem intervenção manual. Antes de considerar o sistema pronto, faça um profiling do serviço de rastreamento sob carga simulada, identifique o ponto mais lento do fluxo de atualização de posição e otimize esse gargalo.
Conceitos técnicos praticados
- Programação assíncrona com async e await: processamento concorrente de atualizações de posição.
- Operações assíncronas em banco de dados: uso de drivers assíncronos entre os serviços.
- Cache com Redis: redução de latência nas consultas de localização mais recentes.
- Processamento assíncrono em background e filas de mensagens: geração de relatórios sem travar a API.
- WebSockets: atualização em tempo real do status de entrega para o cliente.
- Arquitetura de microsserviços e service discovery: comunicação entre Pedidos, Rastreamento e Notificação.
- Observabilidade: logging estruturado, métricas e tracing distribuído em produção.
- Segurança avançada de APIs: rate limiting e mitigação de vulnerabilidades do OWASP Top 10.
- CI/CD: automação de testes e deploy contínuo dos microsserviços.
- Profiling e otimização de performance: identificação de gargalos sob carga.
Para ir além
- Adicionar reprocessamento automático de mensagens que falharam na fila.
- Criar um painel de métricas visual consumindo os dados coletados dos serviços.
- Simular a queda de um dos microsserviços e validar como o sistema se comporta.
Comentários
0Participe da conversa
Faça login com sua conta para deixar dúvidas, sugestões e trocar ideias com outros estudantes.
Nenhum comentário ainda. Seja o primeiro a participar da discussão!