Mi capita sempre più spesso di imbattermi nella classica domanda : ma quale è la differenza tra SaaS , SOA e S+S e qual’è l’impatto e l’opportunità per un azienda ?

Effettivamente si sta alimentando un certo dibattito attorno a queste terminologie che sta generando visioni diverse. Dietro a questi termini ed alla discussione attorno ad essi, si mette comunque in evidenza Il fatto che la trasformazioni di Internet verso un piattaforma di servizi comincia effettivamente a diventare una realtà.

Il fattore in comune ai differenti modelli che sono dietro gli acronimi di cui stiamo parlando è uno solo: stiamo parlando di SOFTWARE.

Proviamo a vedere le differenze tra questi modelli di dal punto di vista di una azienda e partiamo cercando di spiegarne il significato con dei semplici esempi.

Quando parliamo di SOA parliamo essenzialmente di un modello per la costruzione, l’erogazione, la composizione e l’utilizzo di servizi  che sono costruiti con del software interno di una azienda con lo scopo di creare un’infrastruttura applicativa agile, in grado di adattarsi rapidamente al cambiamento dei processi aziendali .

I pilastri fondamentali per implementare una architettura di questo tipo sono quelli che abbiamo nella seguente figura:

Quando parliamo di SaaS ci riferiamo essenzialmente ad una modalità attraverso la quale viene effettuato il delivery di software come un servizio. Si tratta di un modello che prevede l’utilizzo di Internet come canale per portare direttamente attraverso il browser delle funzionalità applicative direttamente sul PC client . Esempio classico di questo modello sono quelle applicazioni fornite da ISV direttamente attraverso Internet con un modello di pagamento a noleggio o con l'inserimento di pubblicità. Uno dei più noti produttori di questo tipo di applicazioni è salesforce.com che tra i primi ha implementato con successo questo modello. Per certi versi si tratta di una evoluzione del modello di hosting ASP di alcuni anni fà, anche se costruire applicazioni con questo approccio ha un profondo impatto sull’architettura con cui vengono sviluppate che è completamente diverso, ma in questo caso mi concentro essenzialmente sul fatto che si fornisce ad un client software come servizio direttamente via browser senza software locale.

Il limite di questo modello e lo stesso che si aveva nella prima generazione del Web, si ottiene un elevatissimo isolamento rispetto alle altre applicazioni che vengono utilizzate dal client o dalla intranet in cui il client è contenuto.

Con questo tipo di modello il servizio fornito è difficilmente componibile con il resto dei processi di cui l’azienda ha bisogno e la situazione è quella rappresentata nel seguente grafico:

Attorno a questo modello così come è accaduto per il mondo del Web su Internet, la necessità di superare il netto isolamento che ciascuna applicazione browser based genera rispetto alle funzionalità erogate, ha portato lentamente i siti ed anche le applicazioni SaaS ad erogare le loro funzionalità anche attraverso l’esposizione diretta di funzionalità applicative, di dati o di componenti di interfaccia utente che possono essere inserite in altre pagine web.

Pensando alla nostra ipotetica azienda e immaginando che la stessa acquisti con questa modalità un servizio, ad esempio il CRM. Le informazioni contenute nel CRM relative hai clienti restano accessibili solo attraverso l’interfaccia browser dell’applicazione, mentre diventa assolutamente necessario , ad esempio:

- agganciare il CRM alla parte di applicazioni collegate call center,

- agganciare i dati dei clienti alle applicazioni con cui ad esempio raggiungiamo i clienti attraverso siti di commercio elettronico,

- integrare le informazioni del CRM con i dati di vendita del nostro ERP

Per rispondere a tutte queste esigenze affianco all’interfaccia browser , vanno implementate una grandissima quantita di funzionalità direttamente integrabili e consultabili da altre componenti software. Se nello scenario della nostra azienda che utilizza il CRM SaaS si aggiungono ad esempio altre applicazioni offerte da altri fornitori con la stessa modalità SaaS , ad esempio l’ERP, il meccanismo di isolamento aumenta e la necessità di flessibilizzare con l’esposizione di servizi che possano poi essere tra loro essere composti aumenta ancora di più. In questo caso una componente terza di software locale al client o alla intranet che faccia da compositore diventa fondamentale ed ecco che entra in gioco il concetto di Software + Services. Ovviamente sto semplificando ma lo faccio per cercare di spiegare con semplicità l’approccio. Evidentemente la componente di aggregazione potrebbe a sua volta essere un servizio esterno all'azienda offerto da una specifica tipologia di fornitore, ma questo tipo di scenario è applicabile essenzialmente su aziende di dimensioni estremamente ridotte.

Dal punto di vista dell'azienda utilizzare questo tipo di soluzione significa essenzialmente  l’implementazione di una architettura SOA con i principi di cui abbiamo parlato sopra  che tenga in considerazione gli aspetti collegati alla necessita di comporre e consumare servizi che non necessariamente sono all’interno della rete aziendale stessa . In questo modo l’architettura vista prima per SOA si estende tenendo conto dei servizi esterni e diventa la piattaforma di integrazione e composizione dei servizi che possono poi essere consumati di client aziendali:

Tornando al piccolo grafico che avevamo rappresentato prima la situazione si trasforma come di seguito:

L’impatto sulla architettura dell’azienda è significativo sia in termi di possibilità sia ovviamente in termini di architettura e vincoli rispetto a diversi aspetti di questa che vediamo riepilogati nella seguente figura

Si va dall’evidente impatto sui sistemi di Delivery e di management agli aspetti di sicurezza e tutte le tematiche di federazione in questa area dove autenticazione e autorizzazioni ed i nuovi standar WS-Federation e le tematiche dell’ Identity Metasystem sono alla base della possibilità di abilitare la possibilità di abilitare la composizione di servizi locali e servizi offerti da differenti siti in Internet.

In questo modo la distanza tra i servizi ospitati all’esterno dell’azienda ed i servizi implementati con software locale si annulla creando di fatto una nuova piattaforma che crea un continuo tra le due tipologie permettendo la costruzione di nuove ed interessanti applicazioni.

I servizi offerti da questa web platform che si sta costruendo in Internet possono essere raggruppati essenzialmente in 3 categorie fondamentali :

- Building Blocks Services : Che forniscono delle funzionalità di base che possono essere facilmente composte all’interno di altre soluzioni. Esempi classici il servizio di Alert del Messenger, i web service di virtal earth , il servizio di streaming di Silverlight , Windows Live ID ed i servizi di Windows ive in generale, etc

- Finished Services: Che offrono delle vere e proprie funzionalita applicative complete. Ad esempio

- Attached Services: servizi direttamete collegati ad un software installato localmente. Come esempio possiamo citare Windows Update come servizio collegato a windows,

Nasce così un nuovo modello in cui le aziende possono estendere e distribuire tra investimenti in software interno e noleggio di servizi esterni combinado Software e Servizi o per meglio dire Software e Software as a Service.