Molte decisioni di business non possono aspettare il batch notturno: rilevare una frode sulla carta, mostrare il traffico di un sito in diretta o reagire alla lettura di un sensore richiede di elaborare i dati mentre accadono. Questo è il dominio dello streaming (o real-time analytics), contrapposto al batch processing che lavora su grandi volumi accumulati. In Azure il pattern tipico si compone di tre stadi: ingestione, elaborazione ed output.
L’ingestione: Event Hubs e IoT Hub
Prima di analizzare un flusso, occorre raccoglierlo. Gli eventi arrivano continuamente, spesso da migliaia di sorgenti, e servono componenti capaci di assorbire questo volume senza perdere messaggi.
- Azure Event Hubs è il servizio di ingestione per eccellenza: una “big data pipeline” in grado di ricevere e bufferizzare milioni di eventi al secondo. È la scelta giusta per log applicativi, telemetria, clickstream di siti web o flussi provenienti da sistemi come Apache Kafka (Event Hubs espone un endpoint Kafka-compatibile).
- Azure IoT Hub è specializzato per scenari IoT: aggiunge la gestione bidirezionale dei dispositivi (comandi verso i device, provisioning, sicurezza per-device). Internamente contiene un Event Hub, ma va scelto quando la sorgente sono sensori e dispositivi da gestire, non semplici applicazioni.
Il punto chiave a livello fundamentals: questi servizi ricevono e trattengono gli eventi, ma non li analizzano. Sono la porta d’ingresso.
Il motore: Azure Stream Analytics
Azure Stream Analytics (ASA) è il motore di query continue che elabora i dati in transito. A differenza di una query SQL tradizionale, che gira una volta su dati fermi, una query di Stream Analytics resta sempre in esecuzione e produce risultati man mano che arrivano nuovi eventi. Il linguaggio è un dialetto SQL, quindi accessibile anche a chi non è sviluppatore.
Un job di Stream Analytics si definisce con tre elementi: un input (tipicamente Event Hubs o IoT Hub), una query di trasformazione/aggregazione e uno o più output.
Windowing: aggregare su intervalli di tempo
Poiché il flusso è infinito, per calcolare aggregazioni (medie, conteggi, massimi) bisogna delimitare “finestre” temporali. Le windowing functions sono il concetto più chiesto all’esame:
- Tumbling window: finestre a intervalli fissi e non sovrapposti (es. conteggio ogni 10 secondi). Ogni evento appartiene a una sola finestra.
- Hopping window: finestre di durata fissa che si sovrappongono perché “saltano” avanti di un passo più breve della loro durata (es. media degli ultimi 60s, calcolata ogni 30s).
- Sliding window: produce un output solo quando un evento entra o esce dalla finestra, utile per rilevare condizioni nel momento esatto in cui si verificano.
- Session window: raggruppa eventi vicini nel tempo e si chiude dopo un periodo di inattività (gap). Ideale per analizzare sessioni utente.
Le destinazioni: gli output
I risultati elaborati vengono inviati a destinazioni diverse a seconda dell’obiettivo:
- Power BI: per dashboard in tempo reale che si aggiornano automaticamente. Scelta tipica quando la richiesta è “visualizzare dati live”.
- Azure Blob Storage / Data Lake Storage / Azure SQL / Cosmos DB: per persistere i risultati e analizzarli in seguito.
- Azure Monitor Logs (Log Analytics): per convogliare metriche ed eventi verso il monitoraggio e l’alerting operativo.
- Di nuovo Event Hubs, per innescare a valle altre elaborazioni o funzioni.
Real-Time Intelligence in Microsoft Fabric
L’evoluzione moderna dello streaming è Real-Time Intelligence all’interno di Microsoft Fabric: una soluzione end-to-end che unifica ingestione, query continue e visualizzazione. Al suo cuore ci sono gli Eventstream (per acquisire e instradare flussi) e l’Eventhouse basato su KQL (Kusto Query Language) per interrogare enormi volumi di dati time-series. È l’approccio integrato che affianca — e in molti scenari nuovi sostituisce — l’assemblaggio manuale dei singoli servizi.
Trappole tipiche d’esame
- “Ricevere milioni di eventi al secondo da un’app, senza analizzarli” → Azure Event Hubs. L’ingestione è il suo ruolo, non l’analisi.
- “Gestire e comunicare con dispositivi/sensori IoT” → Azure IoT Hub, non Event Hubs: solo IoT Hub offre la comunicazione bidirezionale coi device.
- “Analizzare/interrogare un flusso in tempo reale con query tipo SQL” → Azure Stream Analytics. È il motore, mentre Event Hubs è solo la sorgente.
- “Dashboard live che si aggiorna da sola” → output verso Power BI dal job di Stream Analytics.
- “Aggregare eventi in intervalli fissi che non si sovrappongono” → tumbling window; se le finestre si sovrappongono → hopping window; se si raggruppano per inattività → session window.