Presentation title here I m Fuse Subtitle here <Nome Pasquale relatore> Ida <Carica Responsabile aziendale> Tecnico Roma, Pontedera, 5 Novembre 27 Giugno 2013 2014
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
RIDUCI La complessità e la quantità del codice Le 3 R 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
Possibili modi di utilizzo di Camel Apache 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
Fornisce una vista sul broker A-MQ Hawtio 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
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte Caso d uso 43
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte Caso d uso 44
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte Caso d uso 45
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte Caso d uso 46
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte Caso d uso 47
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte Caso d uso 48
Un esempio: il sistema di ricerca tramite Jboss Fuse Dietro le quinte Caso d uso 49
Caso d uso Risultato finale 50
Un po di codice Storicizzazione Ricerca su DB BI 51
Un po di codice Storicizzazione Ricerca su DB BI Ricerca in parallelo 52
Un po di codice Split dei risultati di ricerca 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 proxy98 CUP CC 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 3 Inoltra Busta Sanitaria al destinatario principale Tabella Indirizzi Tabella Routing 66
Caso d uso Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all interno di uno stesso ESTAV 4 Riceve Busta Sanitaria e inoltra Evento Accettazione/Non Accettazione CUP Busta Sanitaria 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 proxy98 Busta sanitaria Tabella Indirizzi Tabella Routing 5 Inoltra Busta Sanitaria al sottoscrittore Tabella Indirizzi Tabella Routing 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 CC Busta Sanitaria proxy98 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 CC proxy98 Busta Sanitaria Busta Sanitaria Busta Sanitaria proxy98 Busta Sanitaria Tabella Indirizzi Tabella Routing 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 CC Busta Sanitaria proxy98 Busta Sanitaria 8 Riceve Busta Sanitaria e inoltrare Evento Accettazione/Non Accettazione proxy98 Busta Sanitaria Tabella Indirizzi Tabella Routing 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 CC proxy98 CC Busta Sanitaria Busta Sanitaria Busta Sanitaria Busta Sanitaria proxy98 Busta Sanitaria Tabella Indirizzi Tabella Routing proxy98 9 Inoltra Busta Sanitaria al sottoscrittore Tabella Indirizzi Tabella Routing Tabella Indirizzi Tabella Routing 72
Caso d uso Un esempio: Comunicazione asincrona tra applicativi appartenenti a domini locali diversi, all interno di uno stesso ESTAV CUP CC proxy98 10 Riceve Busta Sanitaria e inoltra Evento Accettazione/Non Accettazione CC Busta Sanitaria Busta Sanitaria Busta Sanitaria Busta Sanitaria proxy98 Busta Sanitaria Tabella Indirizzi Tabella Routing proxy98 Tabella Indirizzi Tabella Routing Tabella Indirizzi Tabella Routing 73
Calcolo IP 74
Calcolo IP Funzioni 9 IP 75
Calcolo IP Funzioni Connettori 9 IP 2 verso il DB 1 verso il WS 76
Calcolo IP Funzioni Connettori Messaggi 9 IP 2 verso il DB 3 messaggi 1 verso il WS 77
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
Presentation title here Grazie! Subtitle here <Nome Pasquale relatore> Ida <Carica aziendale> Pontedera, 27 Giugno 2014 Roma, 5 Novembre 2013