Architettura dei dati in streaming

Un'architettura di dati in streaming è un framework di tecnologia dell'informazione che pone l'accento sull'elaborazione dei dati in movimento e tratta l'elaborazione in batch di estrazione-trasformazione-carico (ETL) come un altro evento in un flusso continuo di eventi. Questo tipo di architettura ha tre componenti di base: un aggregatore che raccoglie flussi di eventi e file batch da una varietà di origini dati, un broker che rende i dati disponibili per il consumo e un motore di analisi che analizza i dati, correla i valori e unisce i flussi.

Il sistema che riceve e invia flussi di dati ed esegue l'applicazione e la logica di analisi in tempo reale è chiamato stream processor. Perché un'architettura di dati in streaming supporta il concetto di origine degli eventi, riduce la necessità per gli sviluppatori di creare e mantenere database condivisi. Invece, tutte le modifiche allo stato di un'applicazione vengono archiviate come una sequenza di trigger ESP (Event-driven Processing) che possono essere ricostruiti o interrogati quando necessario. Alla ricezione di un evento, il processore di flusso reagisce in tempo reale o quasi in tempo reale e attiva un'azione, come ricordare l'evento per riferimento futuro.

La crescente popolarità delle architetture di dati in streaming riflette un passaggio nello sviluppo di servizi e prodotti da un'architettura monolitica a un'architettura decentralizzata costruita con microservizi. Questo tipo di architettura è solitamente più flessibile e scalabile di una classica architettura applicativa incentrata sul database perché co-localizza l'elaborazione dei dati con lo storage per ridurre i tempi di risposta dell'applicazione (latenza) e migliorare il throughput. Un altro vantaggio dell'utilizzo di un'architettura di dati in streaming è che tiene conto del tempo in cui si verifica un evento, il che semplifica il partizionamento e la distribuzione dello stato e dell'elaborazione di un'applicazione in molte istanze.

Le architetture di dati in streaming consentono agli sviluppatori di sviluppare applicazioni che utilizzano dati associati e non associati in modi nuovi. Ad esempio, il team dell'infrastruttura di ricerca di Alibaba utilizza un'architettura di dati in streaming basata su Apache Flink per aggiornare i dettagli del prodotto e le informazioni di inventario in tempo reale. Netflix utilizza Flink anche per supportare i suoi motori di raccomandazione e ING, la banca globale con sede nei Paesi Bassi, utilizza l'architettura per prevenire il furto di identità e fornire una migliore protezione dalle frodi. Altre piattaforme che possono ospitare sia l'elaborazione in streaming che in batch includono Apache Spark, Apache Storm, Google Cloud Dataflow e AWS Kinesis.