O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Ugo Landini
Senior Solution Architect
Red Hat JBoss Fuse:
la nuova era dell'integrazione a microservizi
Cos’é l’integrazione?
Cos’é il Middleware?
Demistifichiamo le Buzzword
Integrazione: i casi d’uso
Middleware Red Hat per l...
3
Cos’é l'Integrazione?
4
Quali sono i problemi?
● Qualche volta si tratta di trasformazione di dati/protocollo
➔ Questo… é un micro problema d'in...
5
… altre volte si ha un MACRO-problema:
● Qui il focus é sull'interconnessione di diverse sorgenti e destinazioni in mani...
6
Integrazione
● L'integrazione può variare da
molto semplice a molto
complessa
● L’integrazione riduce la
complessità tot...
7
Cos’é il Middleware?
8
Cos’é il Middleware?
● É un software organizzato in frameworks e blocchi riusabili progettato per risolvere problemi com...
9
Integrare con un middleware o in maniera
custom?
10
Demistifichiamo le Buzzword
11
“Digital Transformation”
Contesto:
● Le aziende devono modernizzarsi per adattarsi al
cambiamento.
● Molti sistemi sono...
12
“Micro-Services”
Contesto:
● Si parte sempre con un piccolo numero di servizi
● Finché non si arriva ad avere un’unico ...
13
“API Management”
Contesto:
● Una organizzazione perde il controllo per via dell'alto
numero di servizi.
● Assenza di un...
14
“Internet of Things”
Contesto:
● Dispositivi economici che generano una quantità enorme di
dati da gestire
● Continuo a...
Integrazione: i casi d'uso
Mediation Layer
Contesto:
● Un’organizzazione cresce e
diventa molto complessa, con molti
backend a data source diversi.
●...
File Transfer
Contesto:
● Fle batch sparsi un po’ ovunque
nell'organizzazione.
● File che devono essere trasferiti
in mani...
(o ‘Data Mapping’)
Data Transformation
Contesto:
● Sistemi differenti vogliono formati
differenti
● Trasformazione dei dat...
Intelligent Router Contesto:
● L'organizzazione non ha
visibilità/controllo sul traffico che
viaggia nella sua rete.
● Uno...
Protocol Bridging
Contesto:
● I servizi sono esposti su protocolli
differenti
○ HTTP
○ JMS
○ REST
○ SOAP
● Adattamento ed ...
Composizione di Servizi
response
Contesto:
● Diversi servizi sono già presenti
● Esporre nuovi servizi come
combinazione d...
Document Repository
Contesto:
● L’azienda genera molti documenti
● Impiegati/utenti devono accedere
questi documenti da di...
Business Activity Monitoring Enablement
Contesto:
● I processi di business vivono in
diverse applicazioni/sistemi
all'inte...
24
Batch -> Real-Time
Contesto:
● Flussi informativi predefiniti (Giornalieri,
Orari, Notturni)
● Spesso basati su File/DB...
Red Hat Middleware per
l'Integrazione
RED HAT JBOSS MIDDLEWARE
Innovate faster, in a smarter way
DEVELOPMENTTOOLS
RedHatJBossDeveloperStudio
MANAGEMENTTOOLS
Red...
APPLICATION INTEGRATION
Abilita l’integrazione di processi di business
end-to-end per diverse applicazioni
Accelerare lo s...
RED HAT INTEGRATION PLATFORM
Connect 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+ Data...
JBoss A-MQ
Integration Middleware Products
➢ Decoupled
Asynchronous
Messaging
➢ Highly
Scalable
➢ Multi-Protocol
access
➢ ...
Red Hat JBoss Fuse
Integration Framework
Enterprise Integration Patterns
Enterprise Integration Patterns
Enterprise Integration Patterns
Architettura di Camel
Componenti
Simple Example
Apache
ActiveMQ
WebSphereMQ
Simple Example
Apache
ActiveMQ
WebSphereMQ
Simple Example
Apache
ActiveMQ
WebSphereMQ
from
A
filter
message
send to
B
Simple Example
Apache
ActiveMQ
WebSphereMQ
from(A) filter(message) to(B)
Simple Example
Apache
ActiveMQ
WebSphereMQ
from(A) filter(isWidget) to(B)
Simple Example
Apache
ActiveMQ
WebSphereMQ
from(A).filter(isWidget).to(B)
Simple Example
Apache
ActiveMQ
WebSphereMQ
isWidget = xpath("/quote/product = ‘widget’");
from(A).filter(isWidget).to(B)
Simple Example
Apache
ActiveMQ
WebSphereMQ
Endpoint A = endpoint("activemq:queue:quote");
Endpoint B = endpoint("mq:quote"...
Simple Example
Content Based Router
from newOrder
Content Based Router
from newOrder
choice
Content Based Router
from newOrder
choice
when isWidget to widget
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);
Content Based Router
from (newOrder)
.choice()
.when(isWidget) .to(widget)
otherwise().to(gadget);
Endpoint newOrder = endpoint("activemq:queue...
from (newOrder)
.choice()
.when(isWidget) .to(widget)
otherwise().to(gadget);
Endpoint newOrder = endpoint("activemq:queue...
from (newOrder)
.choice()
.when(isWidget) .to(widget)
otherwise().to(gadget);
Endpoint newOrder = endpoint("activemq:queue...
Throttling
1. Prendere dei files da una directory
2. (al massimo 3 files ogni 30 secondi)
3. Spedire via JMS in una coda
4...
Throttling
<camelContext>
<route>
<from uri="file:ugol/inbox?move=.done"/>
<throttle maximumRequestsPerPeriod="3"
timePeri...
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(customToXm...
Splitter with XML Streaming
from("file:inbox")
.split().tokenizeXML(“order")
.streaming
.to("activemq:line");
<orders>
<or...
Error Handling - Try Catch
from("activemq:incoming")
.doTry()
.marshal().jaxb()
.to("mq:QueueWithXmlMessages")
.doCatch(Ex...
Error Handling - Dead Letter
errorHandler(
deadLetterChannel("activemq:error")
);
from("activemq:incoming")
.marshal().jax...
Error Handling - Redelivery
errorHandler(
deadLetterChannel("activemq:error")
.maximumRedeliveries(5)
.redeliveryDelay(500...
Runtime
Portabilitá
…alla PaaS ...all'IoT
...all'embedded
Da Karaf/EAP...
Common Containers
Apache ServiceMix
Apache ActiveMQ
Apache Tomcat
Jetty
Wildfly/EAP
IBM WebSphere
Oracle WebLogic/OC4j
Gla...
Processo di sviluppo
Requisito di Integrazione
• Se il tag A contenuto nel Messaggio M ha un il valore
X nel record corrispondente nella tabell...
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 acced...
Camel route
• Debugging e Tracing di rotte Camel, con breakpoint
• Editing di rotte Camel
• É in grado di mostrare il sorgente Java di...
Debugging
Dashboard
Mapping visuale
Eclipse Based IDE
Debugging, Runtime, Profiling
THANK YOU
plus.google.com/+RedHat
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitte...
Fuse webinar
Fuse webinar
Fuse webinar
Próximos SlideShares
Carregando em…5
×

Fuse webinar

Slides in italiano del webinar Red Hat del 13/12/2016.
http://ow.ly/Qut7306shrS

  • Entre para ver os comentários

  • Seja a primeira pessoa a gostar disto

Fuse webinar

  1. 1. Ugo Landini Senior Solution Architect Red Hat JBoss Fuse: la nuova era dell'integrazione a microservizi
  2. 2. Cos’é l’integrazione? Cos’é il Middleware? Demistifichiamo le Buzzword Integrazione: i casi d’uso Middleware Red Hat per l’integrazione Red Hat JBoss Fuse Enterprise Integration Patterns Runtime Processo di Sviluppo Tooling 2 AGENDA
  3. 3. 3 Cos’é l'Integrazione?
  4. 4. 4 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!”
  5. 5. 5 … 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!”
  6. 6. 6 Integrazione ● L'integrazione può variare da molto semplice a molto complessa ● L’integrazione riduce la complessità totale “Problema” “Soluzione”
  7. 7. 7 Cos’é il Middleware?
  8. 8. 8 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
  9. 9. 9 Integrare con un middleware o in maniera custom?
  10. 10. 10 Demistifichiamo le Buzzword
  11. 11. 11 “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.
  12. 12. 12 “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
  13. 13. 13 “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
  14. 14. 14 “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
  15. 15. Integrazione: i casi d'uso
  16. 16. Mediation Layer Contesto: ● 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.
  17. 17. File Transfer Contesto: ● 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
  18. 18. (o ‘Data Mapping’) Data Transformation Contesto: ● 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)
  19. 19. 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 libri Il routing layer integra i tre servizi e permette di avere visibilità e controllo.
  20. 20. Protocol Bridging Contesto: ● 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
  21. 21. Composizione di Servizi response 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.
  22. 22. Document Repository Contesto: ● 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
  23. 23. Business Activity Monitoring Enablement Contesto: ● 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.
  24. 24. 24 Batch -> Real-Time Contesto: ● 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.
  25. 25. Red Hat Middleware per l'Integrazione
  26. 26. RED HAT JBOSS MIDDLEWARE Innovate faster, in a smarter way DEVELOPMENTTOOLS RedHatJBossDeveloperStudio MANAGEMENTTOOLS RedHatJBossOperationsNetwork PHYSICAL VIRTUAL PUBLIC CLOUD PRIVATE CLOUD AUTOMATE INTEGRATE ACCELERATE Red Hat JBoss BPM Suite Red Hat JBoss BRMS Red Hat 3Scale API Management Red Hat JBoss Fuse Red Hat JBoss A-MQ Red Hat JBoss Data Virtualization Red Hat JBoss Enterprise Application Platform Red Hat JBoss Data Grid Red Hat JBoss Web Server Red Hat Mobile Application Platform (FeedHenry)
  27. 27. APPLICATION INTEGRATION Abilita 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 INTEGRATION Abilita 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
  28. 28. RED HAT INTEGRATION PLATFORM Connect systems, applications and data across your entire enterprise
  29. 29. RED HAT API Strategy
  30. 30. Red Hat JBoss Fuse
  31. 31. JBoss Fuse Integration Middleware Products ➢ 65 EIP (Integration patterns) ➢ 200+ Connectors (file/db/http/...) ➢ 30+ DataFormats (zip/xml/crypt.) ➢ 15+ Expression Languages
  32. 32. JBoss A-MQ Integration Middleware Products ➢ Decoupled Asynchronous Messaging ➢ Highly Scalable ➢ Multi-Protocol access ➢ Cross Language clients HTTP JMS MQTT AMQP
  33. 33. Red Hat JBoss Fuse
  34. 34. Integration Framework
  35. 35. Enterprise Integration Patterns
  36. 36. Enterprise Integration Patterns
  37. 37. Enterprise Integration Patterns
  38. 38. Architettura di Camel
  39. 39. Componenti
  40. 40. Simple Example Apache ActiveMQ WebSphereMQ
  41. 41. Simple Example Apache ActiveMQ WebSphereMQ
  42. 42. Simple Example Apache ActiveMQ WebSphereMQ from A filter message send to B
  43. 43. Simple Example Apache ActiveMQ WebSphereMQ from(A) filter(message) to(B)
  44. 44. Simple Example Apache ActiveMQ WebSphereMQ from(A) filter(isWidget) to(B)
  45. 45. Simple Example Apache ActiveMQ WebSphereMQ from(A).filter(isWidget).to(B)
  46. 46. Simple Example Apache ActiveMQ WebSphereMQ isWidget = xpath("/quote/product = ‘widget’"); from(A).filter(isWidget).to(B)
  47. 47. Simple Example Apache ActiveMQ WebSphereMQ Endpoint A = endpoint("activemq:queue:quote"); Endpoint B = endpoint("mq:quote"); Predicate isWidget = xpath("/quote/product = ‘widget’"); from(A).filter(isWidget).to(B);
  48. 48. Simple Example
  49. 49. Content Based Router
  50. 50. from newOrder Content Based Router
  51. 51. from newOrder choice Content Based Router
  52. 52. from newOrder choice when isWidget to widget Content Based Router
  53. 53. from newOrder choice when isWidget to widget otherwise to gadget Content Based Router
  54. 54. from (newOrder) choice when (isWidget) to (widget) otherwise to (gadget) Content Based Router
  55. 55. from (newOrder) .choice() .when(isWidget) .to(widget) otherwise().to(gadget); Content Based Router
  56. 56. from (newOrder) .choice() .when(isWidget) .to(widget) otherwise().to(gadget); Content Based Router
  57. 57. from (newOrder) .choice() .when(isWidget) .to(widget) otherwise().to(gadget); Endpoint newOrder = endpoint("activemq:queue:newOrder"); Content Based Router
  58. 58. 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
  59. 59. 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
  60. 60. Throttling 1. Prendere dei files da una directory 2. (al massimo 3 files ogni 30 secondi) 3. Spedire via JMS in una coda 4. Ascoltare su una coda 5. Fare upload su un server FTP 1 2 3 4 5 from throttle to from to
  61. 61. 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
  62. 62. Splitter from("file:inbox") .split(body().tokenize("n") .marshal(customToXml) .to("activemq:line");
  63. 63. Splitter with Parallel Processing from("file:inbox") .split(body().tokenize(“n") .parallelProcessing() .marshal(customToXml) .to("activemq:line");
  64. 64. 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>
  65. 65. Error Handling - Try Catch from("activemq:incoming") .doTry() .marshal().jaxb() .to("mq:QueueWithXmlMessages") .doCatch(Exception.class) .to("activemq:error") .end();
  66. 66. Error Handling - Dead Letter errorHandler( deadLetterChannel("activemq:error") ); from("activemq:incoming") .marshal().jaxb() .to("mq:QueueWithXmlMessages");
  67. 67. Error Handling - Redelivery errorHandler( deadLetterChannel("activemq:error") .maximumRedeliveries(5) .redeliveryDelay(5000) ); from("activemq:incoming") .marshal().jaxb() .to("mq:QueueWithXmlMessages");
  68. 68. Runtime
  69. 69. Portabilitá …alla PaaS ...all'IoT ...all'embedded Da Karaf/EAP...
  70. 70. Common Containers Apache ServiceMix Apache ActiveMQ Apache Tomcat Jetty Wildfly/EAP IBM WebSphere Oracle WebLogic/OC4j Glassfish Google App Engine Amazon EC2 Docker Openshift … Deployment Strategy  No Container dependency  Lightweight  Embeddable Deployment Options  Standalone  WAR  Spring  JEE  OSGi  Docker  Cloud
  71. 71. Processo di sviluppo
  72. 72. 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)
  73. 73. Traduzione in EIP
  74. 74. Trasformare gli EIP in codice, usando un DSL Java, un DSL XML o un Editor grafico (Eclipse, Web based)
  75. 75. > mvn install > mvn deploy
  76. 76. Ancora con Maven, o graficamente, o in automatico (dipende dal runtime e dalla topologia scelta)
  77. 77. Tooling
  78. 78. Maven tooling Web Console HTML5 JBoss Developer Studio (Eclipse) Tooling
  79. 79. • 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
  80. 80. Camel route
  81. 81. • 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
  82. 82. Debugging
  83. 83. Dashboard
  84. 84. Mapping visuale
  85. 85. Eclipse Based IDE
  86. 86. Debugging, Runtime, Profiling
  87. 87. THANK YOU plus.google.com/+RedHat linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHatNews

×