ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA FACOLTA’ DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria Informatica Reti di Calcolatori L-S 21 Giugno 2006 ORCHESTRAZIONE DI SERVIZI WEB Progetto di: CUTILLO LUCA DELLE NOCI DAVIDE GIROLAMO DI LORETO PATRICK Relazione di: DELLE NOCI DAVIDE GIROLAMO MATR: 0000212479 ANNO ACCADEMICO 2005/2006 Indice 1. Abstract…………...………………………………………………. 3 2. Introduzione……………………………………………………… 3 3. Definizione dei web services e pubblicazione…………………… 4 4. Definizione del processo master………………………………… 6 5. Servizi aggiuntivi………………………………………………... 8 6. Conclusioni e sviluppi futuri……………………………………… 9 7. Riferimenti………………………………………………………... 10 1. Abstract L’orchestrazione dei servizi web rientra nel settore noto come Business process management. Questo si pone, appunto, come obiettivo la possibilità di gestire diversi servizi web, intesi come web services, al fine di poter coadiuvare tutte le funzionalità di tali servizi, tramite un unico processo, che potremmo chiamare “processo master”, in modo efficiente e centralizzato. Per soddisfare tale obiettivo, il progetto è stato suddiviso in tre macrocategorie, ciascuna assegnata ad ogni singolo componente del gruppo, al fine di una realizzazione più gerarchica e efficiente, e solo alla fine, in fase di definizione del processo master, ha visto interessati tutti i membri in un lavoro di gruppo. 2. Introduzione Il Business Process Management definito in questo processo è volto all’orchestrazione di vari web services. Ma, prima di procedere con la definizione di un processo generale, è opportuno definire le motivazioni che spingono alla composizione e quindi orchestrazione di più web services. In particolare, ogni web services, rappresenta un servizio fruibile dalla rete, dal più semplice al più complesso, prevedendo quindi un’architettura di base, nota come client/server. A tal proposito, quindi, risulta chiaro, che il server sarà quello che offre tal servizio, e il client quello interessato ad utilizzarlo. Definito ciò, si denota subito la possibilità di utilizzare tale struttura in diversi settori commerciali, risalendo così a quelle tipologie di interazioni note nella letteratura informatica come Business-to-business(B2B), o business-to-consumer (B2C), ovvero interazioni tra due organizzazioni commerciali, o tra un organizzazione e un consumatore finale. Ma, allora risulta evidente, come componendo tra loro diversi servizi, tutti in uno, si ottiene così una migliore offerta da parte di una qualunque organizzazione, permettendo così l’utilizzo di servizi più competitivi, una riduzione dei costi e quindi una maggior soddisfazione del cliente, che sia esso impresa o consumatore privato. Quindi, l’esigenza di coordinare tra loro le diverse attività svolte dai vari attori del processo master, per il raggiungimento di un obiettivo comune, porta alla definizione di un flusso di lavoro, detto workflow management, che permette così l’interazione con i diversi servizi da parte di un unico processo. Inoltre, a seconda della tipologia di interazione tra client/server, in base a quelle su descritte, si delineano diversi requisiti di qualità, con differente complessità, che vanno aggiunti e definiti sia per i singoli servizi, che per il processo master. Tutti questi aspetti saranno analizzati in seguito, rispettando l’ordine di esecuzione di sviluppo del progetto. Qui di seguito si riporta un esempio di composizione e orchestrazione di servizi web nel caso più generale, dalla quale si partirà per analizzare step by step i diversi attori. Introduzione 4 Figura 1 3. Definizione dei web services e pubblicazione Il primo passo per arrivare a definire il processo master, è la progettazione e realizzazione dei singoli attori principali, ovvero i web services. Per soddisfare tale obiettivo, a partire dai requisiti richiesti dal progetto si è scelto di definire come processo principale, un servizio di prenotazione di pacchetti turistici. Questo ha comportato quindi, una prima suddivisione del progetto, in diverse categorie, così come accennato precedentemente, ovvero: Realizzazione di un servizio di prenotazione dei voli; Realizzazione di un servizio di prenotazione degli hotels; Realizzazione di un servizio di prenotazione per il noleggio delle auto. Ciascuna categoria è stata assegnata ad ogni singolo componente del gruppo. Io personalmente, mi sono occupato della definizione del web services per fornire un servizio di prenotazione in loco di un veicolo, in modo tale da dar la possibilità ai turisti di potersi spostare, una volta raggiunta la destinazione turistica. Definizione dei web services e pubblicazione 5 La logica utilizzata è stata quella di imporre il vincolo che un turista possa spostarsi con il veicolo noleggiato solo all’interno delle nazione di arrivo, perché risulterebbe alquanto inefficiente e dispendioso raggiungere una meta turistica internazionale con un veicolo. Ciò non toglie in ogni caso la possibilità per un cliente di noleggiare un auto, depositarla ad una città limite, varcare la nazione, e noleggiare nelle nuova città della nuova nazione un altro veicolo. A tal fine sono stati predisposti quindi i campi relativi alle città di noleggio e città di deposito, in modo tale da fornire all’utente la massima flessibilità. Oltre ai consueti campi relativi all’inserimento delle date di noleggio e restituzione, peraltro utili sia a fini burocratici per inserimento nel database e sia per il calcolo del costo del noleggio, è stata fornita la possibilità all’utente di scegliere un veicolo tra una tipologia di veicoli (auto, moto, furgoncini…) in modo tale da venire incontro alle diverse esigenze. Detto ciò, una volta che l’utente inserisce questi dati, innescando così l’invocazione volta per volta delle diverse funzionalità offerte dai vari web services, l’utente può confermare la sua scelta, e inserire così i propri dati personali, che comportano l’inserimento nel database, ma anche utili in fase di pagamento. A tal punto, l’utente va ad invocare la funzionalità principale corrispondente alla prenotazione, che innesca diverse operazioni, quali quella di registrazione, calcolo del costo finale, gestione della forma di pagamento e soprattutto aggiorno il conteggio reale dei veicoli a disposizione, per ogni tipologia di veicolo prevista. Infatti, già durante la fase di inserimento dei dati relativi al veicolo, per come è stato progettato il sistema, all’utente son proposti solo quei veicoli effettivamente disponibili in quel periodo, in modo tale che è esclusa così la possibilità di prenotare un veicolo, già prenotato magari da un altro cliente in un periodo sovrapposto. Parallelamente sono stati definiti dagli altri due membri gli altri due web services, quello per la prenotazione dei voli e quello per la prenotazione degli hotels, rispettivamente, con logiche simili a quella da me utilizzata per realizzare il mio web services. Dopo la definizione dei web services e il successivo deployment, si è reso necessario creare un registry per la pubblicazione degli stessi, in modo tale da permettere ai diversi clienti di poter interagire con essi. E’ stato così realizzato un registry locale, non potendo utilizzare quelli della Microsoft (), in cui depositare tutti i rispettivi file WSDL deployati. Come descritto in fase di pianificazione del progetto, si è gestita la qualità sia a livello dei singoli servizi, che a livello del processo master. A tal proposito infatti, risulta evidente come si presentino tutti i possibili problemi derivanti dall’interazione remota, visto che in linea di principio, i client dovrebbero risiedere su macchine diverse rispetto ai server. Ma questo rappresenta dapprima una Definizione dei web services e pubblicazione 6 caratteristica intrinseca della rete, ma potrebbe anche essere un problema di singolo server. Per cui, per far fronte a questi problemi, si è deciso di definire più copie degli stessi web services, e pubblicarli su server diversi, in modo tale che in caso di server-down, o problemi sulla rete, sia comunque possibile fruire di quel determinato servizio. Per questo motivo, si è definito, a supporto della replicazione, anche un opportuno sistema di naming, che permettesse la definizione e gestione delle diverse copie dei web services a fronte di guasti, garantendo così una continuità del servizio. 4. Definizione del processo master Una volta che sono stati definiti i diversi componenti rappresentati dai web services, è possibile procedere con la definizione del processo in grado di orchestrare i diversi servizi. La logica di fondo di tale processo è che l’utente può: Invocare il singolo web service; Invocare tutti i web services. Infatti, per come sono stati realizzati, i web services tra loro sono completamente indipendenti, lasciando così la totale libertà al cliente di scegliere quello che più soddisfa le sue esigenze. Così ad esempio, il cliente può decidere di prenotare solo un volo, o solo l’hotel oppure anche solo il noleggio di un auto. A differenza dal caso precedente, l’altra possibilità è quella che permette la prenotazione di un intero pacchetto vacanze, all inclusive, e quindi che permetta la possibilità di usufruire e quindi interagire con tutti i web services. In base a quanto previsto dal linguaggio BPEL4WS, il tutto inizia dalla ricezione della richiesta da parte del cliente tramite un’operazione di “receive”, e mano a mano si avanza nel flusso del processo, segnalando lo stato attuale tramite un token, fino a quando non si raggiunge uno stato finale, in cui si invia la risposta al cliente stesso, tramite un’operazione di “reply”. Si precisa, che il linguaggio BPEL, capostipite di tutte le sue varianti, permette la definizione dello schema di flusso in diversi modi, quali possono essere sia l’esecuzione parallela, si quelle sequenziale, in modo tale da poter soddisfare le diverse esigenze del progetto. Infatti, un’attività sequenziale richiede che venga prima completata l’operazione precedente, mentre quella parallela viene svolta contemporaneamente alle altre. A ciò, poi, è possibile definire delle condizioni di transizione, che indicano al processo, che percorso percorrere a seconda della verifica o meno di una determinata condizione. Definizione del processo master 7 In figura è riportato un esempio rappresentativo di processo BPEL, che come risulta, è anch’esso a sua volta un web service, descritto da un suo file WSDL, in cui si orchestrano i vari WSDL dei singolo servizi. Figura 2 L’operazione mediante la quale si invocano i diversi web services è tramite la “invoke”. Nel caso particolare del nostro progetto sarà quindi necessario definire un unico WSDL, che permetta di orchestrare l’interazione con un servizio di prenotazione voli, con un servizio di prenotazione alberghiera e infine con un servizio di noleggio di veicoli, dando la possibilità all’utente sia di scegliere di utilizzarli tutti sia di utilizzarne solo uno. Per soddisfare tale obiettivo, dopo la fase iniziale di ricezione della richiesta, si avranno tre macroattività in parallelo, invocabili anche singolarmente, a seconda del tipo di richiesta proveniente dall’utente, che si ricongiungeranno alla fine, per il calcolo del prezzo finale, dato dalla somma dei singoli costi dei singoli servizi richiesti dall’utente. A questo punto, si riporta la logica del processo di business definita per il nostro specifico progetto, in cui si evidenziano le attività sequenziali e parallele, e i rispettivi servizi correlati: Definizione del processo master Receive 8 Start Flight Reservation Invoke Invoke Vehicle Reservation Invoke Reply Price calculation Hotel Reservation Figura 3 5. Servizi aggiuntivi Dopo aver definito il processo master, si è passati all’ultima fase, ovvero poter gestire anche la qualità del servizio generale. In particolare, come si è detto in precedenza, si è data massima priorità alla continuità del servizio, garantendo prima di tutto la disponibilità dei singoli servizi anche a fronte di guasti. A questo punto, però occorre precisare che, oltre ai singoli servizi, bisogna anche considerare il processo generale, ovvero garantire che le operazioni terminino comunque in uno stato consistente, a fronti di guasti. Per questo motivo, è stato necessario ricorrere alle transazioni, attraverso operazioni di “compensate” e gestione dei fault, mediante le quali si definisco degli opportuni fault handler che invocati nelle suddette operazioni, a fronte di guasti, effettuano un undo delle operazioni fatte fino a quel momento, riportando sempre il processo in uno stato consistente. Servizi aggiuntivi 9 Inoltre, come detto prima, questo processo per interagire con i diversi servizi, fa riferimento ad un registry, tramite il quale riesce a reperire le informazioni sulla locazione dei diversi servizi. Ma altro aspetto di cui si è tenuto conto è stato il tempo di risposta dei singoli servizi e quindi del processo generale. A tal proposito sono stati utilizzati una serie di strumenti per monitorare i tempi di risposta sia dei singoli servizi, sia del processo master, impostando così anche il valore di parametri che permettano di definire casi di server-down o il caso in cui sia caduta accidentalmente la connessione. Per cui, a fronte di questi problemi, dopo vengono automaticamente invocate quelle procedure di gestione di questi fault, precedentemente definite. 6. Conclusioni e sviluppi futuri Lo svolgimento di questo progetto ci ha permesso di venir a conoscenza del moderno settore emergente dei processi di business basati su coordinazione di vari web services. Questo quindi ci ha visti particolarmente impegnati in una lunga fase di ricerca di documentazione sull’argomento dell’orchestrazione, visto che purtroppo non si è ancora raggiunto uno standard preciso in merito, ma d’altra parte ci ha visti stimolati nella definizione di tutte quelle logiche alla base della coordinazione, ponendoci via via davanti a vari problemi, alcuni dei quali sono stati risolti. A tal proposito occorre sottolineare che molti degli aspetti quindi, in tal progetto sono stati appositamente trascurati, quali ad esempio la gestione dei pagamenti, la sicurezza, ma anche a livello di business logic del processo, si è scelto di utilizzare come semantica di interazione, una semantica sincrona, per raggiungere anche una certa affidabilità. Quindi, è anche possibile pensare ad una probabile semantica asincrona, rimettendoci però dal punto di vista dell’affidabilità, ma probabilmente riuscendo così ad ottenere un miglioramento dell’efficienza come tempi di risposta. Il progetto realizzato ha così un’architettura semplice, ma considerando che è anche distribuita, sono state fatte tutte le scelte mirate all’efficienza. In ogni caso, tutti quegli aspetti non considerati possono comunque essere introdotti, ma bisognerebbe considerare a quel punto, anche il calo delle performance del processo generale. Per questo specifico progetto, per come lo si è realizzato si reputa che il sistema abbia comunque un buon rapporto costo-prestazioni. 7. Riferimenti Slides del corso di Reti di calcolatori L-S Specifiche WS-BPEL v1.1: http://www-128.ibm.com/developerworks/library/specification/ws-bpel/ v2.0: http://www.oasis-open.org/committees/documents.php Risorse su BPEL http://en.wikipedia.org/wiki/BPEL http://bpelsource.com BPEL Subprocesses – white paper http://www-128.ibm.com/developerworks/webservices/library/specification/ws-bpelsubproc/ BPEL4People – white paper http://www-128.ibm.com/developerworks/webservices/library/specification/ws-bpel4people/ BPEL-J – white paper http://www-128.ibm.com/developerworks/library/specification/ws-bpelj/ Engine opensource: ActiveBPEL Engine:http://www.activebpel.org/ JBoss jBPM:http://jbpm.org/