Progettare un sistema di job in background con code e worker

Progetta code e worker per attività asincrone: scelta tecnologica, job idempotenti, retry per tipo di errore, priorità, limiti di concorrenza, pattern outbox e monitoraggio. Pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Include 4 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.

Avanzato · Testo · In attesa di revisione editoriale

Prompt

Agisci come architetto software esperto di elaborazione asincrona e sistemi di code.

Voglio togliere dalle richieste web il lavoro pesante o lento della mia applicazione.
- Attività da spostare in background: {{attivita}}
- Volumi e picchi previsti: {{volume}}
- Stack attuale: {{stack}}
- Infrastruttura e vincoli: {{infrastruttura}}

Consegna:
1. Una classificazione di ogni attività: urgenza, durata tipica, se chiama servizi esterni, se può essere eseguita due volte senza effetti collaterali e cosa succede se va persa.
2. Opzioni tecnologiche (coda nel database, Redis o un message broker) con pro, contro e costo operativo nel mio caso, senza cifre di prestazioni inventate. Una raccomandazione motivata.
3. Design dei job: payload minimo (id, non oggetti completi), idempotenza tramite chiavi o controlli di stato, timeout e versionamento del formato dei messaggi.
4. Una politica di retry per tipo di errore (transitorio, rate limit di terzi, dati errati, bug), backoff con jitter e coda dei messaggi falliti con una procedura per esaminarli e rielaborarli.
5. Code separate e priorità, concorrenza per coda e limiti di frequenza per le API esterne.
6. Consistenza tra database e coda: pattern outbox o accodamento dopo il commit, e perché non accodare dentro una transazione aperta.
7. Attività pianificate: come evitare esecuzioni doppie con più worker.
8. Rilasci e spegnimento ordinato: cosa succede ai job in corso.
9. Monitoraggio: metriche (profondità della coda, età del job più vecchio, tasso di errori, durata), alert e dashboard.
10. Un piano di migrazione a fasi dalla situazione attuale.

Vincoli:
- Se mancano informazioni su volumi, tolleranza ai ritardi o infrastruttura, chiedimele prima o segna [DA COMPLETARE].
- Preferisci l’opzione più semplice che soddisfa i requisiti e spiega quando converrebbe cambiare.
- Includi un diagramma testuale dell’intero flusso.

Come usarlo

  1. Elenca le attività lente di oggi e quanto durano dentro la richiesta.
  2. Indica quale infrastruttura puoi davvero gestire (per esempio se hai già Redis o solo un database).
  3. Sposta prima una sola attività, aggiungi le metriche e poi migra il resto.

Esempio d'uso

Attività: invio email, generazione fatture PDF, sincronizzazione ordini con l’ERP · 20.000 job al giorno con picchi durante i saldi · Stack: Laravel con MySQL · Un server, Redis disponibile.

Esempio di risultato

1. Classificazione delle attività

AttivitàUrgenzaDurata tipicaServizio esternoRipetibile?Se si perde…
Email transazionaleAlta (secondi)BreveSì (SMTP/API)Non senza chiave di idempotenzaIl cliente non riceve la conferma
Fattura PDFMedia (minuti)Media, pesante sulla CPUNoSì, se sovrascrive lo stesso fileSi rigenera
Sync ERPMediaVariabileSì, con rate limitSolo verificando lo statoOrdini disallineati

2. Raccomandazione

Code di Laravel su Redis + Horizon. Redis c’è già, non aggiunge componenti da gestire e Horizon offre dashboard e retry senza configurazioni extra. Un broker dedicato varrebbe la pena solo con più consumer indipendenti o garanzie di consegna più rigide.

5. Code e concorrenza

  • emails — priorità alta, più worker.
  • fatture — pochi worker per non saturare la CPU dell’unico server.
  • erp — 1–2 worker e RateLimited in base al limite dell’ERP → [DA COMPLETARE].

Diagramma

Request → DB::transaction → outbox / afterCommit → Redis
        → Horizon (emails | fatture | erp) → retry con backoff → failed_jobs

Con un team di due persone senza reperibilità, gli alert vanno in un canale controllato in orario d’ufficio, tranne «coda email ferma», che merita una notifica immediata…

Dati chiave

Categoria
Programmazione e sviluppo · Architettura software
Tipo di output
Testo
Livello
Avanzato
Pensato per
ChatGPT, Claude, Gemini e Microsoft Copilot
Verificato in
In attesa di verifica editoriale
Variabili
Attività in background, Volumi e picchi, Stack attuale e Infrastruttura e vincoli
Lingua
Italiano
Prezzo
Gratuito, senza registrazione
Aggiornato
07/11/2026

Domande frequenti

Cos’è il pattern outbox e perché è consigliato?

Si scrive il messaggio in una tabella nella stessa transazione dei dati di business e lo si pubblica dopo. Così non si accoda un job per qualcosa che non è stato salvato, né si salva qualcosa senza il suo job.

Basta una coda nel database?

Per volumi moderati di solito sì, e non aggiunge infrastruttura. Quando la coda entra in competizione con le query dell’applicazione o serve molta concorrenza, conviene passare a Redis o a un broker.

A cosa serve questo prompt?

Progetta code e worker per attività asincrone: scelta tecnologica, job idempotenti, retry per tipo di errore, priorità, limiti di concorrenza, pattern outbox e monitoraggio.

Con quali strumenti di IA funziona?

È pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.

Come personalizzo il prompt?

Clicca su «Personalizza» e compila le variabili (Attività in background, Volumi e picchi, Stack attuale e Infrastruttura e vincoli). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.

Serve esperienza per usarlo?

È di livello avanzato: è pensato per persone con esperienza nell'argomento, in grado di valutare e regolare il risultato.

Questo prompt è gratuito?

Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.

Posso fidarmi dell'output dell'IA?

Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.

Prompt correlati