Bando di Seminario

Il GULCh (Gruppo Utenti Linux Cagliari), in collaborazione con la Facoltà di Informatica dell'Università degli Studi di Cagliari, organizza il seminario/dibattito dal titolo:

Parliamo di SOA (Service Oriented Architecture)

Relatori: Antonio Pintus, Marco Marongiu

Aula Magna di Matematica - Palazzo delle Scienze
Via Ospedale 72
Cagliari
19 Febbraio 2008 - Ore 18:30

Il seminario

Scopo del seminario è presentare le Service-Oriented Architecture (SOA), stimolando l'interesse dei partecipanti e la discussione su tutti gli aspetti di questo tipo di approccio, in modo che tutti i partecipanti (pubblico e relatori) possano andarsene dal seminario sapendo qualcosa in più.

Il seminario consisterà in una presentazione di circa 40 minuti e di un dibattito. Nella presentazione saranno illustrati i concetti generali alla base delle SOA, i contesti di utilizzo di queste architetture e i principali problemi introdotti dalla loro adozione. Verrà poi mostrato un semplice problema di esempio e un numero di approcci diversi per risolverlo, mostrando di ciascuno i vantaggi e gli svantaggi.

Terminata la presentazione si darà il via alla discussione; in essa, il ruolo dei relatori si limiterà allo stimolo e alla moderazione della discussione stessa.

Àmbiti di applicazione

L'applicazione delle SOA è in crescita in àmbito sia commerciale che scientifico.

In un ambito commerciale pensiamo ad esempio alla gestione di un ordine di acquisto che viene effettuato via web: viene richiesto l'acquisto e la spedizione di un certo bene, e la richiesta deve essere gestita su un certo numero di sistemi diversi, sia interni all'azienda che esterni (la base dati dei clienti, la base dati di inventario dei beni richiesti, la gestione del pagamento per carta di credito, la spedizione effettiva del bene richiesto, la fatturazione, la spedizione della fattura...).

In ambito scientifico pensiamo ad esempio ad esperimenti di bioinformatica che, utilizzando dati e procedure sia interni che pubblicamente disponibili, mirano a scoprire le correlazioni genetiche in una particolare patologia: il centro di ricerca A fornisce un servizio di consultazione di una propria base di dati genomici; l'ente B mette a disposizione dei servizi che consentono di effettuare una "feature selection" e "filtering" di questi dati per estrarre solo quelli relativi a particolari geni di interesse; l'ente C mette a disposizione dei servizi per l'applicazione di algoritmi generici di Data Mining (p.e.: Reti Bayesiane, Support Vector Machine (KVM), K-nearest neighbor...). A questo punto, un quarto laboratorio di ricerca, attraverso una composizione di questi servizi remoti, può costruire il proprio particolare esperimento creando un processo che: prelevi una base di dati attraverso il servizio A, effettui su di questa una "feature selection" attraverso il servizio B, e infine costruisca ed applichi ai dati filtrati una classificazione mediante un algoritmo fornito dai servizi C.

Le SOA

Esistono diverse definizioni di SOA, ciascuna delle quali si concentra su particolari aspetti del concetto generale. Nella definizione più ampia e generale possibile, SOA (Service-oriented Architecture) è un paradigma per la realizzazione e la manutenzione di processi implementati su sistemi distribuiti su vasta scala. Per estensione vengono chiamate SOA anche le architetture implementate sulla base di questo paradigma.

Le SOA trovano applicazione ovunque si abbia un insieme di sistemi eterogenei, le cui funzionalità devono essere armonizzate e coordinate insieme per creare dei servizi.

Spesso ciascuna di queste funzionalità è erogata da un sistema "legacy", ovvero un sistema dedicato, completamente scollegato dagli altri, che espone un proprio protocollo o API proprietario. Spesso sistemi diversi fanno capo per la loro gestione a gruppi diversi all'interno della stessa azienda; in alcuni casi si può trattare di servizi che sono completamente esterni e quindi fuori dal controllo dell'azienda stessa.

A tutto questo si aggiunga che di fronte alla necessità di costruire nuovi servizi sopra gli stessi componenti o con l'adozione di componenti ulteriori, o di far evolvere i servizi esistenti per implementare nuove funzionalità, bisogna poter rispondere con la massima rapidità possibile.

Diversi ordini di problemi si oppongono. L'eterogeneità e la decentralizzazione sono caratteristiche inevitabili di un sistema distribuito complesso; affidarsi ad un unico vendor non aiuta (un vendor sa fare bene un prodotto e meno bene un altro, e non ci si può affidare 100% ad uno solo senza rimanerne prima o poi scottati); a volte si rende necessario cambiare vendor o prodotti, e questo deve essere possibile, per quanto difficile, senza dover stravolgere completamente i processi aziendali.

Gli approcci normalmente utilizzati per gestire queste situazioni (p.e.: centralizzazione, omogeneità dei sistemi, omogeneità dei vendor e dei prodotti...) segnano il passo di fronte alla complessità dei problemi e all'impossibilità di far evolvere l'architettura in modo omogeneo secondo uno schema coerente.

Introducendo i concetti base di servizio, interoperabilità e loose coupling, il paradigma SOA fornisce gli strumenti teorici per gestire questa complessità, garantendo flessibilità e creando le condizioni necessarie per l'evoluzione.

È un approccio pervasivo, che entra a tutti i livelli: le parti in causa nella realizzazione di un servizio sono quella cosiddetta "IT", che gestisce materialmente hardware e sistemi, quella "Operativa" e di "Sviluppo" che crea e gestisce il software che implementa i servizi, e quella "Business" che descrive i flussi che devono essere implementati sul sistema. Tutte queste componenti devono essere organizzate non solo secondo le loro competenze, ma devono saper andare anche un pò oltre, perché solo avendo una comprensione almeno minima delle problematiche affrontate dagli altri settori si può arrivare a disegnare bene la propria parte. Insieme a questi team specializzati è necessaria anche la presenza di un team che, conoscendo i processi e l'architettura ad alto livello, sappia individuare e anche anticipare i problemi, rivolgendosi ai team specifici per la loro soluzione. È evidente che in tutte quelle realtà dove le "business unit" sono state concepite come camere stagne, le SOA entrano all'interno della stessa organizzazione del lavoro (e non solo della realizzazione dei servizi), e richiedono un cambiamento radicale.

Si ringrazia:

La Facoltà di Informatica dell'Università degli Studi di Cagliari

Tutte le persone che, con il loro aiuto, contribuiscono alla organizzazione dei seminari.


Antonio Pintus è laureato in Informatica e studente di Dottorato di Ricerca in Informatica con argomenti relativi a "Service Oriented Architecture". Lavora come Software Engineer presso il CRS4 (Centro di Ricerca, Sviluppo e Studi Superiori in Sardegna).

Marco Marongiu è laureato in Matematica. Lavora come System Administrator per Tiscali nella sede di Sa Illetta a Cagliari. Attualmente il suo compito principale è la gestione sistemistica dell'infrastruttura SOA di Tiscali, basata su prodotti TIBCO. Scrive inoltre su riviste e siti web specializzati, in Italia e all'estero.