Sistemas distribuídos e comunicação assíncrona.
Entenda por que sistemas distribuídos são difíceis, como o Kafka resolve comunicação assíncrona em escala, e como implementar producers, consumers, retry e DLQ em Go.
Programar para um único processo é jogar xadrez. Programar para um sistema distribuído é jogar xadrez às escuras, com o tabuleiro tremendo, e algumas peças explodindo aleatoriamente.— ABERTURA DO MÓDULO
O que você vai aprender
Sistemas distribuídos não são difíceis demais — eles são diferentes. As regras do mundo de processo único não se aplicam, e tentar forçá-las gera bugs que parecem mágicos: mensagens que chegam fora de ordem, dados inconsistentes por alguns segundos, cobranças duplicadas.
Neste módulo você aprende os conceitos que todo engenheiro backend precisa dominar: comunicação síncrona versus assíncrona, Event-Driven Architecture, os componentes do Kafka (brokers, topics, partições, producers, consumers e consumer groups), idempotência, retry com backoff exponencial e Dead Letter Queue.
O projeto guiado conecta dois serviços via Kafka com retry e DLQ reais, usando a biblioteca kafka-go. Você sai capaz de projetar sistemas que crescem sem virar bola de neve.