• Non ci sono risultati.

4.1 Tecnologie utilizzate

4.1.1 IBM Infosphere Streams

Infosphere Streams è una piattaforma che consente lo sviluppo di applicazioni in grado di fornire, analizzare e correlare rapidamente le informazioni provenienti da diverse sorgenti in tempo reale.

Il suo utilizzo è stato deciso dall’azienda SDG sia per il rapporto commerciale che ha con IBM, proprietaria del software, sia per le caratteristiche del prodotto, riassunte brevemente in Figura 4.1, di cui sono state studiate le potenzialità facendo riferimento a [5], che consentono di:

 gestire enormi quantità di dati con bassa latenza, questo grazie alla sua infrastruttura software che permette di parallelizzare l’esecuzione dei programmi distribuendo il carico di lavoro in diversi nodi;

 utilizzare i più diversi tipi di dati, sia strutturati (provenienti da sorgenti dati tradizionali come i database) che non

Millions of events per second Microsecond Latency Traditional / Non-traditional data sources

Real time delivery

Powerful

Analytics

44

strutturati (provenienti da sorgenti dati come testi, audio, video, ecc.);

 sviluppare i propri programmi, con la possibilità di creare delle componenti custom scritte in Java o C++;

 integrare facilmente gli script R utilizzati per la previsione dei dati in arrivo.

Infosphere Streams è stato pensato e sviluppato per supportare il paradigma di programmazione denominato Stream Computing. Questo paradigma sfrutta il potenziale derivante dall’analisi dei dati che scorrono ininterrottamente attraverso canali di comunicazione interconnessi (data

in motion). Rispetto all’approccio tradizionale, in cui le analisi sono

effettuate su dati relativamente statici, con questo nuovo paradigma si sviluppano applicazioni statiche che applicano in maniera costante queste analisi ad un flusso continuo di dati. Il processo analitico modellabile attraverso questo software viene denominato RTAP (Real-Time Analytic

Processing), che si aggiunge ai tradizionali OLTP (Online Transaction Processing) e OLAP (Online Analytic Processing). Il componente chiave

dei sistemi OLTP e OLAP è il fatto che i dati sono memorizzati in una qualche struttura. Con RTAP invece, data la velocità con cui devono essere fornite le analisi, non si attende che i dati siano memorizzati ma si applicano le stesse analisi stabilite in OLAP su uno streaming di dati, fornendo i risultati in tempo reale. I tipi di analisi che ha senso effettuare in questo modo includono (ma non sono limitati a):

 Allarmi, quando l’applicazione notifica agli utenti il fatto che l’analisi ha identificato l’occorrenza di una certa situazione (in base ad un insieme di regole o ad un modello di processo) e fornisce quindi raccomandazioni e opzioni per condurre le azioni appropriate.

45

 Feedback, quando l’applicazione identifica l’occorrenza di una certa situazione e compie le modifiche opportune al processo in modo da prevenire problemi futuri o correggere i problemi già verificati.

 Identificazione fallimenti, quando l’applicazione è progettata per rilevare quando una sorgente dati non risponde o genera dati entro un determinato termine.

Per quanto riguarda le caratteristiche di scalabilità, Infosphere Streams permette di essere installato in maniera distribuita su più host in due diverse modalità:

 riservata: in cui un solo host è responsabile dell’esecuzione dei servizi di gestione della piattaforma mentre gli altri si occupano dell’esecuzione delle applicazioni;

 non riservata: in cui i servizi di gestione possono essere divisi su host diversi che si occupano anche dell’esecuzione delle applicazioni.

La prima modalità offre il vantaggio di isolare la gestione della piattaforma dall’esecuzione dei programmi, garantendo la stabilità del sistema anche in caso di esecuzione di applicazioni altamente inefficienti. Nel progetto sviluppato, invece, l’installazione è stata di tipo host singolo, dove sia i servizi di gestione che le applicazioni sono eseguiti nello stesso server. Questa scelta è dipesa da vincoli presenti nell’azienda cliente che prevedono, per lo sviluppo di prototipi, la disponibilità di un’unica macchina server. La scalabilità di Infosphere Streams permette, in ogni caso, di passare ad una topologia multi-host in maniera molto semplice, agevolando così l’eventuale trasformazione del POC in un progetto concreto.

Per quanto riguarda lo sviluppo di applicazioni, Infosphere Streams fornisce un IDE (Integrated Development Environment), chiamato InfoSphere Streams Studio, basato sul progetto Eclipse la cui interfaccia

46

è visibile in Figura 4.2. Le applicazioni sono sviluppate usando il linguaggio di programmazione dichiarativo SPL (Streams Processing

Language), creato appositamente per la gestione e processamento di dati

in arrivo in tempo reale. Il linguaggio SPL fornisce una serie di operatori nativi che consentono di: recuperare dati provenienti da diverse sorgenti, eseguire trasformazioni su di essi (ad es. filtraggio, aggregazione, unione) e restituirli come flusso di output; è inoltre possibile creare i propri operatori utilizzando il linguaggio Java o C++.

Una tipica applicazione Infosphere Stream prevede la creazione di un grafo, costituito da diversi operatori, attraverso cui passano i dati in input per essere processati e infine restituiti come output, in Figura 4.3 viene mostrato un esempio di applicazione caratterizzato da passi multipli.

47

Un compilatore si occupa di tradurre l’applicazione in codice eseguibile, ed inoltre compie una serie di decisioni per ottimizzare le prestazioni, come ad esempio la dimensione del buffer, quali funzionalità far svolgere ad una sola macchina e quando inizializzare l’esecuzione di nuovi thread. Una volta deployata l’applicazione, l’ambiente a tempo di esecuzione di Streams lavora congiuntamente con l’ottimizzatore per allocare l’applicazione nella configurazione a tempo di esecuzione, in maniera simile all’esempio mostrato in Figura 4.4.

A tempo di esecuzione, in caso di installazione distribuita, un componente di Infosphere Streams è responsabile del monitoraggio delle prestazioni e dei fallimenti, ridistribuendo il carico fra i vari nodi in caso di problemi. Se ad esempio nel nodo colorato di rosso in Figura 4.4 viene rilevato un problema relativo all’eccessivo carico di lavoro, l’ambiente di esecuzione ridistribuisce il carico fra i nodi come in Figura 4.5.

Figura 4.3 Esempio di flusso Streams

48

Figura 4.5 Riallocazione di un componente dell'applicazione Streams sulle risorse

Documenti correlati