Conteúdo original em https://twitter.com/zanfranceschi/status/1743040590751977636
Ei dev,
Eu tenho a solução para sua falta de novos problemas! Yey 🥹
Cola aqui pra resolver esse desafio de RACE CONDITION em um SISTEMA DISTRIBUÍDO de compras.
↓
DISCLAIMER: É um cenário simplificado e hipotético. (O diagrama tá em inglês porque vocês são tudo metido a besta, mas saibam que prefiro em pt_BR 💅).
Acredito que esse desafio seja adequado pra quem já é pleno – talvez os sandy e júnior sofram um pouco pra resolvê-lo.
CENÁRIO: Um conjunto de aplicações com serviços assíncronos de cadastro de cliente e processamento de pagamentos de compras.
However, existe a premissa de que um cliente já esteja persistido no banco do serviço de pagamentos para que os pagamentos sejam processados.
E para que essa premissa seja satisfeita, o serviço de cadastro emite um evento sempre que um cliente for cadastrado. A imagem mostra esse fluxo.
(Obs.: Esse padrão em que serviço de pgto guarda uma referência do cliente se chama "Event-Carried State Transfer" – já falei sobre.)
https://twitter.com/zanfranceschi/status/1511294401603006465
O PROBLEMA:
Só que para novos clientes, às vezes acontece do comando para processar o pagamento ser consumido antes do consumo do evento de cadastro do cliente. Temos aí um cenário de RACE CONDITION! Ebaaa! 🥲
E aí, o pessoal te incumbiu de resolver esse problema.
E pro problema ficar ainda mais problemático (afinal queremos problemas aqui, não é mesmo?), te pediram pra evitar o uso de banco de dados para essa resolução – lhe pediram para que use outras filas (??).
E aí, dev com tempo livre em busca de problemas, como resolve isso?!
Muito obrigado a você que chegou até aqui!!! ♥️
Top comments (0)