90
Ugo Landini Senior Solution Architect Red Hat JBoss Fuse: la nuova era dell'integrazione a microservizi

Fuse webinar

Embed Size (px)

Citation preview

Ugo LandiniSenior Solution Architect

Red Hat JBoss Fuse: la nuova era dell'integrazione a microservizi

Cos’é l’integrazione?Cos’é il Middleware?Demistifichiamo le BuzzwordIntegrazione: i casi d’usoMiddleware Red Hat per l’integrazioneRed Hat JBoss FuseEnterprise Integration PatternsRuntimeProcesso di SviluppoTooling

AGENDA

Cos’é l'Integrazione?

Quali sono i problemi?

● Qualche volta si tratta di trasformazione di dati/protocollo➔ Questo… é un micro problema d'integrazione

“Ho bisogno di questa informazione in questo formato specifico attraverso questo protocollo!”

… altre volte si ha un MACRO-problema:

● Qui il focus é sull'interconnessione di diverse sorgenti e destinazioni in maniera efficiente ● anche questo... é un problema d'integrazione.

“Voglio connettere nuove applicazioni e nuove features!”

Integrazione

● L'integrazione può variare da molto semplice a molto complessa

● L’integrazione riduce la complessità totale

“Problema” “Soluzione”

Cos’é il Middleware?

Cos’é il Middleware?

● É un software organizzato in frameworks e blocchi riusabili progettato per risolvere problemi comuni. Standardizza ed accelera lo sviluppo.

Hardware Store

The client

Integrare con un middleware o in maniera custom?

Demistifichiamo le Buzzword

“Digital Transformation”

Contesto:● Le aziende devono modernizzarsi per adattarsi al

cambiamento.● Molti sistemi sono impattati, l'integrazione é una chiave

importante: it delivers innovation.

Cosa significa:● Una opportunità di evolversi e di innovare● Una possibilitá di ri-architettare usando i migliori tool ed i

migliori pattern● Preparare la piattaforma del futuro.

“Micro-Services”

Contesto:● Si parte sempre con un piccolo numero di servizi● Finché non si arriva ad avere un’unico monolite

di servizi strettamente interconnessi● Lo sviluppo, il test, l’hosting e la gestione

diventano un incubo

Cosa significa:● Non é un concetto nuovo.● “Divide et Impera” nel mondo dei servizi.● Obiettivo ideale: unità indipendenti con small

footprint

“API Management”

Contesto:● Una organizzazione perde il controllo per via dell'alto

numero di servizi.● Assenza di un registry centrale con le informazioni sui

servizi● Il Management non ha controllo e visibilitá sulle API.● Aggiungere nuovi clienti diventa complicato.

Cosa significa:● Adozione necessaria quando il numero di servizi aumenta.● Una ‘Best Practice’ architecture per gestire le API.● Felicità ed entusiasmo quando la console di gestione mostra

i KPI

“Internet of Things”

Contesto:● Dispositivi economici che generano una quantità enorme

di dati da gestire● Continuo aumento di dispositivi da connettere● Necessità di analizzare il traffico di dati per prendere

decisioni di business, spesso in real time

Cosa significa:● Use case: migliaia di dispositivi connessi ad 1

gateway.● Alto volume di traffico/messaggi da gestire

Integrazione: i casi d'uso

Mediation LayerContesto:

● Un’organizzazione cresce e diventa molto complessa, con molti backend a data source diversi.

● i Clienti devono interagire con il sistema.

e.g. Industria Telecomunicazioni:L’azienda comincia ad operare in nuove nazioni, fa delle acquisizioni, deve integrare nuovi sistemi.

File TransferContesto:

● Fle batch sparsi un po’ ovunque nell'organizzazione.

● File che devono essere trasferiti in maniera sicura fra i vari dipartimenti

e.g. Supplier chain:Scambio documenti, Purchase

Orders, etc

(o ‘Data Mapping’)

Data TransformationContesto:

● Sistemi differenti vogliono formati differenti

● Trasformazione dei dati da un formato all’altro

Data Data

e.g. Mobile phones:Trasmissioni “light" per

risparmiare batteria. I dati vanno successivamente

trasformati per invocare le API di backend.

Examples of data formats:● CSV (comma separated values)● XML (e.g. <name>Ugol</name>)● JSON (e.g. “name”: ”Ugol”)● HL7 (standard healthcare)● SWIFT (scambi finanziari)

Intelligent Router Contesto:

● L'organizzazione non ha visibilità/controllo sul traffico che viaggia nella sua rete.

● Uno strato di intelligenza permette di controllare il flusso, per esempio sulla base del contenuto

e.g. Media provider:Ha iniziato fornendo contenuti musicali, ma ha incorporato due nuovi servizi per video e libriIl routing layer integra i tre servizi e permette di avere visibilità e controllo.

Protocol BridgingContesto:

● I servizi sono esposti su protocolli differenti

○ HTTP○ JMS○ REST○ SOAP

● Adattamento ed esposizione di diversi protocolli/versioni

e.g. General EIP Pattern:Durante l’adozione di nuovi

standard e/o tecnologie, Fuse offre la possibilitá di riusare i

servizi legacy”tramite il bridging

Composizione di Servizi

response

A+B

C+D

Contesto:

● Diversi servizi sono già presenti

● Esporre nuovi servizi come combinazione di servizi esistenti

e.g. Travel agency:Offre la prenotazione di voli/treni/macchine/stanze

Combinando i servizi insieme si possono offrire pacchetti “custom", per esempio viaggi di lusso od economici.

Document RepositoryContesto:

● L’azienda genera molti documenti

● Impiegati/utenti devono accedere questi documenti da diverse piattaforme/location

e.g. Healthcare:La storia dei pazienti, le

radiografie, ed in generale i documenti sanitari devono essere visibili da differenti

dipartimenti medici ed ospedali

Business Activity Monitoring EnablementContesto:

● I processi di business vivono in diverse applicazioni/sistemi all'interno dell'azienda

● Un "single pane of glass" per il monitoraggio dei business process

● Enforcement di SLA/KPI

Appllication Application Application

Events Events

Correlation & Processing Dashboards - KPIs & SLAs

Events e.g. Retail:

Gli ordini devono essere tracciati end-to-end

Monitoring degli SLA.

Batch -> Real-TimeContesto:

● Flussi informativi predefiniti (Giornalieri, Orari, Notturni)

● Spesso basati su File/DB● Middleware per

○ Introdurre Event Driven Processing○ Ridurre il Process Time○ Incrementare Responsiveness

2 Day Information Flow

Immediate Information Flow

e.g. E-Commerce:● Aziende che vendono “Servizi” ai clienti● I Clienti sono connessi e pretendono update

immediati○ Stato del pagamento○ Dov’é il mio ordine?

Un produttore auto ha ridotto il tempo di reporting di “quando arriverà la mia auto” da 2 giorni a 5 minuti.

Red Hat Middleware per l'Integrazione

RED HAT JBOSS MIDDLEWAREInnovate faster, in a smarter way

DEV

ELO

PMEN

T TO

OLS

Red

Hat

JB

oss

Dev

elop

er S

tudi

o

MA

NA

GEM

ENT

TOO

LSR

ed H

at J

Bos

s O

pera

tions

Net

wor

k

PHYSICAL VIRTUAL PUBLIC CLOUD PRIVATE CLOUD

AUTOMATE

INTEGRATE

ACCELERATE

Red Hat JBoss BPM SuiteRed Hat JBoss BRMS

Red Hat 3Scale API ManagementRed Hat JBoss FuseRed Hat JBoss A-MQRed Hat JBoss Data Virtualization

Red Hat JBoss Enterprise Application PlatformRed Hat JBoss Data GridRed Hat JBoss Web ServerRed Hat Mobile Application Platform (FeedHenry)

APPLICATION INTEGRATIONAbilita l’integrazione di processi di business

end-to-end per diverse applicazioni

Accelerare lo sviluppo di sistemi integrati.

SOLUZIONI COMPLESSE POTREBBERO RICHIEDERE ENTRAMBE LE TECNOLOGIE

DATA INTEGRATIONAbilita l’accesso ai dati da fonti disparate con una vista

combinata e consistente

Migliorare "business decisions", accelerare lo sviluppo di sistemi di business intelligence.

DUE DIVERSI TIPI DI INTEGRAZIONE

RED HAT INTEGRATION PLATFORMConnect systems, applications and data across your entire enterprise

RED HAT API Strategy

Red Hat JBoss Fuse

JBoss Fuse

Integration Middleware Products

➢ 65 EIP (Integration patterns)➢ 200+ Connectors (file/db/http/...)➢ 30+ DataFormats (zip/xml/crypt.)➢ 15+ Expression Languages

JBoss A-MQ

Integration Middleware Products➢ Decoupled

Asynchronous Messaging

➢ Highly Scalable

➢ Multi-Protocol access

➢ Cross Language clients

HTTP

JMS

MQTT

AMQP

Red Hat JBoss Fuse

Integration Framework

Enterprise Integration Patterns

Enterprise Integration Patterns

Enterprise Integration Patterns

Architettura di Camel

Componenti

Simple Example

ApacheActiveMQ

WebSphereMQ

Simple Example

ApacheActiveMQ

WebSphereMQ

Simple Example

ApacheActiveMQ

WebSphereMQ

fromA

filtermessage

send toB

Simple Example

ApacheActiveMQ

WebSphereMQ

from(A) filter(message) to(B)

Simple Example

ApacheActiveMQ

WebSphereMQ

from(A) filter(isWidget) to(B)

Simple Example

ApacheActiveMQ

WebSphereMQ

from(A).filter(isWidget).to(B)

Simple Example

ApacheActiveMQ

WebSphereMQ

isWidget = xpath("/quote/product = ‘widget’");from(A).filter(isWidget).to(B)

Simple Example

ApacheActiveMQ

WebSphereMQ

Endpoint A = endpoint("activemq:queue:quote");Endpoint B = endpoint("mq:quote");Predicate isWidget = xpath("/quote/product = ‘widget’");from(A).filter(isWidget).to(B);

Simple Example

Content Based Router

from newOrder

Content Based Router

from newOrderchoice

Content Based Router

from newOrderchoice

when isWidget to widget

Content Based Router

from newOrderchoice

when isWidget to widget otherwise to gadget

Content Based Router

from (newOrder)choice

when (isWidget) to (widget) otherwise to (gadget)

Content Based Router

from (newOrder).choice()

.when(isWidget) .to(widget) otherwise().to(gadget);

Content Based Router

from (newOrder).choice()

.when(isWidget) .to(widget) otherwise().to(gadget);

Content Based Router

from (newOrder).choice()

.when(isWidget) .to(widget) otherwise().to(gadget);

Endpoint newOrder = endpoint("activemq:queue:newOrder");

Content Based Router

from (newOrder).choice()

.when(isWidget) .to(widget) otherwise().to(gadget);

Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'");

Content Based Router

from (newOrder).choice()

.when(isWidget) .to(widget) otherwise().to(gadget);

Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'");Endpoint widget = endpoint("activemq:queue:widget"); Endpoint gadget = endpoint("activemq:queue:gadget");

Content Based Router

Throttling

1. Prendere dei files da una directory2. (al massimo 3 files ogni 30 secondi)3. Spedire via JMS in una coda4. Ascoltare su una coda5. Fare upload su un server FTP

1 2 3 4 5

from throttle to from to

Throttling<camelContext> <route> <from uri="file:ugol/inbox?move=.done"/> <throttle maximumRequestsPerPeriod="3" timePeriodMillis="30000”> <to uri="activemq:queue:ugol"/> </throttle> </route> <route> <from uri="activemq:queue:ugol"/> <to uri="ftp://admin:secret@localhost:3333"/> </route></camelContext>

1

2

3

4

5

1 2 3 4 5

Splitter

from("file:inbox") .split(body().tokenize("\n") .marshal(customToXml) .to("activemq:line");

Splitter with Parallel Processing

from("file:inbox") .split(body().tokenize(“\n") .parallelProcessing() .marshal(customToXml) .to("activemq:line");

Splitter with XML Streaming

from("file:inbox") .split().tokenizeXML(“order") .streaming .to("activemq:line");

<orders>  <order>    <!-- order stuff here -->  </order>  <order>    <!-- order stuff here -->  </order>...  <order>    <!-- order stuff here -->  </order></orders>

Error Handling - Try Catch

from("activemq:incoming") .doTry() .marshal().jaxb() .to("mq:QueueWithXmlMessages") .doCatch(Exception.class) .to("activemq:error") .end();

Error Handling - Dead Letter

errorHandler( deadLetterChannel("activemq:error"));

from("activemq:incoming") .marshal().jaxb() .to("mq:QueueWithXmlMessages");

Error Handling - Redelivery

errorHandler( deadLetterChannel("activemq:error") .maximumRedeliveries(5) .redeliveryDelay(5000));

from("activemq:incoming") .marshal().jaxb() .to("mq:QueueWithXmlMessages");

Runtime

Portabilitá

…alla PaaS ...all'IoT

...all'embedded

Da Karaf/EAP...

Common Containers

Apache ServiceMixApache ActiveMQApache TomcatJettyWildfly/EAPIBM WebSphereOracle WebLogic/OC4jGlassfishGoogle App EngineAmazon EC2DockerOpenshift…

Deployment Strategy No Container dependency Lightweight Embeddable

Deployment Options Standalone WAR Spring JEE OSGi Docker Cloud

Processo di sviluppo

Requisito di Integrazione

• Se il tag A contenuto nel Messaggio M ha un il valore X nel record corrispondente nella tabella B

• Trasforma M (rimuovi t1 tag, aggiungi X tag)

• Aggiungi il tag t3 al Message M (sempre)

Traduzione in EIP

Trasformare gli EIP in codice, usando un DSL Java, un DSL XML o un Editor grafico (Eclipse, Web based)

> mvn install

> mvn deploy

Ancora con Maven, o graficamente, o in automatico (dipende dal runtime e dalla topologia scelta)

Tooling

Maven tooling

Web Console HTML5

JBoss Developer Studio (Eclipse)

Tooling

• Web Console HTML5 per Java middleware

• basata su AngularJS, Bootstrap e JavaScript (TypeScript)

• usa Jolokia per accedere a JMX over HTTP/JSON

• hawtio ha molti plugins per Fuse, fabric8, camel, activemq, karaf, JMX…

Hawt.io

Camel route

• Debugging e Tracing di rotte Camel, con breakpoint

• Editing di rotte Camel

• É in grado di mostrare il sorgente Java di un componente che ha lanciato un eccezione a runtime

Hawt.io

Debugging

Dashboard

Mapping visuale

Eclipse Based IDE

Debugging, Runtime, Profiling

THANK YOUplus.google.com/+RedHat

linkedin.com/company/red-hat

youtube.com/user/RedHatVideos

facebook.com/redhatinc

twitter.com/RedHatNews