Backend, APIs e dados · Misto

Filas e jobs em segundo plano

Em uma linha: Tudo que leva mais de um segundo e não é necessário para a resposta ao usuário pertence a uma fila, não à requisição.

O que vai para o segundo plano

Envio de e-mail e notificações, geração de relatórios, processamento de mídia, sincronização com sistemas externos, e qualquer chamada a um serviço cuja disponibilidade você não controla.

O resultado: uma resposta rápida ao usuário e resiliência — quando o serviço externo cai, os jobs esperam em vez de falhar.

Três regras por job

Repetível. Uma execução dupla não cria uma duplicata. Alcance isso com uma chave única por ação.

Pequeno. Um job que roda duas horas é um que não dá para retentar. Divida.

Reportado. Início, fim, falha e número de tentativas.

O que é esquecido

Uma fila de mortos para jobs que falharam repetidamente, com um alerta — senão eles somem silenciosamente. Retry com atraso crescente, para não derrubar um serviço que já está sofrendo. E ordem: se a ordem importa, defina uma chave de partição; senão, não assuma que há.

Indo mais fundo

Monitore três métricas: comprimento da fila, idade do job mais antigo e taxa de falhas. Um comprimento de fila que sobe lentamente ao longo de dias é o sintoma precoce da maioria dos incidentes de carga, e aparece muito antes de um usuário sentir qualquer coisa.