Panoramica
Il data streaming è un flusso continuo di informazioni in tempo reale e costituisce la base del modello di software per l'architettura guidata dagli eventi. Viene usato nelle applicazioni moderne per l'elaborazione, lo storage e l'analisi dei dati.
Possiamo immaginare il data streaming come un log cumulativo di modifiche o eventi verificatisi in un insieme di dati, che in genere cambia a un ritmo molto sostenuto.
Gli enormi insiemi di dati in continua evoluzione che possono fare da sorgente per il data streaming sono i più disparati: transazioni finanziarie, dati dei sensori Internet of Things (IoT), operazioni logistiche, vendita al dettaglio, monitoraggio dei pazienti ospedalieri, ecc. Paragonabile a un sistema di messaggistica di ultima generazione, il data streaming è adatto a situazioni che richiedono risposte agli eventi in tempo reale.
Un esempio di data streaming sono i dati evento che sono alla base delle architetture guidate dagli eventi. Le architetture guidate dagli eventi radunano microservizi a basso accoppiamento per lo sviluppo agile.
L'importanza del data streaming
Gli utenti che utilizzano le applicazioni si aspettano esperienze digitali in tempo reale. Le app che consumano ed elaborano i dati in streaming aumentano il livello di prestazioni e migliorano la soddisfazione dei clienti.
In passato le applicazioni che necessitavano di risposte agli eventi in tempo reale si basavano su database e sistemi di elaborazione dei messaggi. Tuttavia, quei sistemi non sono più in grado di gestire le elevate quantità di dati generati oggigiorno. Ad esempio, i sistemi tradizionali basati sulle richieste faticano a reagire velocemente alle richieste di dati in continua evoluzione provenienti da più sorgenti.
In un modello di event streaming, gli eventi vengono registrati in un log invece di essere archiviati in un database. I consumer eventi possono leggere qualsiasi parte del flusso e accedervi in qualunque momento.
Questa tipologia di elaborazione può essere utilizzata per rilevare modelli significativi nei flussi. L'elaborazione di flussi di eventi usa una piattaforma di flussi di dati per inserire gli eventi ed elaborarne o trasformarne il flusso.
Quali sono gli scenari di utilizzo più diffusi per il data streaming?
Possiamo equiparare il data streaming alle applicazioni in tempo reale. Di seguito alcuni degli scenari di utilizzo più diffusi:
- Esperienze digitali che si basano sull'accesso immediato alle informazioni.
- Applicazioni basate su microservizi che supportano lo sviluppo applicativo agile.
- Scenari di streaming che modernizzano le applicazioni basate sul database, precedentemente basate sull'elaborazione batch.
- Analisi in tempo reale, soprattutto quelle che attingono i dati da più sorgenti.
- Edge computing che raggruppa i dati dei vari dispositivi e sistemi.
Gli scenari di utilizzo più diffusi per il data streaming includono la app relative a messaggistica, geolocalizzazione, operazioni di borsa, rilevamento di frodi, gestione dell'inventario, analisi di marketing, monitoraggio dei sistemi IT e i dati per l'Industrial Internet of Things.
Il funzionamento di Apache Kafka con il data streaming
Apache Kafka, una piattaforma di messaggistica distribuita e open source, è uno degli strumenti più richiesti dalle aziende che desiderano lavorare con grandi quantità di dati in streaming in tempo reale.
Gli sviluppatori software sfruttano Kafka per creare pipeline di dati e applicazioni di data streaming. Grazie a Kafka le applicazioni sono in grado di:
- Pubblicare e sottoscrivere i flussi di record.
- Archiviare i flussi di record.
- Elaborare i record in tempo reale.
La piattaforma Apache Kafka è progettata per gestire lo streaming dei dati garantendo velocità, scalabilità orizzontale e tolleranza di errore. La sua capacità di limitare al minimo il ricorso a integrazioni point to point per la condivisione di dati in determinate applicazioni riduce la latenza a millisecondi. Gli utenti possono quindi usufruire dei dati più velocemente; un aspetto utile in tutti quei contesti in cui i dati devono essere disponibili in tempo reale, ad esempio i processi IT e l'e-commerce.
Riuscendo a gestire milioni di punti dati al secondo, Apache Kafka è la soluzione ideale alle problematiche legate ai Big Data. In molti scenari di utilizzo di elaborazione dati, quali IoT e social media, i volumi di dati aumentano in modo esponenziale e possono arrivare rapidamente a sovraccaricare le applicazioni basate sui volumi di dati attuali.
Le difficoltà del data streaming
I flussi di dati devono trasmettere informazioni sequenziali in tempo reale. Le applicazioni di data streaming dipendono dai flussi, che devono garantire alti livelli di disponibilità e coerenza anche nei periodi di attività intensiva. Tuttavia, riuscire a fornire e/o consumare flussi di dati che rispettino sempre tali parametri può diventare complesso.
La quantità di dati non elaborati in un flusso può aumentare esponenzialmente in breve tempo. Pensiamo, ad esempio, agli enormi volumi di dati nuovi che vengono introdotti durante una svendita immediata di titoli azionari, ai post sui social media in occasione di un evento sportivo o ancora all'attività del log quando si verifica un errore di sistema. I flussi di dati devono essere scalabili per definizione. Anche nei periodi di attività intensiva, i flussi devono privilegiare il sequenziamento appropriato dei dati, la coerenza dei dati e la disponibilità. I flussi devono essere inoltre progettati per garantire durabilità in caso di guasto parziale di un sistema.
In un ambiente di cloud ibrido distribuito, i cluster di data streaming hanno delle esigenze speciali. In linea generale i broker di data streaming sono stateful e devono essere preservati in caso di riavvio. La scalabilità richiede un'orchestrazione attenta per garantire che i servizi di messaggistica si comportino come previsto ed evitare le perdite di record.
Perché usare un servizio di data streaming?
La gestione di una struttura complessa come una piattaforma di data streaming, che deve garantire la trasmissione in tempo reale e l'alta disponibilità, richiede un investimento considerevole di risorse, oltre a necessitare di competenze e hardware di cui le organizzazioni IT interne in genere sono sprovviste.
Proprio per questo, molti utenti dei servizi di data streaming preferiscono utilizzare un servizio cloud gestito, che affida la gestione di infrastrutture e sistemi a un provider di servizi. Questa possibilità va a vantaggio delle organizzazioni che, delegando la gestione della soluzione, possono dedicarsi ai loro obiettivi strategici.