ESB e Architetture per l'Interoperabilità

35
Via Salvo D’Acquisto, 40/P – 56025 Pontedera – PI – Italy Tel: +39 0587 975800 | www.extrasrl.it - [email protected] Commit University Evento 25/05/2016 Stefano Marfella Middleware Division Manager Red Hat JBoss Fuse: l’interoperabilità applicativa tramite un ESB Open Source

Transcript of ESB e Architetture per l'Interoperabilità

Page 1: ESB e Architetture per l'Interoperabilità

Via Salvo D’Acquisto, 40/P – 56025 Pontedera – PI – ItalyTel: +39 0587 975800 | www.extrasrl.it - [email protected]

Commit UniversityEvento 25/05/2016Stefano Marfella Middleware Division Manager

Red Hat JBoss Fuse: l’interoperabilità applicativa tramite un ESB Open Source

Page 2: ESB e Architetture per l'Interoperabilità

2www.extrasrl.it

Cosa è un Enterprise Service Bus?

Una infrastruttura software che fornisce servizidi supporto ad architetture SOA complesse

Page 3: ESB e Architetture per l'Interoperabilità

3www.extrasrl.it

Cosa è un Enterprise Service Bus?Difficoltà per uniformare gli applicativi ad uno standard

- Applicativi off the shelf, venduti industrialmente e non su commessa del cliente

- Mettere d'accordo tutti i responsabili degli applicativi su un unico standard di comunicazione

- Per ogni applicativo che deve essere modificato il budget necessario per l'integrazione aumenta.

Page 4: ESB e Architetture per l'Interoperabilità

4www.extrasrl.it

Cosa è un Enterprise Service Bus?

ESB come punto centralizzato di collegamento

VS

Page 5: ESB e Architetture per l'Interoperabilità

5www.extrasrl.it

Componenti Red Hat Jboss Fuse

Red Hat Jboss Fuse è una soluzione che integra diversi progetti Open Source per fornire tutte le funzionalità di un ESB completo.

Page 6: ESB e Architetture per l'Interoperabilità

6www.extrasrl.it

Componenti Red Hat Jboss Fuse

Page 7: ESB e Architetture per l'Interoperabilità

7www.extrasrl.it

Apache Karaf

Grazie allo standard OSGi, Karaf fornisce un'avanzata modularità a RH Jboss Fuse.

Karaf è un piattaforma OSGi Open Source che fornisce un contenitore “leggero” all'interno del quale possono essere inclusi vari componenti applicativi

Anche i componenti di sistema (console, logging, admin, etc.) sono moduli OSGi al pari dei moduli applicativi scritti dall'utente.

Page 8: ESB e Architetture per l'Interoperabilità

8www.extrasrl.it

Apache Karaf e OSGi

- riduzione della complessità attraverso la suddivisione in moduliI vantaggi di un'architettura OSGi:

- possibilità di riuso dei moduli- aggiornamento dei moduli “a caldo” senza spegnere il sistema - gestione dinamica dei servizi- runtime leggero (il runtime di felix è circa 500KiB)- elimina il problema del “JAR Hell”.

Page 9: ESB e Architetture per l'Interoperabilità

9www.extrasrl.it

Fuse Fabric

Page 10: ESB e Architetture per l'Interoperabilità

10www.extrasrl.it

Fuse FabricFabric è un IpaaS (Integration Platform as a Service) Open Source che utilizza Apache zookeeper.

Page 11: ESB e Architetture per l'Interoperabilità

11www.extrasrl.it

Vantaggi architettura cloud

Con Fabric, la modularità di Red Hat Jboss Fuse può essere estesa a diverse installazioni ognuna delle quali si prende carico di una parte dell'elaborazione

Fabric rende semplici anche le installazioni in alta affidabilità, attraverso la predisposizione di server di failover sincronizzati automaticamente.

Da questa modularità deriva naturalmente un'alta scalabilità. Si possono aggiungere nuovi server in caso di problemi di performance

Page 12: ESB e Architetture per l'Interoperabilità

12www.extrasrl.it

Apache Camel

Page 13: ESB e Architetture per l'Interoperabilità

13www.extrasrl.it

Apache Camel e EIPApache Camel è un framework di integrazione Open Source che utilizza gli Enterprise Integration Pattern (EIP) per definire in modo semplice il flusso dei messaggi .

Recipient list Processa in parallelo diverse copie del messaggio

Content based routing

Instrada il messaggio a seconda del contenuto

Publish-Subscribe Channel

Inserisce il messaggio su un canale Publish-Subscribe

Message Translator Trasforma il messaggio in un altro formato

Content Enricher Arricchisce il messaggio attraverso

Aggregator\ Aggrega diversi messaggi in un unico messaggio

Page 14: ESB e Architetture per l'Interoperabilità

14www.extrasrl.it

Apache Camel EsempiContent Based Router

Il pattern si applica in tutti i casi in cui è necessario valutare alcune condizioni sul contenuto del messaggio per decidere il destinatario

Il componente di Camel permette di configurare le condizioni e le operazioni da eseguire in base al valore dei predicati.

Page 15: ESB e Architetture per l'Interoperabilità

15www.extrasrl.it

Apache Camel EsempiContent Based Router

<camelContext errorHandlerRef="errorHandler" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="direct:a"/> <!-- il payload del messaggio è xml --> <choice> <when> <xpath >/libro/genere/text() = ‘Romanzo'</xpath > <to uri="direct:b"/> </when> <when> <xpath>/libro/genere/text() = ‘Storia'</xpath> <to uri="direct:c"/> </when> <otherwise> <to uri="direct:d"/> </otherwise> </choice> </route></camelContext>

Page 16: ESB e Architetture per l'Interoperabilità

16www.extrasrl.it

Apache Camel EsempiSplitter

Il pattern si applica in tutti i casi in cui si deve elaborare un messaggio che contiene elementi ripetuti (liste, collezioni, xml con elementi con occorrenza maggiore di uno, ecc.)

Il componente di Camel è può riconoscere un elemento java.util.List e separare automaticamente i suoi elementi senza ulteriori indicazioni..

Page 17: ESB e Architetture per l'Interoperabilità

17www.extrasrl.it

Apache Camel EsempiContent Based Router

<camelContext errorHandlerRef="errorHandler" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="direct:a"/> <!-- il payload del messaggio è una java.util.List --> <split> <simple>${body}</simple> <to uri="direct:b"/> </split> </route> <route> <from uri="direct:c"/> <!-- il payload del messaggio è xml --> <split> <xpath>/ordiner/lineaordine</xpath> <to uri="direct:d"/> </split> </route> </camelContext>

Page 18: ESB e Architetture per l'Interoperabilità

18www.extrasrl.it

Apache Camel EsempiEnricher

Il pattern si applica in tutti i casi in cui si deveno aggiungere nuovi dati a un messaggio.

Il componente di Camel permette di indicare la sorgente esterna come URI..

Page 19: ESB e Architetture per l'Interoperabilità

19www.extrasrl.it

Apache Camel EsempiEnricher

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

<route> <from uri="direct:start"/> <enrich uri="direct:resource" strategyRef="aggregationStrategy"/> <to uri="direct:result"/> </route> <route> <from uri="direct:resource"/> ... </route></camelContext> <bean id="aggregationStrategy" class="..." />

Page 20: ESB e Architetture per l'Interoperabilità

20www.extrasrl.it

Apache Camel EsempiRecipient List

Il pattern si applica in tutti i casi in cui i destinatari possono essere determinati solo a run time.

Il componente Camel utilizza una lista di URI per inviare il messaggio ai destinatari.

Page 21: ESB e Architetture per l'Interoperabilità

21www.extrasrl.it

Apache Camel EsempiRecipient List

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

<route><from uri="direct:a" />

<setHeader headerName="myHeader“><simple>http://sito1:8080/app1,http://sito2/app2</

simple></setHeader>

<recipientList delimiter=","> <header>myHeader</header> </recipientList>

</route>

</camelContext>

Page 22: ESB e Architetture per l'Interoperabilità

22www.extrasrl.it

Apache ActiveMQ

Page 23: ESB e Architetture per l'Interoperabilità

23www.extrasrl.it

Apache ActiveMQ

ActiveMQ fornisce un'implementazione robusta e veloce per le code di messaggi

Apache ActiveMQ è un popolare Messaging Service Open Source

Oltre al modello point-to-point, ActiveMQ supporta per le sue code anche il modello Publish-Subscribe.Message broker che implementa la specifica JMS 1.1 (Java Message Service)Utilizza un gestore di persistenza file-based (KahaDB)

Supporta installazioni in alta affidabilità e lo standard JMX per la gestione remota delle code

Page 24: ESB e Architetture per l'Interoperabilità

24www.extrasrl.it

Apache Cxf

Page 25: ESB e Architetture per l'Interoperabilità

25www.extrasrl.it

Apache Cxf

Supporto a vari standard quali WS-Addressing, WS-Discovery, WS-MetadataExchange, WS-Policy, WS-ReliableMessaging, WS-SecureConversation, WS-Security, WS-SecurityPolicy, etc…CXF permette di creare ed interrogare servizi che utilizzano diversi protocolli (SOAP, REST/HTTP, XML puro) e formati (XML testuale, JSON, FastInfoset).

Effettua il marshaling/unmarshaling tra i messaggi dei WS e degli oggetti Java in maniera trasparente

Integrato con Camel mediante il componente Camel-CXF

Page 26: ESB e Architetture per l'Interoperabilità

26www.extrasrl.it

JBoss Operation Network (JON)

Page 27: ESB e Architetture per l'Interoperabilità

27www.extrasrl.it

JBoss Operation Network (JON)JBoss Operations Network (JON) è un sistema di monitoraggio attraverso il quale è possibile monitorare tutti i prodotti Middleware della famiglia JBoss, compreso Jboss Fuse.

Page 28: ESB e Architetture per l'Interoperabilità

Via Salvo D’Acquisto, 40/P – 56025 Pontedera – PI – ItalyTel: +39 0587 975800 | www.extrasrl.it - [email protected]

Caso di successo: IntermediaMarche

Sistema di Fatturazione Elettronica Multi-Ente

Page 29: ESB e Architetture per l'Interoperabilità

www.extrasrl.it

Contesto Decreto Legge 66/2014 Art. 25 convertito con modificazioni dalla L. 23 giugno 2014, n. 89: anticipazione obbligo Fatturazione Elettronica al 31/03/2015 per le Pubbliche Amministrazioni Locali

Regione Marche indice una gara per la realizzazione di un sistema di gestione della Fatturazione Elettronica

Requisiti: Ricezione/Inoltro Fatture Sistema di Interscambio (SDI) dell’Agenzia delle Entrate Pre-validazione delle fatture tramite controllo formale sull'XML Generazione, ricezione e inoltro delle Notifiche di Esito Gestione dei re-invii Estrazione, elaborazione e salvataggio dei metadati Interfacciamento con i sistemi di protocollo e di gestione degli enti aderenti

IntermediaMarcheSistema di Fatturazione Elettronica Multi-Ente

Page 30: ESB e Architetture per l'Interoperabilità

www.extrasrl.it

Flusso Fatturazione Elettronica PA

Page 31: ESB e Architetture per l'Interoperabilità

www.extrasrl.it

Soluzione Architetturale SDI

Sistema Di Interscambio

Ente 1

Protocollo Sistema Gestionale

Ente 2

Casella PEC

Ente 3

Protocollo Sistema Gestionale

Page 32: ESB e Architetture per l'Interoperabilità

www.extrasrl.it

ProgettoIl ruolo svolto dall'ESB è stato quello a tutti gli effetti di

intermediario nel flusso di fatturazione, come punto unico di ingresso/uscita dei messaggi scambiati tra il Sistema di Interscambio e gli Enti destinatari delle fatture.

L'intermediario gestisce la comunicazione con il Sistema di Interscambio sfruttando il canale accreditato SPCoop tramite PDD della Regione Marche

Il sistema espone agli Enti la possibilità di integrarsi tramite differenti canali: WS, PEC, Email, FTP.

IntermediaMarche gestisce sia il ciclo di fatturazione attiva sia il ciclo di fatturazione passiva

Page 33: ESB e Architetture per l'Interoperabilità

www.extrasrl.it

Architettura di dettaglio

Page 34: ESB e Architetture per l'Interoperabilità

www.extrasrl.it

Enti aderenti 2 Uffici Giunta Regione Marche6 Uffici Aree Vaste Azienda Sanitaria3 Aziende Ospedaliere8 Uffici Unità Montane4 ERSU15 ComuniOltre 300.000 fatture gestite dal

31/03/15Più di 20000 Notifiche di Rifiuto gestite

automaticamente

Page 35: ESB e Architetture per l'Interoperabilità

3 More London Riverside SE1 2RE, London Uk| Tel: 0784 0522 897| www.extrasrl.uk -

[email protected]

Via Salvo D’Acquisto, 40/P – 56025 Pontedera – PI – Italy

Tel: +39 0587 975800 | www.extrasrl.it - [email protected]

Grazie

Stefano [email protected]

35