Visualizzazione post con etichetta Integration. Mostra tutti i post
Visualizzazione post con etichetta Integration. Mostra tutti i post

sabato 15 novembre 2014

Cos'è un Web Service

Un Web Service (WS) è una funzionalità informatica offerta sulla rete da una applicazione che fornisce il servizio (sistema provider o server) ad uso di altre applicazioni che fruiscono del servizio stesso (sistemi requester o client)

Caratteristiche fondamentali di un WS sono:
  • essere raggiungibile via Web (rete Internet o Intranet) su un determinato indirizzo URI,
  • implementare una funzionalità auto-consistente,
  • avere un interfaccia documentata secondo delle specifiche standard, indipendente rispetto alla tecnologia con la quale è sviluppato e con la quale sono realizzati i client che lo invocano.
Solitamente quando si parla di Web Services si fa riferimento a servizi realizzati secondo quelli che sono gli standard più consolidati, cioè le specifiche HTTPSOAPWSDL, XML e XSD.
Tuttavia il termine generico WS può indicare anche servizi basati su altri tipi di protocolli, come ad esempio JMS per trasporto ed i sempre più utilizzati REST e JSON per il formato dati.

Rispetto ai meccanismi di comunicazione chiamati API (Application Programming Interface), i WS si differenziano perchè:
  • un API non è detto che rispetti specifiche standard di protocollo,
  • la fruizione di una funzionalità API da parte dei client, quasi mai è consentita mediante una interfaccia esposta sul web, ma tipicamente devono essere utilizzate delle librerie software specifiche rilasciate ad hoc, con tutte le limitazioni tecnologiche che ne conseguono,
  • un API solitamente da accesso a funzionalità atomiche interne ad un singolo sistema/applicazione mentre i WS realizzano anche processi di business distribuiti con workflows più articolati.
Fermo restando l'interfaccia di accesso unica che prevede dati di input e output, un WS può essere semplice oppure composto, nel caso in cui al proprio interno invochi altri servizi WS sequenzializzandoli o parallelizzandoli in un workflow (Service Orchestration).

Quando un contesto IT distribuito è formato da sistemi che cooperano con un approccio a servizi strutturato, si parla di SOA (Service Oriented Architecture).

Image courtesy of ddpavumba at FreeDigitalPhotos.net


Articoli Correlati

mercoledì 12 novembre 2014

Cos'è un Service Registry

Un Service Registry è una applicazione software, raggiungibile sulla rete Internet o Intranet, che elenca sotto forma di catalogo i Web Services disponibili, descrivendone le caratteristiche e le modalità di accesso.
Anche detto UDDI Registry, garantisce una più semplice interoperabilità tra i sistemi e facilita la SOA Governance.

UDDI (Universal Description Discovery and Integration) è un protocollo standard che consente la descrizione dei servizi, la loro localizzazione e le specifiche delle loro interfacce.
Le specifiche UDDI, arrivate alla versione 3.0, si fondano su un insieme di standard consolidati tra i quali HTTP, XML, XSD, SOAP e WSDL.

Il Service Registry viene utilizzato da:
  • Applicazioni Provider / Server per pubblicare le informazioni relative ai servizi che espongono,
  • Applicazioni Consumer / Requester / Client per ricercare quali sono i servizi disponibili e le relative modalità di invocazione.

Tipico paradigma Publish, Discover, Invoke


In un contesto architetturale SOA, il Service Registry è un elemento accessorio importante ma non fondamentale, infatti Provider e Consumer possono condividere le specifiche di integrazione anche in modo autonomo senza passare per il registry.
In altre parole, chi gestisce il sistema Provider può fornire il WSDL e la documentazione dei servizi direttamente ai responsabili dei sistemi Consumer che devono predisporre il software per le invocazioni.

Tuttavia la possibilità di far ricercare i servizi ai Client (Service Discovery) in modo autonomo, può risultare molto utile nel caso i Server decidano di far utilizzare dinamicamente le proprie funzionalità, consentendo a qualsiasi Client la ricerca autonoma dei servizi ed un interfacciamento più veloce e semplice agli stessi.

Un Service Registry tipicamente prevede:

  • una struttura dati in grado di memorizzare 
    • White Pages, informazioni riguardo ai provider che espongono ciascun servizio,
    • Yellow Pages, descrizioni e categorizzazioni arbitrarie dei servizi chiamate tassonomie,
    • Green Pages, informazioni tecniche per l'accesso ai servizi (wsdl, url);
  • un set di API (Application Protocol Interface) per consentire la pubblicazione e la consultazione delle informazioni da parte delle applicazioni esterne;
  • una web console di configurazione accessibile un amministratore/operatore che, in base alle permission che ha, può visualizzare, inserire, modificare e cancellare le informazioni.


Esistono Service Registry di mercato oppure Open Source tra i quali il più conosciuto ed utilizzato è sicuramente Apache jUDDI.



Articoli Correlati

venerdì 5 settembre 2014

Impatti delle applicazioni mobili sui sistemi server

Con l'aumento esponenziale delle APP e più in generale degli accessi al WEB dai dispositivi mobili, sono cresciuti enormemente i volumi delle connessioni e delle richieste verso i sistemi server che effettivamente detengono le informazioni. 



Per fare un esempio, se fino a pochi anni fa chi si collegava al sito del Meteo lo faceva al massimo una volta al giorno dal PC, oggi gli utenti che usano la specifica APP sullo smartphone sono tantissimi e lo fanno con frequenza molto più elevata.

Qualsiasi servizio o tipologia di informazione le aziende mettano a disposizione della propria clientela online, il numero delle transazioni client-server è decuplicato rispetto al passato.

Il trend è in continua ascesa, gli impatti sui sistemi di backend sono importanti e per reggere l'urto le aziende sono costrette a potenziare le proprie infrastrutture hardware ed implementare architetture software più efficienti.



A seconda delle specifiche situazioni, esigenze e disponibilità, si stanno mettendo in campo soluzioni di diversa tipologia (non esclusive).

Soluzione 1 - Potenziamento HW

La cosa che viene più facile ed immediata pensare è quella di incrementare le risorse HW (CPU, RAM, dispositivi di rete) dei sistemi impattati in modo da poterne aumentare performance e stabilità.
Per una attività di approvvigionamento HW, particolare importanza riveste la qualità del Capacity Plan, che deve essere fatto in modo accurato per evitare investimenti inutili, insufficienti o di corto respiro.

Pro:
  • Facilità di realizzazione (basta comprare ed installare)
  • Tempi di realizzazione
Contro:
  • Incrementare l'HW su un numero elevato di sistemi complessi ed eterogenei potrebbe rivelarsi molto costoso
  • Soluzione non risolutiva se in futuro dovesse aumentare il carico oltre quanto stimato nel Capacity Plan.



Soluzione 2 - Ottimizzazioni applicative 

La review funzionale dei sistemi, della architettura di integrazione ed un tuning sistemistico sono sempre attività opportune in questi casi.
Le ottimizzazioni possono essere apportate su più livelli:
  • Processi 
  • Software applicativo 
  • Configurazioni sistemistiche.

Pro:
  • Riprogettare i processi e rendere l'architettura applicativa dei sistemi maggiormente performante e scalabile, potrebbe consentire una corretta ripartizione del carico sulle risorse a disposizione, quindi di fatto risolvere il problema
Contro:
  • Rivedere processi e apportare modifiche al software applicativo potrebbe rivelarsi non fattibile o molto costoso
  • Non sempre le architetture dei sistemi si prestano ad essere estese in modo da implementare correttamente le nuove funzionalità 
  • I tempi di realizzazione sono legati alla quantità ed alla tipologia degli interventi.

Soluzione 3 - Introduzione di un layer applicativo di Data Caching

In caso i volumi siano molto elevati, la soluzione migliore prevede l'introduzione all'interno dell'architettura IT di un nuovo layer applicativo (Data Cache Service Layer), un sistema molto performante in grado di recuperare inizialmente dai sistemi server tutte le informazioni necessarie, memorizzarle all'interno di una propria cache e rispondere velocemente ai client.

Con questa soluzione, le richieste provenienti dai client non arrivano mai ai sistemi server ma vengono gestite direttamente dal Data Cache Service Layer.

Accorgimenti necessari:
  • implementare gli opportuni meccanismi di aggiornamento delle informazioni in caso vengano variate, per mantenerle sempre allineate tra i sistemi e la cache
  • strutturare internamente alla cache un Data Model adatto alla tipologia dei dati che si trattano ed alle modalità di interrogazione da parte dei client.




Pro:
  • Performance al top (non si perde tempo ad interrogare i sistemi di backend ma le informazioni sono già disponibili nella cache)
  • Nessun potenziamento HW sui sistemi
  • Ottimizzazione SW dei sistemi non necessaria
  • Massima predisposizione se in futuro dovesse aumentare ulteriormente il carico (basterà adeguare il Data Cache Service Layer senza dover toccare tutti i sistemi di backend)
Contro:
  • Necessario un investimento iniziale
  • Tempi e costi di realizzazione da valutare a seconda della complessità delle informazioni, dei sistemi e dei processi


Articoli Correlati



venerdì 21 febbraio 2014

Il concetto di Common Data Model (CDM)

I dati sono la componente più importante di un qualsiasi sistema o architettura informatica.

Una delle maggiori criticità che si riscontrano in un contesto IT di tipo enterprise, è la complessità dell’integrazione tra sistemi che hanno modelli dati e linguaggi di comunicazione eterogenei anche dal punto di vista semantico.
La diversità tra i formati dati dei sistemi coinvolti nei processi di business è uno degli aspetti principali da considerare nell'adozione di una architettura di integrazione (EAI) con approccio a servizi (SOA).

Avere interfacce di comunicazione non generalizzate, ma specifiche per singolo sistema o addirittura singolo processo, comporta un aumento della complessità generale con conseguente incremento dell'effort necessario per ciascun nuovo sviluppo o intervento di manutenzione evolutiva. Infatti, per ciascun flusso dati che viene scambiato è necessario implementare una differente trasformazione, con il rischio oltretutto di mal interpretare il vero significato dell'informazione che viene veicolata.

Per mitigare questo problema e rendere l’integrazione dei dati più efficiente dal punto di vista tecnologico ed economico, un approccio efficace è quello di utilizzare un Common Data Model, noto anche come CDM.

Un CDM viene definito per rendere univoca la comunicazione tra sistemi eterogenei in un comune ambiente di business; è un formato dati standardizzato e condiviso, utilizzato per facilitare l'integrazione tra diverse aree applicative e quindi lo scambio dati tra di esse.

Il CDM è un modello predefinito che esprime la rappresentazione logica, semantica e le relazioni dei dati a cui ciascun sistema deve far riferimento per comporre ed interpretare nel modo corretto le informazioni che invia e riceve.



La definizione di un CDM può rivelarsi un'attività lunga ed articolata e va fatta con la massima attenzione tenendo in considerazione tutti i requisiti e le specificità dei processi di business e dei sistemi coinvolti.

Come base di partenza per definire un nuovo CDM, una delle possibilità può essere quella di estendere il formato dati utilizzato dal sistema più importante tra quelli coinvolti apportando le opportune modifiche, ma forse la più valida alternativa è quella di cercare se esiste già un modello standard per il tipo di contesto a cui si fa riferimento.

Per alcuni dei più importanti ambiti di business (es. Telecomunicazioni, News, Pubblica Amministrazione, Sanità, ecc.) infatti sono disponibili dei CDM più o meno consolidati che documentano il formato dati "standard". Tali CDM cercano chiaramente di essere onnicomprensivi e quindi è quasi sempre opportuno ritagliarli per le proprie necessità.

Gli strumenti per descrivere un CDM, tipicamente sono:

  • Grafici relazionali (entità/relazioni);
  • Grafici gerarchici;
  • Markup languages (xml, xsd, uml);
  • Documenti e tabelle descrittive dei vari campi che compongono il data model.



Articoli correlati:

martedì 24 settembre 2013

Dalla Spaghetti Integration alla SOA di ultima generazione

Spaghetti Integration

Nell’ impresa moderna, la gestione dei dati associati al business e' distribuita su un numero variabile di sistemi informativi aziendali (EIS - Enterprise Information Systems).
Si definisce EIS qualsiasi sistema aziendale che comprende dati, informazioni e processi necessari all'azienda per la gestione del proprio business.
I sistemi EIS:
  • Gestiscono aree indipendenti e separate di informazioni aziendali (CRM, OM, Marketing, ERP, Finance, Billing, Portal, SelfCare...)
  • Tendono ad espandersi in modo spesso disordinato e scorrelato
  • Sono estremamente eterogenei tra loro in termini di: rappresentazione dei dati, modellizzazione dei processi aziendali, interfacce.


I primi tentativi di integrazione, originati dalla necessita' di stabilire una interconnessione ad-hoc point-to-point tra sistemi, hanno portato a un modello di integrazione povero e inutilmente complesso, soprannominato Spaghetti Integration.


Riassumendo, gli aspetti negativi della Spaghetti Integration sono:
  • Specifiche di integrazione definite in modo disordinato dai referenti dei singoli sistemi (gruppi di lavoro differenti) e non seguendo direttive comuni
  • Molteplicità di protocolli e dI tecnologie utilizzate
  • Lentezze nello sviluppo e nella manutenzione delle integrazioni per i flussi Enterprise (processi dati che impattano su diversi sistemi della architettura IT)
  • Difficoltà nel controllo di processi e flussi che attraversano la catena dei sistemi
  • Impossibilità di avere una governance centralizzata.


Enterprise Application Integration

L’ Enterprise Application Integration (EAI), il cui Il concetto chiave e' la centralizzazione delle comunicazioni e delle funzionalita', e' il primo approccio alla soluzione per una integrazione corretta ed efficente.
Questo approccio, la cui diffusione ha inizio nella seconda metá degli anni 90, prevede un layer applicativo centrale (Middleware) che funge da intermediario nelle comunicazioni tra i sistemi e fornisce servizi MOM (Message Oriented Middleware) di piattaforma di base (messagingload balancing, fault tolerance, transazionalita'...).
I sistemi risultano in questo modo debolmente accoppiati, in quanto non devono piu' comunicare direttamente l'uno con l'altro, ma unicamente tramite un Broker di integrazione preposto al routing dei messaggi (modello hub-and-spoke).


Al fine di razionalizzare il numero e il tipo di connessioni tra i sistemi e, conseguentemente, le attivita' aziendali, i principi cardine dell'EAI sono i seguenti:
Integrazione dei processi di business
  • Transazioni di business che coinvolgono molteplici EIS devono essere trattate come unita' logiche
  • Per l'implementazione di tali transazioni di business, deve essere possibile definire Workflow complessi che coinvolgano molteplici EIS
  • Eventi di business devono poter scatenare azioni globali che si estendano oltre il dominio del singolo EIS
Integrazione delle applicazioni
  • Le funzionalita' di business implementate da un'applicazione devono essere esposte e rese disponibili alle altre applicazioni
Integrazione dei dati
  • I dati devono essere condivisi e distributi attraverso molteplici EIS differenti
  • Devono essere garantiti l'allineamento e la consistenza dei dati
Con l'adozione da parte delle imprese di metodologie e tecnologie di integrazione EAI, si riscontrano i seguenti benefici:
  • Razionalizzazione dei flussi e degli sviluppi
  • Maggiore disponibilita' delle informazioni distribuite attraverso le isole applicative aziendali
  • Risposte piu' rapide alle nuove opportunità di business con conseguente riduzione del Time-to-Market
  • Maggiore efficienza e migliore qualità dei servizi offerti
  • Maggiore controllo sui processi di business
  • Un supporto piu' efficace ai processi decisionali aziendali
  • Un aumento dell'efficienza dei processi aziendali nel loro complesso. 


Da EAI a SOA (Service Oriented Architecture)

L'approccio EAI si e' dimostrato vincente nel fornire soluzioni efficienti di integrazione, ma esistono alcune limitazioni nell'architettura EAI che ne limitano la capacita' di fornire una soluzione completa al problema dell'integrazione aziendale:
  • Architettura monolitica: soluzione server-centrica, centralizzazione dei processi di integrazione, architettura Hub-and-Spoke
  • API proprietarie, formati chiusi/non-standard
  • Modalitá di integrazione vincolata alle caratteristiche del MOM utilizzato
  • Architettura chiusa verso il mondo esterno (business partner, clienti), difficilmente accessibile dalla extranet
  • Soluzione che lega le aziende a prodotti specifici e soluzioni proprietarie non standard offerte dai vendor EAI
  • I progetti di integrazione in StartUp hanno una lunga durata (20+ mesi) per introdurre il middleware nella architettura generale ed adeguare tutti i sistemi.
A partire dai primi anni 2000 all'interno delle aziende con una IT complessa ed evoluta, si è iniziato a parlare di integrazione di sistemi e processi mediante un approccio a servizi, ma solo qualche anno più tardi si realizzeranno soluzioni di buon livello.

La SOA (Service Oriented Architecture) separa le funzionalita' di un EIS raggruppandole in un insieme di componenti ad alto livello che espongono "porzioni" di logica di business sotto forma di servizi accessibili attraverso interfacce documentate e tecnologie standard. Quindi non più una metodologia di integrazione basata su un middleware tecnologico unico che veicola le informazioni, ma un approccio più Open, basato sul rispetto degli standard,  quali XML, JSON, Web Services, Http/SOAP, REST, J2EE, etc., che consente il disaccoppiamento (decoupling) dei protocolli di comunicazione e la fruizione di servizi che implementano workflow di processi più o meno complessi.

La messa in opera della SOA in un contesto IT Enterprise prevede, oltre alla adozione di best practices e standard, la messa in campo di alcuni moduli applicativi fondamentali di cui il più importante è l'ESB (Enterprise Service Bus).


L'ESB rappresenta una nuova tipologia di BUS che combina Web Services, messaggistica e servizi di integrazione di base quali la trasformazione dati, il disaccoppiamento dei protocolli e il content-based routing (routing su base contenuto).
La sua architettura lo rende indipendente dagli Application server, MOM e protocolli utilizzati, pertanto risulta particolarmente adatto a costituire in modo progressivo la struttura portante di una nuova integrazione orientata ai servizi  che nel contempo preservi, interoperando con esse, le risorse IT pre-esistenti quali applicazioni legacy e piattaforme di middleware eterogenee.

L'ESB permette di adottare una strategia di integrazione progressiva che fornisce la possibilita' di costruire, in maniera incrementale e a costi minori, una rete di integrazione aziendale.
Altri strumenti abilitanti per una architettura SOA completa sono:
  • BPM  (Business Process Management)design e orchestration dei servizi come workflow
  • BAM (Business Activity Monitoring)monitoring dei servizi e dei processi di business
  • Service Registry, registro dei servizi esposti dall'ESB con definizione dei contratti di protocollo (wsdl).


Una architettura IT orientata ai servizi, flessibile e disaccoppiata, riduce i tempi e i costi di manutenzione dei progetti, nonche' le necessita' di customizzazione ed evoluzione degli stessi a fronte di nuovi requisiti di integrazione.
I principali vantaggi per l'azienda sono:
  • Razionalizzazione delle informazioni e dei processi nell'area aziendale
  • Riutilizzo delle funzionalità/servizi
  • Aumento della efficenza/qualita' del servizio
  • Centralizzazione della Governance
  • Drastica diminuzione del Time-To-Market
  • Riduzione del TCO (Total Cost of Ownership) grazie alla dismissione progressiva di middleware vendor locked.


Comparativa sui costi


Il grafico illustra le differenze di costo dei diversi approcci nelle varie fasi di vita di un progetto software.
Risulta evidente come un' approccio Custom point-to-point abbia dei bassissimi costi iniziali per realizzare le prime integrazioni tra i sistemi ma poi con il passare del tempo aumenta la complessità di manutenzione ed evoluzione con conseguente aumento di costi e tempi.
Un approccio di tipo EAI invece, similmente a quello basato sull'utilizzo da parte dei sistemi di Web Services standard ma senza una infrastruttura ESB, ha dei costi di realizzazione iniziale medi, garantisce successivamente dei costi abbastanza contenuti nella manutenzione della infrastruttura ma necessita di un effort con dei picchi molto alti per la realizzazione di nuovi flussi Enterprise o la modifica di processi già esistenti,
Utilizzando i paradigmi e gli strumenti SOA invece si rileva un impegno considerevole nell'introduzione e sviluppo iniziale della infrastruttura di base, ma un progressivo risparmio nelle fasi successive dovuto alla capacità di riutilizzo dei servizi (Service Reusability) e della loro orchestrazione (Service Orchestration).

La SOA di ultima generazione

Nel periodo che va dal 2004 al 2010, un po' tutte le aziende medio-grandi, con a disposizione un parco di sistemi informatici importante, ha intrapreso un percorso di adeguamento dell'architettura dei sistemi ai paradigmi della SOA.
Nel tempo la Service Oriented Architecture è diventata quasi un tormentone, passando da essere un "must have" ad una locuzione passata un po' di moda.
Questo ciclo di vita è stato storicamente percorso da gran parte delle proposte tecnico/informatiche che, da essere spinte commercialmente, adottate con grandi sforzi economici e pubblicizzate oltremodo in alcuni casi anche in contesti non idonei, diventano soluzioni un po' dimenticate, anche se mai completamente portate a termine per arrivare a beneficiarne dei vantaggi.
In un mondo IT che almeno in apparenza evolve a grandi velocità, diventa fondamentale per continuare ad attrarre investimenti, la proposizione continua di nuove soluzioni agganciate a slogan in voga che riescono a smuovere almeno un minimo il mercato anche in ambiti enterprise ormai consolidati.
Tuttavia di fatto la SOA resta l'approccio più valido per l'interpretazione dei requisiti di integrazione e di gestione dei processi di business  anche se nel maggior parte dei contesti non è stata adottata con una pervasività ed un livello di maturità sufficiente; il termine "servizio" in ambito IT è diventato sinonimo di funzionalità offerta sulla rete in un contesto di cooperazione applicativa tra i sistemi.

Negli ultimi anni, grazie al perfezionamento degli strumenti e ad una maggiore esperienza maturata da Solution Architect e System Integrator, è aumentata la capacità di rilasciare soluzioni stabili, proponendo all'interno della infrastruttura di base della SOA anche degli "accessori" utili a migliorare le performance di risposta ai servizi.

Data Caching

Con il Data Caching la piattaforma di integrazione ESB si dota anche di funzionalità di memorizzazione in cache dei flussi dati provenienti dai sistemi client e server, in modo da velocizzare quando possibile l'accesso alle informazioni ed i tempi di riposta ai servizi.

La memorizzazione dei dati viene demandata a layer applicativi fortemente scalabili in cache chiamati InMemory DBData Grid Memory o Data Service Layer che si occupano anche di gestire l'invalidazione dei dati stessi, secondo delle policy pre-definite, ed il loro ricaricamento dai sistemi owner mediante interazione con i servizi di integrazione dell'ESB.



Rule Engine (motore a regole)

Un altro modulo applicativo accessorio che sempre più spesso viene affiancato ai componenti infrastrutturali della SOA è il Rule Engine: motore a regole configurabile ed estendibile in grado di interagire con i servizi ESB per la interpretazione di algoritmi complessi applicati ai dati. Avere un Rule Engine risulta molto utile quando è necessario implementare operazioni di routing numerose e complesse difficilmente configurabili all'interno dell'ESB o del BPM.


Articoli correlati:

SOA Overview

Al fine di ottimizzare i costi e di migliorare la gestione dell’ IT, le aziende guardano, sempre più con maggiore interesse, alle problematiche di gestione ed ottimizzazione dei processi aziendali.
L’attuale modello di riferimento per l’implementazione e la gestione dei Business Process è il modello SOA (Service Oriented Architecture), particolarmente utile alle aziende con un portafoglio di applicazioni complesso dal momento che agevola l’interazione tra le diverse realtà aziendali permettendo alle attività di business di sviluppare processi efficienti e nel contempo di aumentarne la flessibilità e l’adattabilità.



Il modello SOA è in grado di raccogliere le sfide che l’IT riceve quotidianamente dalle nuove forme ed esigenze di business, fornendo risposte concrete e rapide al fine di ottenere più efficienza, flessibilità e qualità con meno risorse, maggiore allineamento col business, migliore consistenza e qualità dei dati e un rapido “time to deploy” delle nuove applicazioni.
In tale contesto i System Integrator collocano la propria offerta mettendo a disposizione del mercato la propria competenza derivata dalla conoscenza di prodotti, framework, tecnologie, standard, best practices e dalle esperienze acquisite.

SOA REFERENCE MODEL

A livello di Information Technology, la SOA è un’infrastruttura software che consente ad applicazioni eterogenee ed a sistemi diversi di implementare processi di business, scambiare dati ed eseguire transazioni tramite l’utilizzo di componenti software (servizi) con caratteristiche ben definite, orientate al riutilizzo ed alla integrazione. Tali servizi sono esposti con modalità standard risultando così fruibili da qualsiasi utilizzatore (service consumer) che si interfacci, nelle modalità richieste, al fornitore di servizi (service provider).
Nell’ambito di un’architettura SOA è possibile modificare, in maniera semplice, le modalità di interazione tra i servizi, la combinazione nella quale essi risultano utilizzati, così come risulterà agevole aggiungerne di nuovi o modificarne i processi per rispondere alle specifiche esigenze di business. In tale scenario il processo di business non sarà più vincolato ad una specifica piattaforma o applicazione ma potrà essere considerato come un componente di un processo più ampio e quindi riutilizzato o modificato.
Il modello SOA nasce dall’idea di realizzare ed esporre servizi offerti da un’organizzazione in modo che siano accessibili in modo automatico, uniforme e con protocolli standard e aperti.

APPROCCIO METODOLOGICO

La definizione e la realizzazione di Progetti SOA prevedono soluzioni personalizzate che si adattano di volta in volta alle specifiche esigenze del Cliente, mediante l’utilizzo di tre diversi approcci strategici:
Top-Down: il focus è posto sull’analisi dei processi di business, per poi identificare i servizi attraverso raffinamenti successivi. Tale approccio è quello più corretto partendo da una situazione scratch.
Meet-In-The-Middle: il focus è posto sull’analisi della situazione attuale (applicazioni as-is) per poi raggiungere il grado di astrazione necessario per l’integrazione dei processi. Tale approccio cerca di integrare la SOA con applicazioni sviluppate in precedenza: questo è il caso più frequente che prevede di operare su applicazioni esistenti.
Bottom-Up: il focus è posto sull’analisi della definizione dei componenti per poi disegnare i servizi. Tale approccio rivela una mancanza del grado di astrazione necessario per la definizione di servizi realmente riusabili e non è quindi consigliabile.


Con l’approccio SOA è possibile:
  • Garantire l’allineamento tra le funzioni IT e quelle di Business grazie alla definizione di soluzioni infrastrutturali in grado adeguare l’IT dinamicamente alle diverse esigenze di Business rispettando gli SLA concordati,
  • Abilitare l’erogazione di servizi IT in modalità on demand sia verso il mercato interno che esterno,
  • Ridurre il Time-to-Market per lo sviluppo di nuovi servizi di Business mediante i concetti di riutilizzo delle risorse introdotti dall’Utility Computing e dalla SOA,
  • Ridurre il Total Cost of Ownership (TCO) dell’infrastruttura grazie all’introduzione di nuovi strumenti che abilitano la standardizzazione dei processi di comunicazione,
  • Ridurre il numero di sistemi grazie alla possibilità di consolidare su un unico sistema più applicazioni sulla base del concetto di condivisione introdotto dall’integrazione,
  • Offrire elevati livelli di disponibilità e scalabilità per mezzo di tecnologie innovative che permettono la veloce allocazione di risorse infrastrutturali ove necessario,
  • Ridurre il costo dell'intero ciclo di vita del software e della evoluzione dei flussi di business.

FASI DI REALIZZAZIONE

L’adozione di una architettura SOA oriented, all’interno di una infrastruttura IT complessa già esistente, va pianificata progressivamente in un percorso che prevede un punto di partenza nel momento in cui ci si trovi di fronte ad un caso concreto.
Le fasi operative/progettuali previste sono:
SOA Assessment: mediante lo studio dei processi di business sono individuate nel dettaglio le esigenze del Cliente ed è rilevato il grado di maturità tecnologica dell’organizzazione attraverso l’utilizzo del SOA Maturity Model in modo da garantire opportuna aderenza alla SOA,
SOA Solution Planning: identifica lo scenario applicativo SOA verso cui evolvere e si pianificano tempi e attività di implementazione,
Service Management: attività di service analysis, service design, build, testing, deployment dei servizi, workflow e applicazioni sulla base di quanto identificato nelle fasi precedenti,
Integration Management: con il rilascio in produzione di sistemi operativi, middleware, applicazioni si possono realizzare infrastrutture efficienti reattive e correlate alle reali esigenze del Cliente,
SOA Governance: attività di controllo dei servizi SOA che prevede:
  • Governance Process Definition
  • Governance Process Execution
  • Governance Process Monitoring
per garantire solidità alla struttura del processo decisionale, gestione delle relazioni tra servizi e componenti e il rispetto della conformità delle normative vigenti, degli standard e delle procedure stabilite dalle aziende. La Governance rappresenta la chiave di successo delle iniziative SOA in quanto permette di verificare costantemente l’affidabilità dei servizi e la coerenza con le attività ed i processi che i servizi devono supportare, riducendone in tal modo sia i rischi che i costi.
In un momento in cui la concorrenza ed i vincoli normativi si intensificano nel mercato dei servizi finanziari, le installazioni SOA stanno arrivando a un livello in cui la loro governance è fondamentale per la gestione dei servizi ed il loro ri-utilizzo durante l’interno ciclo di vita SOA. Dopo la fase iniziale di adeguamento al modello SOA, il focus di un’azienda non è più rivolto a realizzare servizi ma piuttosto a “governarli” in maniera efficiente e performante: il processo di “governance” è essenziale per il successo della SOA.
In quest’ottica i modelli SOA devono essere fortemente orientati alla Governance, basandosi sulla riusabilità, sulla riduzione della complessità del portafoglio applicativo eliminando le funzionalità ridondanti, sulla messa in sicurezza delle applicazioni integrate che vengono usate da un numero sempre crescente di utenti, sull’assicurazione del rispetto dei Service Level Agreements (SLAs).

DIRETTIVE E STRUMENTI

L’ architettura SOA è basata sui seguenti elementi:

  • Standard aperti: per poter operare in ambienti multipiattaforma è necessario utilizzare standard aperti quali XML, WSDL e WS-Security (WSS),
  • Modularità: è necessario individuare il corretto equilibrio tra i servizi utilizzabili nelle funzioni comuni ed i servizi dedicati a processi specifici,
  • Contratti di servizio: WSDL (Web Services Description Language) è la specifica standard per la creazione di contratti per i Web Services
e sui seguenti strumenti applicativi:
  • Service Registry/Repository: strumento che elenca e descrive i servizi disponibili e le modalità di accesso agli stessi. Garantisce una più semplice interoperabilità tra i sistemi e facilita la SOA Governance,
  • ESB (Enterprise Service Bus): layer applicativo che implementa la pubblicazione dei servizi e le interfacce di integrazione agli stessi da e verso i sistemi esterni. Prevede adattatori per i sistemi legacy, orchestrazione di servizi per la definizione delle regole di business, componenti per autorizzazione e autenticazione (security), trasformazione dati e capacità di monitorare i service-level agreement (SLA),
  • BPM (Business Process Management): layer applicativo che abilita l’implementazione, la gestione e l’orchestrazione dei workflow e dei processi di business di più alto livello.
  • BAM (Business Activity Monitoring): strumento il monitoring dei servizi e quindi dei processi di business,
  • Data Management: piattaforma di gestione del Common Data Model in ottica SOA e dei servizi di trasformazione e validazione dati come sottoservizio dell’ESB; lo scopo primario è il governo centralizzato dei metadati aziendali basato su standard.




Articoli correlati: