Pular para o conteúdo

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.

Eventos → Serviço de notificaçõesPreferências → Serviço de notificações: consultaServiço de notificações → Fila pushServiço de notificações → Fila e-mailServiço de notificações → Fila SMSFila push → ProvedoresFila e-mail → ProvedoresFila SMS → ProvedoresFila SMS → Fila de mortosEventos — pedido enviado…Eventospedido enviado…Serviço de notificações — regras, modelosServiço de notificaçõesregras, modelosPreferências — canais, silêncioPreferênciascanais, silêncioFila pushFila pushFila e-mailFila e-mailFila SMSFila SMSProvedores — FCM, APNs, e-mail, SMSProvedoresFCM, APNs, e-mail, SMSFila de mortos — falhas finaisFila de mortosfalhas finais

Arraste para o lado para ver o diagrama inteiro.

Uma fila por canal isola as falhas: se o provedor de SMS ficar lento, os pushes continuam saindo.

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

  1. Serviços publicam eventos de negócio (“pedido enviado”), não “mande um push” — quem decide é o serviço de notificações.
  2. Ele carrega as preferências e os aparelhos da pessoa, escolhe os canais, monta o texto a partir de modelos traduzidos e aplica limites.
  3. Cada mensagem vai para a fila do canal (com filas de prioridade separadas), e workers chamam os provedores com retry, backoff e jitter.
  4. 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

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.

ChatGPT Claude Perplexity

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.

Referências

Continue aprendendo

Todos os temas de arquitetura de software →