Transcript scarica la presentazione
S ubtitle here
Cosa è Jboss Fuse
✔ E' una piattaforma “leggera” per l'integrazione ✔ E' un Service Container che permette la gestione del routing, la trasformazione e la validazione di messaggi ✔ Supporta differenti protocolli e formati di messaggi ✔ E' basato sugli EIP ✔ In breve è un
Enterprise Service Bus
2
Perché integrare
✔ Perché gli utenti non devono preoccuparsi di dove risiedono le funzioni o le informazioni ✔ Perché possiamo non avere il controllo di tutti i sottosistemi (sia interni, sia con partner esterni) ✔ Perché è meno costoso che costruire nuove soluzioni da zero ✔ Perché gli utenti ormai vogliono accedere alle informazioni da diversi device (browsers, mobile phone, ...) ✔ Perché consente di centralizzare i servizi generali ✔ Perché aiuta ad “orchestrare” e gestire il caos 3
Perché usiamo l’ESB e Jboss Fuse
Integrazione
✔ batch ✔ messaggi sincroni ✔ trasferimento file ✔ messaggi asincroni ✔ database condivisi
Alcuni vantaggi
✔ unisce i sistemi legacy ✔ semplice da testare e manutenere ✔ modularità ✔ facilmente scalabile ✔ semplice da usare e flessibile ✔ utilizzo di connettori standard 4
Le 3 R
RIDUCI ✔ La complessità e la quantità del codice RIORGANIZZA ✔ Distribuendo il codice per responsabilità: ⚫ Trasformazioni, routing, servizi per componenti ✔ Separando la logica di business dalla messaggistica RIUSA ✔ Pianificando lo sviluppo per il riuso dei componenti ✔ Utilizzando componenti e soluzioni “pre-build” 5
Componenti di Red Hat Jboss Fuse
6
Componenti di Red Hat Jboss Fuse
7
Componenti di Red Hat Jboss Fuse
8
Componenti di Red Hat Jboss Fuse
9
Componenti di Red Hat Jboss Fuse
10
Enterprise Integration Pattern
Storia degli EIP
“Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions” - Gregor Hohpe, Bobby Woolf - 2003 I pattern descritti si basano sull'esperienza diretta degli autori Fornisce un modello basato su sistemi di messaggistica Definisce un linguaggio grafico per i componenti di integrazione 11
Enterprise Integration Pattern
Esempi di componenti EIP Message Endpoint
: punto di ricezione o invio messaggi
Message Translator
: trasforma un messaggio da un formato all'altro
Message Channel
: canale su cui transita il messaggio
Message Enricher
: arricchisce il messaggio originale
Content Based Router
: instrada il messaggio a seconda del contenuto
Recipient List
: inoltra il messaggio in parallelo ad una lista di destinatari 12
Enterprise Integration Pattern
Esempio di diagramma di integrazione Modulo che processa un CSV e, a seconda del valore di un determinato campo, inoltra le informazioni in un determinato file di log.
13
Apache Camel
Apache Camel è un framework che consente di tradurre gli EIP in una forma eseguibile 14
Apache Camel
Possibili modi di utilizzo di Camel ✔ Utilizzo di XML (Spring Context) ✔ Utilizzo di metodi Java 15
Apache Camel
Struttura minimale di un
modulo
Apache Camel ✔ Progetto Maven ✔ Configurazione basata su Spring ✔ Codice java custom 16
Modulo Apache Camel
✔ Tool per la gestione dei progetti Java ✔ Consente la risoluzione automatica delle dipendenze ed il versionamento delle stesse ✔ Standardizza la struttura dei progetti ✔ Gestione del ciclo di vita degli oggetti (attraverso la “inversion of control”) ✔ Utilizza file xml chiari e comprensibili per la configurazione, evitando la scrittura di codice 17
170+
Componenti Apache Camel
18
Apache Camel
Struttura di un modulo Camel Spring ✔ Il modulo è definito all'interno di un file di Spring ✔ All'interno di un modulo Camel è presente un contesto che contiene differenti percorsi (“route”) per i messaggi ✔ All'interno del contesto sono visibili i Bean definiti nel file Spring 19
Architettura OSGi
La “OSGi Alliance” è un'organizzazione formatasi nel 1999 e della quale fanno parte aziende Leader nell'IT quali Red Hat, IBM, Oracle, NTT, Siemens, Adobe e molti altri.
Lo scopo di questa organizzazione è di definire e mantenere uno standard per un sistema dinamico, orientato ai servizi e modulare per il linguaggio Java.
20
Architettura OSGi
Cosa contraddistingue un modulo OSGi
Un modulo OSGi (o “bundle”, come viene chiamato), è in tutto e per tutto identico ad un normale jar, tranne che per il file MANIFEST.MF, all'interno del quale vengono registrati i metadati necessari ad un runtime OSGi per gestire le dipendenze e le interfacce esposte. 21
Fuse Fabric
Fuse Fabric rende possibile la gestione di deploy distribuiti da una postazione centrale.
Fornisce: ✔ Provisioning e deploy semplice e centralizzato ✔ Profilazione facile, efficiente e sicura tramite il salvataggio e il versionamento dei profili ✔ Supporto per il deploy di Camel, CXF, ActiveMQ e qualsiasi applicazione java OSGI in ottica Cloud 22
Hawtio
✔ E' una console di management per Java ✔ Supporta ogni tipo di JVM ✔ Supporta ogni tipo di container (Tomcat, Jetty, Karaf, JBoss, Fuse Fabric, ecc.) ✔ Supporta ogni tipo di middleware 23
Hawtio
✔ Fornisce una vista sul broker A-MQ ✔ Consente di eseguire delle operazioni sul broker e sulle code ✔ Consente di esaminare i messaggi presenti all’interno delle code ✔ La sezione “Chart” presenta l'andamento di varie metriche nel tempo ✔ E' possibile vedere il valore esatto in un determinato momento 24
✔ Offre una vista sulle rotte Camel
Hawtio
✔ Presenta la definizione della rotta camel, che può essere anche modificata ✔ Visualizza in forma grafica la rotta camel 25
Hawtio
✔ Presenta una serie di metriche sulla rotta, suddivise per ogni step della rotta ⚫ Numero totale di messaggi processati ⚫ Tempo in ms. Che ha impiegato a processare l'ultimo messaggio ⚫ Differenza in +/- ms. Tra il penultimo e l'ultimo messaggio.
⚫ Tempo medio impiegato per messaggio in ms.
⚫ Tempo impiegato dal messaggio più veloce in ms.
⚫ Tempo impiegato dal messaggio più lento in ms.
26
Hawtio
✔ La sezione “Logs” Visualizza il log in una forma molto leggibile ✔ Mostra la lista dei bundle presenti 27
28
29
Principali esperienze su Jboss Fuse
✔ Progetto:
Realizzazione di una POC
✔ Integrazione dei servizi per il Track and Trace tra Posteitaliane ed SDA ✔ Attività: ⚫ Realizzazione di 4 UC: ─ Attivazione di nuove code in modo dinamico ─ Gestione di 14 milioni di messaggi in caso di down (testato con successo fino a 30 milioni) ─ Fail-over ─ Transazionalità ✔ Team di Progetto: 5 persone 30
Principali esperienze su Jboss Fuse
✔ Progetto:
ESTAV CENTRO
✔ Sistema di collaborazione applicativa all’interno della Santità Toscana ✔ In Produzione da Febbraio 2012 ✔ Attività: ⚫ Installazione in alta affidabilità ⚫ Integrazione degli applicativi sanitari all'interno dell'Area Vasta Toscana di centro ⚫ Monitoraggio e assistenza H24 ✔ Team di Progetto: 4-7 persone di Extra 31
Principali esperienze su Jboss Fuse
✔ Progetto:
Data Transfer Service
✔ Il sistema raccoglie e trasferisce file tra i differenti fornitori di energia elettrica, con requisiti di alta affidabilità e vincoli stringenti sui tempi di delivery e sulla percentuale di fault ✔ Attività: ⚫ Porting del core del sistema da una versione stand alone su JBoss Fuse ⚫ Reingegnerizzazione e test di non regressione, di unità, di integrazione, ecc.
⚫ Definizione architettura distribuita con Fabric ✔ Team di progetto: 6 persone 32
Principali esperienze su Jboss Fuse
✔ Progetto:
Word Line
✔ Sistema di pagamento biglietti treno ✔ Attività: ⚫ Creazione di un ESB come interfaccia di accesso ai servizi core dell'applicazione ⚫ Analisi dei requisiti, avviamento del progetto e sviluppo dei bundle ✔ Team di Progetto: 5 persone 33
Principali esperienze su Jboss Fuse
✔ Progetto:
Tru1
✔ Integrato con diversi sistemi quali Salesforce, Cerillion, Provisiong System, Billing services, B2B, etc… ✔ Attualmente in Produzione ✔ Attività: ⚫ Migrazione "Tru1" verso il nuovo JBoss Fuse ⚫ Progettazione e implementazione di nuovi servizi in base alle esigenze del cliente ✔ Team di Progetto: 6 persone 34
Principali esperienze su Jboss Fuse
✔ Progetto:
Corsi di formazione del personale
✔ Team di Progetto: ⚫ Tre figure: ─ Trainer parte applicativa ─ Trainer parte infrastruttura ─ Trainer on the job 35
36
Caso d’uso
37
Caso d’uso – Tour Operator
38
Obiettivi
Un sistema innovativo di prenotazione vacanze per le agenzie di viaggio e per il web
✔ Consente di configurare il proprio pacchetto vacanza personalizzando le diverse tipologie di prodotto (autonoleggio, hotel, crociera, voli, etc..) ✔ Progettato per essere modulare e scalabile ✔ Ha lo scopo di aggregare e filtrare una mole significativa di dati provenienti da diversi fornitori ✔ Offre la possibilità di esporre servizi ad applicazioni terze ✔ Adatta i diversi processi di business dei fornitori di servizi sul proprio modello ✔ Consente di definire le politiche di pricing per singolo fornitore integrandosi con il sistema ERP 39
Perché FUSE
✔ La struttura modulare del sistema consente di
aggiungere
in modo
semplice
nuovi fornitori di servizio con un rischio di regressioni minimo ✔ Mediante i costrutti di
Apache Camel
per la
gestione in parallelo
delle richieste è possibile effettuare ricerche su fornitori multipli in maniera efficiente ✔ Supporto al debug semplice da utilizzare ed estremamente flessibile, anche grazie: ⚫ L’introduzione di
Hawtio
⚫ Alla gestione “
a caldo
” dei
livelli di log
⚫ Alla gestione del
tracing
delle route includendo nel log il contenuto degli
headers
, dei messaggi e i riferimenti ai nodi ⚫ L’EIP “
WIRETAP
” che consente in modo semplice il salvataggio dei messaggi che transitano in determinati punti di una route 40
Perché FUSE (2)
✔ Possibilità di gestire le route in modo transazionale ✔ Offre la possibilità di creare servizi centralizzati per le funzionalità comuni riducendo i tempi di sviluppo e favorendo la manutenibilità ✔ I bundle che utilizzano un determinato servizio all’interno dell’ESB attendono la sua disponibilità senza causare errori (ad esempio in caso di manutenzione) ✔ Il supporto nativo a
XSLT
e
Xpath
consente di gestire in modo rapido i messaggi
XML
41
Caso d’uso
Un esempio: il sistema di ricerca tramite Jboss Fuse
42
Caso d’uso
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte
43
Caso d’uso
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte
44
Caso d’uso
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte
45
Caso d’uso
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte
46
Caso d’uso
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte
47
Caso d’uso
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte
48
Caso d’uso
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte
49
Risultato finale
Caso d’uso
50
Un po’ di codice
Storicizzazione Ricerca su DB BI
51
Un po’ di codice
Storicizzazione Ricerca su DB BI Ricerca in parallelo
52
Split dei risultati di ricerca
Un po’ di codice
53
Un po’ di codice
Aggregazione risultati ricerca
54
Vantaggi
✔ Semplicità nelle integrazioni ⚫ Supporto nativo XSLT ⚫ Gestione messaggi SOAP estremamente semplificata ⚫ Gestione della transazionalità ✔ Scalabilità ✔ Assenza di regressioni ✔ Pubblicazione di servizi ✔ Tempi rapidi di apprendimento della piattaforma per l’inserimento di nuovi sviluppatori ✔ Impatto in termini di effort sullo sviluppo (ROI) ⚫ -25% sui tempi di sviluppo ⚫ -50% sui tempi di test di non regressione 55
56
Caso d’uso
57
Contesto
Realizzazione di un’infrastruttura di interoperabilità tecnica all’interno di ESTAV CENTRO e con le altre ESTAV
Gli
ESTAV
sono Enti del Servizio Sanitario regionale, dotati di personalità giuridica pubblica e di autonomia amministrativa, organizzativa, contabile, gestionale e tecnica
ESTAV CENTRO
: AUSL 3 di Pistoia, AUSL 4 di Prato, ASL Firenze, AUSL 11 di Empoli, Azienda Ospedaliero Universitarie Careggi e Azienda Ospedaliero Universitaria Meyer
ESTAV NORD OVEST
: AUSL 1 Massa e Carrara ,AUSL 2 Lucca, AUSL 5 Pisa, AUSL 6 Livorno, AUSL 12 Versilia, Azienda Ospedaliero-Universitaria di Pisa
ESTAV SUD EST
: AUSL 7 Siena, AUSL 8 Arezzo, AUSL 9 Grosseto, Azienda Ospedaliero-Universitaria di Siena 58
Obiettivi
Una infrastruttura per rendere interoperanti gli applicativi presenti negli enti ASL, AO e ESTAV di Regione Toscana
✔ Gestione dell’instradamento degli eventi sanitari tra gli applicativi interni, tra le Aziende Sanitarie Locali, tra gli ESTAV, in una rete di proxy applicativi ✔ Gestione del monitoraggio degli eventi sanitari, attraverso il salvataggio dei dati all’interno di una base dati ✔ Gestione della validazione dell’evento sanitario (RFC 98) ✔ Gestione del broadcast degli eventi sanitari (RFC 98) ✔ Gestione del retry dei messaggi in caso di non raggiungibilità degli ESB che gestiscono gli eventi sanitari (proxy98) 59
Obiettivi
✔ Realizzazione di un’infrastruttura di interoperabilità tecnica all’interno di ESTAV CENTRO e con le altre ESTAV 60
Perché Jboss Fuse
✔ E’ ideale per un utilizzo in area vasta in ottica di architettura cloud (
Fabric
) ✔
RedHat JBoss Fuse
è senza dubbio lo strumento più affidabile, scalabile e facilmente utilizzabile presente sul mercato ✔ La qualità del monitoraggio offerto consente di fornire informazioni che vanno al di là dello stato del singolo
ESB
(proxy98), offrendo una visione più ampia dello stato dell’intero parco applicativo oggetto di integrazione ✔
Integration Point:
metodologia del calcolo della complessità dello sviluppo di integrazioni semplice e costituisce un modo formale e condiviso per il calcolo dei costi 61
Caso d’uso
62
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV proxy98 proxy98 CUP CC proxy98 CC
63
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV
1 Inoltra Busta Sanitaria contenente Analisi
CUP Busta Sanitaria proxy98
Tabella Indirizzi Tabella Routing 64
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV CUP Busta Sanitaria proxy98
Tabella Indirizzi Tabella Routing 2 Riceve Busta sanitaria e inoltrare Evento Accettazione/Non Accettazione 65
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV CUP Busta Sanitaria CC Busta Sanitaria proxy98
Tabella Indirizzi Tabella Routing 3 Inoltra Busta Sanitaria al destinatario principale 66
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV CUP Busta Sanitaria
4 Riceve Busta Sanitaria e inoltra Evento Accettazione/Non Accettazione
CC Busta Sanitaria proxy98
Tabella Indirizzi Tabella Routing 67
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV CUP Busta Sanitaria CC Busta Sanitaria proxy98 Busta sanitaria
Tabella Indirizzi Tabella Routing
proxy98
Tabella Indirizzi Tabella Routing 5 Inoltra Busta Sanitaria al sottoscrittore 68
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV
6 Riceve Busta Sanitaria e inoltra Evento Accettazione/Non Accettazione
CUP Busta Sanitaria proxy98 CC Busta Sanitaria proxy98 Busta Sanitaria
Tabella Indirizzi Tabella Routing Tabella Indirizzi Tabella Routing 69
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV
7 Inoltra Busta Sanitaria al proxy98 Asl 11 Empoli
CUP Busta Sanitaria proxy98 CC Busta Sanitaria proxy98 Busta Sanitaria
Tabella Indirizzi Tabella Routing
Busta Sanitaria proxy98
Tabella Indirizzi Tabella Routing Tabella Indirizzi Tabella Routing 70
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV CUP Busta Sanitaria proxy98 CC Busta Sanitaria proxy98 Busta Sanitaria
Tabella Indirizzi Tabella Routing
Busta Sanitaria
8 Riceve Busta Sanitaria e inoltrare Evento Accettazione/Non Accettazione
proxy98
Tabella Indirizzi Tabella Routing Tabella Indirizzi Tabella Routing 71
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV CUP Busta Sanitaria proxy98
Tabella Indirizzi Tabella Routing
CC Busta Sanitaria proxy98 Busta Sanitaria Busta Sanitaria
Tabella Indirizzi Tabella Routing
proxy98
9 Inoltra Busta Sanitaria al sottoscrittore Tabella Indirizzi
CC Busta Sanitaria
Tabella Routing 72
Caso d’uso
Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all’interno di uno stesso ESTAV CUP Busta Sanitaria proxy98 CC Busta Sanitaria proxy98 Busta Sanitaria
Tabella Indirizzi Tabella Routing
Busta Sanitaria proxy98
10 Riceve Busta Sanitaria e inoltra Evento Accettazione/Non Accettazione
CC Busta Sanitaria
Tabella Indirizzi Tabella Routing Tabella Indirizzi Tabella Routing 73
Calcolo IP
74
Calcolo IP
Funzioni 9 IP
75
Calcolo IP
Funzioni 9 IP Connettori 2 verso il DB
1 verso il WS 76
Calcolo IP
Funzioni 9 IP Connettori 2 verso il DB
1 verso il WS 77
Messaggi 3 messaggi
Vantaggi riscontrati
✔ Semplicità nelle integrazioni ⚫ Supporto nativo modello publish/subscribe ⚫ Gestione nativa HL7, supporto nativo XSLT e eliminazione di connettori custom ⚫ Gestione messaggi SOAP estremamente semplificata ⚫ Gestione della transazionalità ⚫ Realizzazione di proxy trasparenti ✔ Sistema di monitoraggio avanzato ✔ Approccio trasparente per il costo delle integrazioni (Integration Point) 78
Vantaggi riscontrati
✔ Semplicità nelle integrazioni ⚫ Supporto nativo modello publish/subscribe ⚫ Gestione nativa HL7, supporto nativo XSLT e eliminazione di connettori custom ⚫ Gestione messaggi SOAP estremamente semplificata ⚫ Gestione della transazionalità ⚫ Realizzazione di proxy trasparenti ✔ Sistema di monitoraggio avanzato ✔ Approccio trasparente per il costo delle integrazioni (Integration Point)
Vantaggi riscontrati dal cliente
✔ Costo ridotto delle interfacce con gli applicativi (che hanno mantenuto le loro interfacce native) ⚫ Facilità di implementazione di orchestrazioni anche complesse ⚫ Efficacia e tempestività del monitoraggio proattivo degli errori ⚫ Modularità delle soluzioni 79
80