DEV Community

Yuri Peixinho
Yuri Peixinho

Posted on

O que são Jobs na Programação?

Introdução

No contexto da programação, um job é simplesmente uma tarefa que precisa ser executada. Um boco de trabalho, com início, meio e fim. A palavra vem do inglês mesmo: job = trabalho, tarefa.

Job vs. Código Comum

A diferença fundamental é que código comum executa junto com quem pediu. Um job executa separado, no seu próprio tempo:

Código comum:
Cliente  Requisição  Servidor processa tudo  Resposta  Cliente

Com jobs:
Cliente  Requisição  Servidor responde imediatamente
                              
                         Job 1: envia email    (depois)
                         Job 2: atualiza estoque (depois)
                         Job 3: gera nota fiscal  (depois)
Enter fullscreen mode Exit fullscreen mode

Ideia Central

Pense no seu computador. Quando você abre o Outlook às 8h da manhã e ele automaticamente verifica novos e-mails, sincroniza o calendário e baixa anexos — cada uma dessas operações é um job. Alguém programou: "toda vez que o programa abrir, execute essas tarefas".

Em software, um job é qualquer operação que você quer executar de forma controlada, separada do fluxo principal da aplicação.

Jobs no dia a dia de sum sistema

Pense em um e-commerce. Quando um cliente finaliza uma compra, várias coisas precisam acontecer:

  • Enviar e-mail de confirmação
  • Atualizar o estoque
  • Notificar o vendedor
  • Gerar nota fiscal
  • Registrar no sistema financeiro

Você poderia fazer tudo isso dentro da requisição HTTP — o cliente clica em "Comprar" e fica esperando enquanto o servidor faz tudo. Mas isso é lento e frágil. Se qualquer etapa falhar, o cliente vê um erro.

A solução é transformar cada uma dessas tarefas em um job: o servidor responde imediatamente "compra realizada!" e delega o restante para ser executado em background, de forma assíncrona.

Anatomia de um Job

Todo job tem três características:

O que fazer — o código que será executado, normalmente um método. Ex: public void EnviarEmailConfirmacao(int pedidoId)

Quando fazer — agora, daqui a 30 minutos, todo dia às 9h:

O que fazer se falhar — tentar de novo? Quantas vezes? Notificar alguém?

Por que persistir Jobs?

Se você simplesmente usar Task.Run(() => EnviarEmail()), o job existe só na memória. Se o servidor reiniciar — por um deploy, uma falha, qualquer motivo — o job desaparece e o e-mail nunca é enviado.

Por isso sistemas de jobs sérios gravam a tarefa em um banco de dados antes de executar. Assim, mesmo que o servidor caia no meio da execução, o job pode ser retomado depois.

É exatamente isso que o Hangfire faz, e agora que você entende o conceito de job, o Hangfire vai fazer muito mais sentido.

Top comments (0)