Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Massimo Brescia » 29.Tecnologie di indagine scientifica in Astrofisica - parte sesta


Introduzione

Sintesi Argomenti:

Workflow:
Come si sviluppa un flusso di lavoro

Data Store:
L’importanza degli standard

Tecnologie Web:
Web Application e Web Service

Architetture Computazionali:
HPC, Cloud e Grid Computing

Un esempio:
Il progetto DAME

Es. di workflow per il pattern recognition tramite il software KNIME

Es. di workflow per il pattern recognition tramite il software KNIME

Es. di architettura di database distribuito. Fonte: Filbeto

Es. di architettura di database distribuito. Fonte: Filbeto


WORKFLOW – Definizione

Cos’è un Workflow?

Un workflow (o flusso di lavoro) è:

  • Un’astrazione per rappresentare un lavoro reale descrivendolo, ad esempio, con una sequenza finita affidabile e ripetibile di passi (algoritmo).
  • Costituito da una sequenza di passi collegati che possono rappresentare una sequenza di operazioni per definire la struttura del lavoro e la complessità dei meccanismi interni.
  • Un modello di attività in grado di definire un processo di lavoro documentabile e automatizzabile, una volta fissati l’organizzazione delle risorse, la definizione dei ruoli ed il flusso di informazioni.

Un workflow in ambito astrofisico è spesso denominato pipeline

WORKFLOW – Descrizione

Come si descrive

Un workflow può essere descritto utilizzando dei diagrammi che mostrano il flusso dei dati tra varie le fasi di trasformazione.

I componenti base che costituiscono un workflow sono:

  • Descrizione degli input: informazioni necessarie per completare un processo.
  • Descrizione delle regole: insieme di algoritmi.
  • Descrizione degli output: informazioni prodotte dal uno processo e fornite come input alle fasi a valle, cioè di post-processing.

La descrizione di un componente è composta principalmente dagli ingressi e dalle uscite che vengono descritti in termini di tipi di dati e loro significato (semantica).

Gli algoritmi (descrizione delle regole) devono essere inclusi solo quando ci sono diversi modi per trasformare un tipo di input in un tipo di output.

WORKFLOW – Componenti

Come si compone un Workflow?

I processi possono essere collegati tra loro a patto che l’uscita del precedente sia compatibile con l’ingresso del successivo (Interfaccia Input/Output tra processi).

È importante quindi definire per i dati, sia di ingresso che di uscita, delle regole univoche e non ambigue che li definiscano (Standard). Ciò ci permette di scegliere un componente indipendente dal “0” svolga il suo compito ed interessandoci solo di “cosa” deve fare.


WORKFLOW – Esempio

Un esempio di workflow creato con KNIME

Un esempio di workflow creato con KNIME


Standard

Cos’è uno Standard

… standards could be described in general as being definitions and specifications, for products and processes, approved by a recognized standardization body for repeated or continuous application, with which compliance is not compulsory. They are certainly a set of rules for ensuring quality.

ETSI definition of standard

Nel contesto dello scambio di informazioni, è la definizione una serie di norme per lo scambio di dati per specifici processi utilizzando specifiche sintassi.

Queste norme spesso vengono sviluppate da organizzazioni, come ETSI W3C o IVOA, che ne diramano le specifiche e ne controllano il rispetto.

Standard – Significato

Perché si usano gli Standard?

Chiediamoci piuttosto cosa accadrebbe se non lo facessimo?
Se non si usasse uno standard i componenti:

  • Potrebbero non funzionare come previsto
  • Potrebbero essere incompatibili con altre applicazioni
  • Non si potrebbero mettere in contatto con loro

Gli obiettivi della standardizzazione di un componente sono quelli di aiutare, grazie all’indipendenza dei singoli fornitori (chiunque può sviluppare una funzionalità rispettando lo standard) la compatibilità, l’interoperabilità, la ripetibilità e la qualità.

METADATI

Metamodellazione Metadato

La Metamodellazione è l’analisi, la costruzione e lo sviluppo di regole, vincoli, modelli e teorie utili per la modellazione di una classe di problemi.

Un metadato, dal greco meta-”oltre, dopo” e dal latino datum “informazione” – plurale: data), letteralmente “dato su un (altro) dato”, è l’informazione che descrive un insieme di dati.

Wikipedia

La parola meta indica uno step verso l’alto nel livello d’astrazione.

MOF Meta Levels. Fonte: Metadaten

MOF Meta Levels. Fonte: Metadaten


XML

Lo standard XML

XML è un formato testuale utilizzato per la rappresentazione di strutture di dati arbitrarie.
Esistono diverse categorie di API per accedere a dati XML:

  • Stream-oriented, che richiedono meno memoria, sono basati su un attraversamento lineare di un documento XML, sono più veloci e più semplici rispetto ad altre alternative.
  • Tree-oriented, in genere richiedono l’utilizzo di molta più memoria ma spesso più convenienti per la maggiore libertà nella gestione dei dati recuperati.
  • XML data binding, permettono la traduzione automatica da dato XML a un tipo di dato di uno specifico linguaggio di programmazione.
  • Linguaggi dichiarativi di trasformazione, che interrogano gli XML per estrarne informazioni tramite delle query, come lo si fa con una base di dati.

I Formati Standard

Esempi di formati di dati

I formati standard nell’astrofisica sono:

  • ASCII: è lo standard di codifica per i file in formato testo, ha il limite di non comprende una formattazione dei dati.
  • CSV Comma-Separated Values: è usato per rappresentare dati in forma tabellare. Come metadato può contenere il nome delle colonne.
  • FITS Flexible Image Transport System: è usato nell’ambito scientifico per la rappresentazione delle immagini. Memorizza i metadati dell’immagine, come il sistema di coordinate scelto, in un header leggibile dall’uomo.
  • VOTable: è lo standard IVOA per i dati, come il FITS può contenere più immagini, ma i metadati sono codificati con uno schema XML.

Storage avanzato dei Dati

Database Distribuito

In un Database distribuito i dati non si trovano su un unico PC ma sono divisi su più macchine collegate in rete. Possiamo avere DB distribuiti omogenei, che usano un solo DBMS oppure eterogenei, dove i dati memorizzati sono gestiti da DBMS diversi (es. MySQL e ORACLE ).

Vantaggi
Protezione – se ci fosse un evento catastrofico, non tutti i dati andrebbero persi.
Miglioramento delle prestazioni – gestendo il carico dei dati e delle richieste tra i server.
Modularità – possiamo modificare i moduli dal database senza influenzare gli altri.
Affidabilità – Grazie alla ridondanza dei dati.

Svantaggi
Complessità – lavoro supplementare per garantire la trasparenza e per la progettazione del DB.
Economicità – maggiore complessità ed una infrastruttura più ampia da gestire.
Integrità – applicare l’integrità della rete può richiedere troppe risorse per essere fattibile.
Standardizzazione – mancano strumenti per convertire un DBMS centralizzato in uno distribuito.
Nuove problematiche – si devono considerare la frammentazione dei dati, l’assegnazione di frammenti a siti specifici e la ridondanza dei dati.

WEB INTRO

Le Tecnologie Web

La necessità di avere sempre maggior spazio per lo storage, ormai dell’ordine dei PetaByte, ed il bisogno di maggiore potenza di calcolo, hanno portato al fenomeno della delocalizzazione, dove i dati e il software non risiedono sul nostro pc, ma sono fruibili via web.

Il vantaggio di queste tecnologie sta nella modularità e nella quantità di soluzioni disponibili. Tutto ciò porta ad un risparmio economico non indifferente visto che non esistono investimenti iniziali e i costi si riducono a quelli di utilizzo (on-demand cloud computing di SUN che costa 1$ per CPU-hour).

Web2.0 Chi non usa almeno uno dei servizi sopra riportati? Fonte: Flickr

Web2.0 Chi non usa almeno uno dei servizi sopra riportati? Fonte: Flickr


WEB Application

Una Webapp è una qualsiasi applicazione che sia accessibile via web tramite un browser.

Le Applicazioni Web usano una combinazione di script lato server per l’elaborazione, l’archiviazione e il recupero delle informazioni e script lato client per la visualizzazione delle informazioni e lo sviluppo dell’interfaccia grafica dell’applicazione .

Vantaggi
Sono facilmente raggiungibili, basta un collegamento ad internet.
Non necessitano di installazione, usano un comunissimo browser come interfaccia.
Sono cross-platform, non importa che sistema operativo usiamo (es. Linux o Mac OS)

Java Web Application Request Handling. Fonte: Java Sun

Java Web Application Request Handling. Fonte: Java Sun


WEB Application – esempi

Esempi di Web Application

Le applicazioni web-based oggi concorrono ad implementare, in tutto o in parte, quelle soluzioni software che fino a poco tempo fa erano esclusiva dei sistemi desktop.
Si va dall’elaborazione di testi al fotoritocco, dal video editing al calcolo scientifico.

Esempi delle più comuni webapp:

  • Gmail o Horde, gestori di posta elettronica.
  • Picnik, per il fotoritocco.
  • Zoho e Google Document, per il word processing.
  • WolframAlfa, versione web di Mathematica.
  • Google Sky, Celestia o WorldWide Telescope, osservatori virtuali.
Alcuni esempi di web application. Fonte M. Garofalo

Alcuni esempi di web application. Fonte M. Garofalo


WEB SERVICE – Definizione

Definizione di Web Service del W3C:

Web Service

…un sistema software progettato per supportare l’interazione macchina-macchina in una rete. È dotato di un’interfaccia descritta in un formato processabile (WSDL). Altri sistemi interagiscono con il web service tramite messaggi SOAP, trasmessi utilizzando il protocollo HTTP e un XML in collaborazione con altri web-standard connessi.

Spesso sono semplicemente delle Internet Application Programming Interfaces (API) che possono essere lette in una rete, ed eseguite su un sistema remoto che ospita i servizi richiesti.

Un Web Service deve avere un design più organizzato di una webapp, perché non ci sarà necessariamente un essere umano dall’altro capo che può inerpretare attraverso dei tentativi gli errori.

Il processo di “Engaging” di un servizio Web. Fonte: W3C

Il processo di "Engaging" di un servizio Web. Fonte: W3C


WEB SERVICE – Caratteristiche

Web Service

Vantaggi

  • Permettono l’interoperabilità tra diverse applicazioni software su diverse piattaforme hardware.
  • I protocolli ed il formato dei dati sono in formato testuale, cosa che li rende di più facile lettura ed utilizzo da parte degli sviluppatori.
  • Possono essere facilmente utilizzati in combinazione l’uno con l’altro per formare servizi integrati.
  • Consentono il riutilizzo di infrastrutture ed applicazioni già sviluppate e sono indipendenti da eventuali modifiche delle stesse.

Svantaggi

  • Non esistono standard consolidati per applicazioni critiche quali, le transazioni distribuite.
  • L’uso dell’ HTTP permette ai Web Service di evitare le misure di sicurezza dei firewall.
Fonte: Wikipedia

Fonte: Wikipedia


Comunicazione tra componenti

La comunicazione tra componenti

HTTP (HyperText Transfer Protocol), è un protocollo usato come principale sistema per la trasmissione di informazioni sul web.

SOAP (Simple Object Access Protocol), è un protocollo per lo scambio di messaggi tra componenti software, tipicamente nella forma di componentistica software. La parola Object manifesta che l’uso del protocollo è da effettuarsi secondo il paradigma OOP

RPC (Remote Procedure Call), consente ad un programma di eseguire a distanza una subroutine su computer remoti. Risulta particolarmente adatto per il calcolo distribuito basato sul modello client-server; la chiamata a procedura corrisponde alla richiesta inviata dal client, e il valore restituito della procedura alla risposta inviata dal server.

REST (Representational state transfer), è una architettura software che deve: implementare il paradigma Client-Server, essere Stateless, Cacheable (riduce l’interazione client-server), garantire l’uniformità delle interfacce (rende indipendente lo sviluppo delle parti) e fare in modo che ci sia una comunicazione a più livelli tra client e server.

Fonte: Wikipedia

Fonte: Wikipedia


SERVLET

A servlet is a Java class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers. For such applications, Java Servlet technology defines HTTP-specific servlet classes;

da Java

Il compito di una servlet è quello di ricevere e rispondere alle richieste provenienti dai client Web, di solito attraverso l’HTTP. Generalmente sono usate per creare pagine web dinamicamente a seconda dei parametri della richiesta spedita dal client.

Applet-servlet architecture. Fonte: cs.unc

Applet-servlet architecture. Fonte: cs.unc


ARCHITETTURE di calcolo

Introduzione alle Architetture

Con il passare degli anni la complessità dei problemi da risolvere e delle simulazioni scientifiche sono aumentate di pari passo con la potenza di calcolo a disposizione. Questa rincorsa ha portato alla necessità di una gestione delle risorse hardware più intelligente ed ha visto nascere nuove architetture per il calcolo ad alte prestazioni.

Le principali architetture sono:

  • HPC
  • Cloud Computing
  • Grid Computing
Fonte: NVIDIA
Fonte: ProblemidiBlog
Fonte: Voneural

High Performance Computing

HPC

Il termine è utilizzato nel campo del calcolo scientifico e si riferisce, in generale, a tutte quelle tecnologie utilizzate per creare dei sistemi di elaborazione in grado di fornire prestazioni molto elevate dell’ordine dei teraflops.

Un classico esempio di HPC sono i Cluster.

Un cluster Beowulf ad esempio è un’architettura multi-computer per il calcolo parallelo.
È generalmente costituito da vari nodi client controllati da un nodo server e connessi tra loro via ethernet. Spesso venivano assemblati usando PC identici ma poco potenti per creare una potenza di calcolo maggiore.

Beowulf in Astrofisica fu introdotta per ridurre in parallelo immagini osservate da mosaic CCD (ogni CCD ha un PC dedicato)

Il cluster Beowulf Lupalberto del Dip. di Fisica della Federico II

Il cluster Beowulf Lupalberto del Dip. di Fisica della Federico II


HPC – GPU Computing

HPC

Negli ultimi anni si è visto l’enorme sviluppo di sistemi HPC tramite GPU Computing.
Questo termine indica l’utilizzo di una GPU per l’esecuzione generale dei calcoli scientifici e tecnici. Normalmente si utilizzano una CPU e una GPU insieme per ottenere un modello di elaborazione eterogeneo. La parte sequenziale dell’applicazione viene eseguita sulla CPU, mentre la parte a maggiore densità di calcolo viene eseguita sulla GPU. Grazie al grande numero di core all’interno di una GPU e dato che sono costituiti da una architettura parallela di processori vettoriali l’esecuzione delle applicazioni parallele risulta più rapida.

Fonte: NVIDIA

Fonte: NVIDIA


CLOUD Computing

È il paradigma nel quale i dettagli sono astratti e gli utenti non hanno bisogno di una conoscenza o una competenza dell’infrastruttura sottostante. Esso prevede tre attori distinti: fornitore di servizi, cliente amministratore e cliente finale.

Fonte: NVIDIA

Fonte: NVIDIA


CLOUD Computing – Caratteristiche

Una caratteristica del Cloud Computing è di rendere disponibili le risorse come se fossero implementate da sistemi “standard”. L’implementazione effettiva delle risorse non è definita in modo dettagliato poichè l’architettura è Service Oriented.
L’idea è che l’implementazione sia un insieme eterogeneo di risorse, le cui caratteristiche non siano note all’utilizzatore.

Il termine cloud computing si differenzia da grid computing, che è un paradigma per il calcolo distribuito orientato alle risorse (Resource Oriented), poichè quest’ultimo richiede che le applicazioni siano progettate in modo specifico.

Fonte: Wikipedia

Fonte: Wikipedia


GRID Computing

Il termine “the Grid” fu coniato per indicare una nuova infrastruttura di calcolo distribuito, ideata per supportare le esigenze delle Scienze computazionali ed ingegneristiche.

L’obiettivo del grid computing è di ridurre il tempo di esecuzione di problemi che computazionalmente richiederebbero mesi di calcolo nell’ordine dei giorni o delle ore.

Una delle caratteristiche principali è quella di dividere l’applicazione lanciata in un elevato numero di job e distribuirli sui vari nodi della griglia.

I nodi di una griglia, a differenza del clustering classico, tendono ad essere omogenei e geograficamente vicini.

Fonte: Voneural

Fonte: Voneural


GRID – Caratteristiche

Il Grid Computing si propone l’obiettivo di condividere un grande numero di risorse di calcolo e di storage, distribuite su larga scala, appartenenti a differenti domini amministrativi e caratterizzate da un elevato grado di dinamicità. Per far fronte all’amministrazione di un infrastruttura così complessa, il Grid introduce nuovi importanti concetti e servizi rispetto ai sistemi distribuiti convenzionali.
Una delle novità introdotte dal Grid è il concetto di Virtual Organization che gioca un ruolo fondamentale data la natura multi-istituzionale delle grandi collaborazioni a cui si rivolge questa tecnologia.

Fonte: Unina

Fonte: Unina


DAME (DAta Mining & Exploration)

Il Progetto DAME

The DAME project aims at creating a single distributed e-infrastructure for data exploration, mining and visualization. It provides an integrated access to data collected by very different instruments, experiments and scientific communities in order to be able to correlate them and improve their scientific usability and interoperability.

Fonte: Voneural

Fonte: Voneural

Fonte: Voneural


DAME – Architettura

Fonte: Voneural

Fonte: Voneural


Conclusioni

Quale Futuro?

Riassumendo quello che abbiamo visto fin’ora possiamo dire che, anche se nessuna delle precedenti soluzioni prevarica in modo assoluto sulle altre, la tendenza per il futuro prossimo è certamente quella di un mondo in cui, i PC si somiglieranno sempre più a dei thin client e le risorse saranno quanto più delocalizzate.

Grazie alla vasta gamma di webapp e web-service già a disposizione, e con una buone dose di standardizzazione, potremmo presto sviluppare workflow complessi e dalla complessità computazionale elevata senza il bisogno di acquistare un supercomputer ma semplicemente usando un browser come interfaccia.

Ci dovremmo quindi abituare ad un mondo in cui i dati non si trovano più sulla nostra macchina e in cui la potenza di calcolo si acquista on-demand.

Le lezioni del Corso

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion