scarica la presentazione

Download Report

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

Presentation title here Grazie!

S ubtitle here

Pontedera, 27 Giugno 2014 Roma, 5 Novembre 2013