This content originally appeared on DEV Community and was authored by Layssa Lima
Há cerca de três meses, participei de um desafio que me deixou bastante empolgada.
Por essa razão resolvi compartilhar como foi o processo de desenvolvimento, as escolhas técnicas que fiz e alguns aprendizados ao longo do caminho.
Aceito sugestões de melhorias.
⚠️ Spoiler: o projeto está apenas no começo, ainda há muito para ser desenvolvido, inicialmente estou compartilhando apenas o que foi feito em um desafio entre 3 e 4 dias
Repositório: Dwitch
O DESAFIO
O objetivo era criar uma aplicação completa:
- Frontend e backend
- Autenticação
- Persistência de dados
- Observabilidade
- Mensageria
Tudo isso em uma arquitetura distribuída, com documentação do projeto.
Ponto de partida
O primeiro passo foi decidir qual aplicação desenvolver. Como eu já tinha interesse em me aprofundar no tema, optei por criar uma aplicação de transmissão ao vivo, mesmo sabendo que o tempo disponível não permitiria implementar todas as funcionalidades reais desse tipo de sistema.
Arquitetura
O passo seguinte foi definir a arquitetura.
Comecei pensando nas funcionalidades que o sistema deveria ter, organizando-as em módulos e alinhando tudo aos requisitos do desafio.
No desenho, temos um banco PostgreSQL centralizando os dados do sistema e quatro módulos principais:
- Auth - autenticação.
- Channels - CRUD de canais.
- User - CRUD de usuários.
- Broadcast - comunicação das transmissões.
Nesse estágio inicial, optei por simular a comunicação em tempo real por meio de mensagens — algo que é bem diferente de uma transmissão ao vivo real, mas que atendia ao escopo e tempo do desafio.
Sobre os módulos
Os módulos foram implementados com Fastify, cuja sintaxe é bastante familiar para quem já trabalhou com Express.
Para mensageria, utilizei RabbitMQ.
Modelagem dos dados
Após visualizar a aplicação e a arquitetura, passei para a modelagem do banco de dados.
- A relação entre usuários e canais
- A relação entre canais e transmissões
- O vínculo das transmissões com seus respectivos logs
Dessa forma, é possível acompanhar o status de cada transmissão e manter um histórico de alterações.
Ferramentas utilizadas nessa etapa
- Diagramas: Draw.io
- APIs: Fastify
- Mensageria: RabbitMQ
- Protocolos: HTTP e WebSocket
💡 Próximos passos: no próximo post, quero detalhar como implementei cada módulo e como configurei a comunicação entre eles.
Se tiverem dúvidas ou sugestões de melhorias, deixem nos comentários!
This content originally appeared on DEV Community and was authored by Layssa Lima

Layssa Lima | Sciencx (2025-08-07T22:33:38+00:00) Construindo uma Aplicação com Comunicação em Tempo Real Usando Fastify, RabbitMQ e Arquitetura Distribuída. Retrieved from https://www.scien.cx/2025/08/07/construindo-uma-aplicacao-com-comunicacao-em-tempo-real-usando-fastify-rabbitmq-e-arquitetura-distribuida/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.