Batch o streaming: la scelta che incide di più sull’architettura dei dati
Ogni architettura dei dati deve rispondere, prima di essere progettata, a una domanda fondamentale: con quale frequenza devono aggiornarsi i dati per essere utili? La risposta stabilisce se l’architettura debba essere batch (elaborazione periodica) o streaming (elaborazione continua in tempo reale).
L’elaborazione batch applica le trasformazioni a un insieme di dati accumulati a intervalli definiti: ogni notte, ogni ora, ogni settimana. È semplice, prevedibile ed efficiente nei costi. Per la maggior parte dei report gestionali, della contabilità e delle analisi storiche, il batch è la scelta giusta.
L’elaborazione in streaming tratta ogni evento nel momento in cui si verifica e aggiorna i sistemi a valle con latenze da millisecondi a secondi. È più complessa e costosa, ma ci sono casi d’uso per cui non esiste un’alternativa valida.
Quando il tempo reale è indispensabile
Rilevamento delle frodi: un modello che valuta se una transazione bancaria o un pagamento con carta è fraudolento ha pochi secondi per agire, non ore. Il batch non è adatto a questo caso d’uso.
Prezzi dinamici: in settori come turismo, energia o trasporti, i prezzi ottimali cambiano in funzione della domanda del momento, della disponibilità e delle mosse della concorrenza. Un’informazione che arriva ore dopo non consente più di agire.
Monitoraggio industriale: uno stabilimento che rileva anomalie nei sensori deve reagire prima che il problema diventi un guasto. Un sistema batch che controlla i dati ogni ora rischia di perdere il momento utile per intervenire.
Dashboard operative in tempo reale: i team operativi di call center, logistica o produzione hanno bisogno di una visibilità immediata sullo stato del sistema, non di una fotografia di diverse ore prima.
Apache Kafka come infrastruttura di streaming
Apache Kafka è il sistema di messaggistica distribuita di riferimento per le architetture di dati in tempo reale. Funziona come un bus di eventi che disaccoppia i sistemi che producono i dati da quelli che li consumano, e permette a più applicazioni di elaborare gli stessi eventi in modo indipendente e nell’ordine corretto.
Le caratteristiche che fanno di Kafka la scelta standard nel settore sono l’alta disponibilità e la tolleranza ai guasti, la conservazione configurabile dei messaggi (i consumatori possono rileggere eventi passati), prestazioni molto elevate (milioni di eventi al secondo in cluster ben configurati) e un ecosistema maturo di connettori verso praticamente qualsiasi sistema di dati.
Alternative gestite: Confluent Cloud (Kafka gestito), Amazon Kinesis, Azure Event Hubs e Google Pub/Sub sono alternative cloud che riducono il carico operativo di gestire un proprio cluster Kafka.
Architetture di riferimento per lo streaming
Lambda Architecture: mantiene due livelli paralleli, un batch layer per i dati storici completi e uno speed layer per i dati più recenti, interrogati in modo unificato. Garantisce coerenza, ma comporta la duplicazione della logica di elaborazione.
Kappa Architecture: unifica batch e streaming in un’unica pipeline di streaming e tratta i dati storici come uno stream molto lungo. È più semplice da mantenere, ma più esigente in termini di capacità dello stream.
Streaming moderno con il Lakehouse: le piattaforme Lakehouse attuali (Databricks, Microsoft Fabric) consentono di acquisire gli stream di Kafka direttamente in tabelle Delta Lake con garanzie ACID: l’architettura si semplifica e la separazione tra batch e streaming scompare.
Quando il tempo reale è eccessivo
Non tutto richiede il tempo reale. Introdurre lo streaming dove il batch è sufficiente aggiunge complessità, costi e rischi senza un beneficio reale. Se l’ufficio amministrazione ha bisogno di un report mensile consolidato delle vendite, elaborarlo in tempo reale non porta alcun valore. La decisione deve sempre partire dal caso d’uso di business e dalla latenza effettivamente necessaria, non dalla tecnologia più avanzata disponibile.
Valutiamo i requisiti reali di latenza di ogni caso d’uso prima di proporre un’architettura di streaming, per evitare complessità superflue.
Domande frequenti
Quanto costa un’architettura di streaming rispetto a una batch? Un’architettura di streaming ben progettata può costare diverse volte più di un’equivalente batch, considerando infrastruttura, complessità di sviluppo e manutenzione. Il costo è giustificato solo quando il caso d’uso ha requisiti reali di bassa latenza. La valutazione deve confrontare il costo dell’architettura con il valore di business della latenza ridotta.
Kafka è difficile da gestire? Un cluster Kafka on-premise comporta una complessità operativa significativa: configurazione delle partizioni, replica, conservazione dei dati, monitoraggio del lag dei consumatori. Le versioni gestite nel cloud (Confluent Cloud, MSK di AWS, Event Hubs di Azure) eliminano gran parte di questa complessità a fronte di un costo più alto. Per la maggior parte delle aziende, partire da una soluzione gestita è la scelta corretta.
Si può combinare lo streaming con i modelli di IA esistenti? Sì, ed è uno dei casi d’uso di maggior valore. Un modello di machine learning addestrato offline può fornire previsioni in tempo reale se integrato nella pipeline di streaming: ogni evento (transazione, segnale di un sensore, visita al sito) viene inviato al modello per l’inferenza e il risultato viene ripubblicato sullo stream. Questa architettura è alla base dei sistemi di raccomandazione in tempo reale, del rilevamento delle frodi e degli allarmi predittivi.