DEV Community

Francisco Zanfranceschi
Francisco Zanfranceschi

Posted on • Updated on

[Desafio] - Sistema de Votação BBB

Conteúdo original nessa thread to twitter.


Esses dias um monte de gente comentou sobre a infra/arquitetura da Globo pra aguentar a porrada das votações do #BBB22.

Se você quiser ter uma ideia NA PRÁTICA de como isso funciona, aceite esse desafio técnico aqui. Dá uma lida aqui :)

cc @sseraphini

🧵👇


A ideia geral é separar o processo em dois:

1 - Receber o voto: é a parte delicada que tem que aceitar as milhares de requisições/segundo.

2 - Computar o voto: é a parte que realmente "salva o seu voto no banco de dados".

Parte 01 - Recepção do Voto


Desafio:

1 – Crie uma API que receba um voto e publique numa fila e rapidamente retorne algo como "solicitação aceita" (vc não sabe se deu tudo certo, né?).

2 – Crie um processo em plano de fundo que leia dessa fila e salve o voto no banco de dados (ou só memória pra praticar).


A sugestão para essa tal de fila é usar o RabbitMQ num container docker pra ficar mais fácil.

$ docker run -p 15672:15672 -p 5672:5672 rabbitmq:3-management

e acesse http://localhost:15672 com usuário e senha guest/guest


Sobre como usar o RabbitMQ (publicar/consumir), use o tutorial 3 – "Publish/Subscribe" do tutorial oficial e escolha sua linguagem preferida.

https://www.rabbitmq.com/getstarted.html

Tutorial 03 RabbitMQ - Pub/Sub

Claro, se vc não tiver familiaridade com filas e rabbitmq, siga os tutoriais desde o início – vale a pena.


Se tiver alguma dúvida, coloca aqui que a gente vai se ajudando. É um exercício muito legal que vai molhar seu pé em sistemas distribuídos.

Claro que é uma versão simplificada e que a Globo não faz exatamente assim – esse desenho é só um hello world da ideia geral.


Se esse assunto te interessa, recomendo fortemente que leia o livro EIP (Enterprise Integration Patterns) do Gregor Hohpe e Bobby Woolf – é um must read pra qualquer um inserido/interessado em integrações via filas. O livro é antigo, mas seus conceitos são atemporais; servem pra tecnologias modernas.

EIP - Enterprise Integration Patterns

Esse livro tem um site com os padrões e explicações breves sobre cada um. É um ótimo lugar para referências rápidas.

Discussion (0)