Microsoft Azure

Raccogliere e “spostare” i dati con i Sevizi di Microsoft Azure

Come accennato nell’articolo precedente: Microsoft Azure: Dalla raccolta dei dati all’analisi per prendere decisioni intelligenti, oggi è molto facile raccogliere dati; “l’internet delle cose” e le reti sempre più presenti e performanti hanno reso il compito molto semplice e prossimamente con la maggiore diffusione delle reti di quinta generazione questo compito sarà ancora più semplice.

Fatta questa piccola premessa facciamo un piccolo giro per giustificare la citazione dei Ghostbusters nel titolo: in alcune situazioni particolari può avere senso compiere delle registrazioni continue di un certo evento, ma in generale, anche per evitare la generazione di un numero eccessivo e non utile di informazioni (che comunque necessiteranno di essere stoccate ed analizzate) si opta per utilizzare dei trigger. Questi trigger possono essere qualsiasi: il rilevamento di un movimento, il superamento di una certa soglia di temperatura, lo scattare di un certo orario, il rilevamento di una vibrazione etc etc.

Esistono pure configurazioni in cui si accentrano i dati provenienti da sensori, in un sistema che esegue una prima analisi per poi inviare dati anomali o normalizzati al Cloud per eseguire ulteriori analisi più complesse.

Resta il fatto che ad un certo punto dai miei sistemi devo poter inviare dei dati al cloud, dove posso dare in pasto questi dati e sistemi di Machine Learning oppure di Intelligenza Artificiale, sistemi che richiedono una potenza computazione decisamente maggiore di quella che possono offrire sistemi non in cloud (fatta eccezione per infrastrutture avanzate che non sono alla portata della maggior parte dei player sul mercato) senza considerare che questi algoritmi si basano sulla storicizzazione dei dati e quindi maggiore sono i dati a disposizione maggiore è l’accuratezza del sistema.

Azure Event Hub e Azure IoT Hub

Fra gli strumenti che mette a disposizione Azure di Microsoft per fare questo mestiere di spostamento dati in base a determinati trigger ci sono Azure Event Hub ed Azure IoT Hub. Questi servizi gestiti consentono di intercettare degli eventi e creare delle pipeline di dati integrabili facilmente con altri servizi offerti da Azure per poter compire analisi.

La principale differenza fra i due servizi risiede nel fatto che Azure IoT Hub permette una comunicazione bilaterale ma di fatto la funzionalità base è molto simile.

Immaginiamo quindi di trovarci nella situazione di dover utilizzare uno di questi due servizi per gestire un mio piccolo progetto in una configurazione molto standard per questo genere di analisi:

Producer di eventi

In questo schema un sistema, compostato da n sensori, genera dei dati (questo blocco prende il nome di Producer di eventi, gli autori di eventi possono pubblicare eventi usando HTTPS o AMQP 1.0 o Apache Kafka) e questi vengono inviati all’ Azure Event Hub; questo, alla ricezione dei dati, li invia ad un Blob Storage e ad uno Stream Analytics e a quel punto si invieranno le informazioni, dopo una prima elaborazione, ad un DB (sia questo Sql o non relazionale), ad app di vario genere o per essere visualizzate tramite  Power BI.

Quindi dopo aver creato il proprio Event Hub, si può configurare l’evento:

Event Hub

Nel creare un Event Hub si dovrà scegliere il numero di partizioni; Il numero di partizioni può variare da 1 a 32, e non è possibile modificarlo successivamente quindi è necessario valutare questo aspetto in prospettiva. Le partizioni sono un meccanismo di organizzazione dei dati correlato al parallelismo downstream necessario per utilizzare le applicazioni. Il numero di partizioni in un hub eventi è direttamente correlato al numero di lettori simultanei previsti.

Event hub organizza sequenze di eventi inviati a un Event Hub in una o più partizioni. Man mano che arrivano, i nuovi eventi vengono aggiunti alla fine di questa sequenza. Una partizione può essere pensata come un “log di commit”. Le partizioni contengono i dati dell’evento che a loro volta includono il corpo dell’evento, cioè un contenitore di proprietà definito dall’utente che descrive l’evento, metadati come l’offset nella partizione, il relativo numero nella sequenza di flusso e il timestamp sul lato servizio in cui è stato accettato.

Di seguito una figura esplicativa dell’architettura di elaborazione del flusso di Hub eventi ipotizzando più partizioni con due gruppi di consumer.

flusso di Hub

Configurato l’Event Hub è necessario ottenere la connection string per poter configurare il Producer e per fare questo basta cliccare su Shared access policies e quindi su “add”

Quindi il sistema genererà le chiavi necessarie per inviare dati.

A questo punto il servizio è pronto a ricevere dati, ma è necessario configurare lo step successivo, in altre parole cosa il servizio deve fare una volta ricevuto un dato dal nostro producer.

Anche per questo il portale di Azure ci offre un’interfaccia grafica molto intuitiva per poter configurare il processo, infatti all’interno della schermata di overview troviamo il tab “Process Data”, dal quale sarà possibile configurare lo Stream Analitics.

Sempre all’interno dell’overview, il servizio offre anche la possibilità di usufruire di tutta la serie di metriche che possono essere estremamente utili per analizzare come il servizio sta lavorando.

Certamente arrivati a questo punto, se vi trovate nella condizione di dover configurare un servizio di Azure Event Hub o Azure IoT Hub (toccato ancora più marginalmente da questo breve articolo) non avete tutte le informazioni necessarie. Molti punti necessitano di un approfondimento specifico;  lo scopo di questo articolo, infatti, è fornire un ulteriore tassello della costruzione del nostro ipotetico mosaico di progetto di gestione del dato tramite gli strumenti messi a disposizione da Azure, e grazie alle citazioni di film anni ’80, dipingere il mood di una generazione che per prima si trova a relazionarsi, su larga scala, con il tema della gestione dei dati.
Un argomento così affascinante, complesso e dall’evoluzione estremamente rapida che offre un panorama di possibilità e strumenti molto ampia e varia, a proposito dei quali, in questa serie di articoli, voglio fornire qualche spunto interessante per aiutare a fare un po’ di chiarezza su specifici servizi e funzionalità.

 

 

Microsoft Azure è una piattaforma di Cloud Computing accessibile tramite un portale online che consente di accedere e gestire i servizi e le risorse cloud forniti da Microsoft

 

Innovation Manager Nebula

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *