La scelta tra un’integrazione in tempo reale o batch non è una decisione puramente tecnica. Determina cosa accade quando un ordine cambia stato, le scorte si esauriscono, una fattura viene corretta o un dato cliente arriva in ritardo a un altro sistema. L’errore più comune è presumere che il tempo reale sia sempre migliore. In realtà, aggiunge dipendenze, punti di guasto e requisiti operativi che risultano giustificati solo quando il costo dell’attesa supera tale complessità.
L’alternativa non consiste nemmeno nell’eseguire un’esportazione notturna senza una progettazione adeguata. Un processo batch può essere sicuro, efficiente e sufficiente, ma necessita di finestre di aggiornamento esplicite, controlli di integrità e meccanismi di ripristino. La scelta corretta parte dal caso d’uso: quale dato viene trasferito, chi agisce su di esso, quale danno produce un ritardo e cosa succede se il messaggio arriva due volte oppure non arriva.
La domanda decisiva: cosa accade se il dato arriva tardi, duplicato o non arriva

Prima di discutere API, webhook, code o frequenza di esecuzione, descrivete l’effetto di un guasto in termini di business e operatività. Un dato non è critico perché appartiene a un CRM, a un ERP o a un ecommerce; lo è per la decisione o l’azione che rende possibile.
- Arriva in ritardo: definite il ritardo massimo accettabile. Possono essere secondi per bloccare una transazione, minuti per avvisare un team oppure ore per consolidare i report.
- Arriva duplicato: valutate se il destinatario potrebbe creare due ordini, ripetere un addebito, inviare comunicazioni duplicate o semplicemente aggiornare lo stesso record.
- Non arriva: individuate se esiste una procedura manuale, una consultazione alternativa o una riconciliazione successiva che eviti la perdita di business.
- Arriva con dati obsoleti: definite quale sistema ha autorità su ciascun campo e come vengono risolti i conflitti tra aggiornamenti.
È utile classificare ogni flusso in base alla finalità. Un’integrazione di consultazione mostra informazioni per guidare una persona; una di decisione alimenta regole, segmentazioni o priorità; una di esecuzione crea un’azione irreversibile, come riservare scorte o emettere una fattura; una di comunicazione attiva messaggi rivolti a clienti o team. Quelle di esecuzione richiedono di norma maggiore immediatezza e protezione dai duplicati. Le integrazioni di consultazione o analitiche ammettono normalmente un’elaborazione differita.
Il tempo reale è giustificato da una conseguenza concreta del ritardo, non dall’aspettativa che tutti i sistemi riflettano sempre gli stessi dati.
Quando il tempo reale è giustificato e cosa richiede
Il modello in tempo reale è ragionevole quando un sistema deve reagire subito affinché un altro possa completare correttamente un’operazione. Per esempio, una verifica della disponibilità prima di confermare un ordine, il cambio di stato che abilita una spedizione o un avviso operativo che evita un problema più grave.
Esiste una differenza importante tra “tempo reale” e “veloce”. Una chiamata sincrona può rispondere durante l’interazione dell’utente, ma blocca anche il processo se il sistema remoto non è disponibile. Un evento asincrono emesso quando avviene una modifica disaccoppia il mittente, sebbene il consumatore possa elaborarlo alcuni secondi dopo. Entrambi i modelli possono soddisfare un’esigenza di bassa latenza, ma presentano rischi diversi.
Segnali che il tempo reale apporta valore
- Un’attesa causa una vendita mancata, un’operazione non valida o un’esposizione operativa immediata.
- Il dato partecipa a una regola di autorizzazione, prenotazione, assegnazione o prevenzione delle frodi.
- Esiste un responsabile chiaro per gestire gli incidenti fuori orario se il flusso è critico.
- I sistemi possono sostenere tentativi ripetuti, limiti di consumo e picchi di domanda senza bloccare processi essenziali.
- Il costo per mantenere osservabilità e ripristino è inferiore al costo di un ritardo.
L’adozione di questo approccio implica requisiti non negoziabili: timeout, tentativi ripetuti con attese progressive, una coda o un meccanismo equivalente per i guasti transitori, monitoraggio degli errori e avvisi azionabili. Richiede inoltre di definire cosa fa l’applicazione quando la dipendenza non risponde. La risposta non può limitarsi a mostrare un errore tecnico: può trattenere l’operazione, consentirla in attesa di revisione, salvare una richiesta in sospeso o applicare una regola temporanea.
Il rischio principale consiste nel costruire una lunga catena sincrona: l’ecommerce consulta l’inventario, l’inventario consulta l’ERP e l’ERP dipende da un altro servizio. Ogni collegamento aumenta la latenza e la probabilità di indisponibilità. Per ridurre il rischio, limitate le dipendenze online alle informazioni indispensabili ed elaborate il resto in modo asincrono.
Quando i processi batch sono più sicuri ed efficienti
Un processo batch raccoglie le modifiche e le trasferisce secondo una cadenza definita: ogni ora, più volte al giorno o alla chiusura di una finestra operativa. È un’opzione adeguata quando il destinatario non deve agire immediatamente e può lavorare con una fotografia dei dati che presenta un certo ritardo.
Questo modello si adatta spesso bene alla sincronizzazione di cataloghi, ai report, al consolidamento finanziario, all’aggiornamento dei segmenti, alle importazioni storiche o allo scambio di grandi volumi. Consente di controllare il carico su sistemi con capacità limitata, eseguire validazioni prima di pubblicare i dati e concentrare la supervisione in finestre note.
Segnali che un batch è sufficiente
- L’utente o il processo destinatario può operare con dati vecchi di diverse ore senza conseguenze rilevanti.
- Il volume è elevato e una trasmissione individuale per ogni modifica genererebbe un carico inutile.
- Gli aggiornamenti sono utilizzati per analisi, pianificazione o attività interne non urgenti.
- È necessario validare, arricchire o raggruppare le informazioni prima di renderle disponibili.
- Il team dispone di una finestra chiara per esaminare le eccezioni e rielaborare i dati.
Il rischio tipico non è la latenza, bensì una falsa sensazione di controllo. Un batch progettato male può sovrascrivere modifiche recenti, omettere record per un timestamp errato o fallire a metà esecuzione senza chiarire quale parte sia stata applicata. Evitate quindi di basare l’estrazione unicamente su “modificato nell’ultima ora” se orologi, fusi orari o tentativi ripetuti non sono controllati. Quando possibile, utilizzate cursori persistenti, intervalli sovrapposti con deduplicazione o registri delle modifiche.
Inoltre, ogni esecuzione deve produrre un risultato verificabile: quanti record sono stati letti, creati, aggiornati, rifiutati o lasciati in sospeso. Se questi conteggi non possono essere confrontati con l’origine, la riconciliazione sarà lenta quando emergerà una discrepanza.
Un modello decisionale con cinque variabili pratiche
Per ogni flusso, valutate queste variabili come basse, medie o alte. La combinazione permette di evitare decisioni guidate da preferenze tecnologiche.
- Tolleranza al ritardo: quanto tempo può trascorrere prima che il dato perda utilità? Se si tratta di secondi o minuti e riguarda un’esecuzione, favorisce un evento immediato o una consultazione online.
- Volume e variabilità: quante modifiche avvengono ed esistono picchi? Un flusso massivo e prevedibile beneficia spesso dei batch; uno con pochi eventi critici può essere elaborato subito.
- Dipendenza operativa: il sistema mittente deve attendere il destinatario per proseguire? Quanto maggiore è la dipendenza, tanto più è necessario disaccoppiare mediante eventi ed elaborazione asincrona.
- Reversibilità: il risultato può essere corretto senza un impatto rilevante? Se un’azione è irreversibile o costosa da annullare, date priorità a validazione, idempotenza e tracciabilità, anche se la latenza aumenta.
- Costo del guasto: includete perdita di ricavi, mancato rispetto dei processi, carico manuale e fiducia del cliente. Un costo elevato richiede controlli migliori, non necessariamente una chiamata sincrona.
Una regola utile è questa: se l’urgenza è elevata ma lo è anche la dipendenza, usate un evento immediato ed elaborate in modo asincrono. In questo modo la modifica viene registrata senza obbligare il sistema di origine a dipendere dalla disponibilità istantanea della destinazione. Se l’urgenza è bassa e il volume alto, un batch con riconciliazione è generalmente l’opzione più semplice e robusta.
Modelli ibridi per bilanciare rapidità e controllo
Molte integrazioni mature combinano entrambi gli approcci. L’obiettivo non è scegliere un’unica etichetta, ma assegnare il modello adeguato a ogni parte del flusso.
- Evento immediato ed elaborazione differita: alla creazione di un ordine viene pubblicato un evento; i sistemi secondari lo consumano da una coda senza bloccare la conferma.
- Consultazione immediata e replica batch: l’applicazione consulta la fonte autorevole per una decisione critica, mantenendo al tempo stesso una copia locale aggiornata per ricerche e analisi.
- Batch frequente più riconciliazione: le modifiche vengono sincronizzate a intervalli regolari e viene eseguito un controllo giornaliero per rilevare assenze, differenze di stato o errori parziali.
- Aggiornamento urgente per eccezione: il catalogo viene trasferito in batch, ma una variazione rilevante della disponibilità genera un aggiornamento prioritario.
Nelle scorte, per esempio, non tutti i dati richiedono la stessa cadenza. La prenotazione associata a un acquisto può richiedere una conferma immediata; l’aggiornamento di descrizioni o attributi di prodotto può attendere. Nella fatturazione, l’emissione può richiedere regole e validazioni rigorose, mentre l’esportazione per l’analisi finanziaria può essere eseguita in una finestra programmata. Nei dati dei clienti, una revoca delle comunicazioni deve propagarsi con priorità se evita invii indesiderati, mentre il consolidamento dei campi di profilo può essere differito.
Controlli comuni e ripristino in caso di incidenti
Qualunque sia il modello, l’affidabilità dipende da controlli espliciti. Ogni entità deve avere un identificatore stabile e ogni operazione un identificatore di messaggio o richiesta. Il destinatario deve applicare l’idempotenza: elaborare due volte la stessa istruzione deve produrre lo stesso risultato che elaborarla una sola volta.
- Definite il sistema di riferimento per ogni entità e campo, per evitare conflitti silenziosi.
- Conservate gli stati di elaborazione: ricevuto, validato, applicato, rifiutato e in attesa di nuovo tentativo.
- Registrate origine, destinazione, data, versione dello schema e motivo dell’errore per ogni eccezione.
- Separate gli errori transitori, come un’interruzione temporanea, dagli errori permanenti, come un dato non valido.
- Stabilite una coda di messaggi non elaborati o un meccanismo di revisione per non perdere elementi dopo l’esaurimento dei tentativi.
- Progettate modifiche di schema compatibili durante una transizione e avvisate prima di rimuovere campi o alterarne il significato.
Gli avvisi devono indicare un’azione concreta: accumulo di elementi in sospeso, età massima senza elaborazione, tasso di rifiuti o differenza tra i conteggi di origine e destinazione. Un avviso per ogni singolo errore genera rumore; un avviso relativo a un deterioramento persistente permette di definire le priorità.
Checklist per concordare la decisione prima di sviluppare

- Descrivete l’azione di business che dipende dal dato e il ritardo massimo accettabile.
- Documentate cosa accade in caso di ritardo, duplicato, assenza e conflitto di versioni.
- Identificate il sistema di riferimento e gli identificatori condivisi.
- Stimate volume medio, picchi e limiti dell’origine e della destinazione.
- Decidete se il mittente può proseguire quando il destinatario non è disponibile.
- Definite tentativi ripetuti, idempotenza, gestione delle eccezioni e riconciliazione.
- Assegnate responsabili del monitoraggio e una procedura di ripristino.
- Testate interruzioni, reinvii, esecuzione parziale e modifiche di schema prima di attivare il flusso.
La decisione più solida non punta alla sincronizzazione istantanea in tutti i sistemi. Punta a far arrivare ogni dato quando deve arrivare, con un livello di controllo proporzionato al suo impatto e con un ripristino prevedibile quando l’operatività reale si discosta dallo scenario ideale.
