Arquitetura de software · Estudos de caso · 8 min de leitura
Estudo de caso: um serviço de notificações
Mandar milhões de avisos por push, e-mail e SMS sem duplicar, sem incomodar e sem que um provedor lento trave os outros: filas por canal, preferências e limites.
Arraste para o lado para ver o diagrama inteiro.
Requisitos
- Canais: push, e-mail, SMS e avisos dentro do app.
- Prioridades: código de login chega em segundos; resumo semanal pode esperar.
- Sem duplicatas e sem spam: preferências por tipo e canal, horário de silêncio, limite por pessoa.
- Rastreio: enviado, entregue, aberto, falhou — e por quê.
O fluxo
- Serviços publicam eventos de negócio (“pedido enviado”), não “mande um push” — quem decide é o serviço de notificações.
- Ele carrega as preferências e os aparelhos da pessoa, escolhe os canais, monta o texto a partir de modelos traduzidos e aplica limites.
- Cada mensagem vai para a fila do canal (com filas de prioridade separadas), e workers chamam os provedores com retry, backoff e jitter.
- Depois das tentativas, a mensagem vai para uma fila de mortos para análise, sem travar as outras.
Detalhes que fazem diferença
- Deduplicação: chave = evento + pessoa + canal, guardada por algumas horas; o mesmo evento reprocessado não gera outro aviso.
- Agrupamento: 30 curtidas em 5 minutos viram “Ana e mais 29 curtiram”.
- Silêncio e fuso: mensagens não urgentes esperam a manhã no fuso da pessoa.
- Limites do provedor: respeite as cotas de envio (SMS e e-mail têm taxa máxima) e a reputação do domínio de e-mail (SPF, DKIM, DMARC, descadastro em um clique).
- Tokens inválidos: as respostas do FCM/APNs dizem quais apagar.
Em resumo
- Serviços publicam eventos; o serviço de notificações decide.
- Preferências, silêncio e limites antes de enviar.
- Uma fila por canal e por prioridade.
- Deduplicação por evento + pessoa + canal.
- Fila de mortos para falhas finais.
Vantagens e custos
Vantagens
- Um provedor lento não afeta os outros canais.
- Regras de incômodo num lugar só.
- Fácil acrescentar canais (WhatsApp, por exemplo).
Custos e riscos
- Mais um serviço central para operar.
- Atrasos de fila em picos (precisa de prioridade).
- SMS e e-mail têm custo por mensagem.
Perguntar à IA
Monte um prompt pronto sobre Estudo de caso: um serviço de notificações na sua linguagem e no seu caso, e abra num chat gratuito.
O prompt vai para o site que você escolher. Não cole senhas, tokens nem dados reais de clientes. Para Gemini e outros, copie e cole.