SlideShare uma empresa Scribd logo
1 de 83
Baixar para ler offline
Camel, Active MQ, CXF, Zookeeper 
e Karaf: l'integrazione nell'era del 
Cloud, the Apache way 
! 
Ugo Landini
Agenda
Scope 
• Mostrare come sia possibile costruire un 
sistema di integrazione che sia: 
• Resiliente 
• Manutenibile 
• Flessibile 
• ad alte Performance
Glossario
Glossario 
• Fabric 
• Container 
• OSGI 
• Rotta (Camel) 
• Provisioning 
• Versionamento 
• Maven/Nexus 
• GIT 
• Coda 
• REST/WS 
• Zookeeper 
• ESB 
• Profiles 
• Bundle 
• OSGI 
• EIP, Enterprise Integration 
Patterns 
• Aggregator 
• Splitter 
• CBR 
• Enrichment 
• Multicast 
• Wiretap
Cos’è un ESB?
Cos’è un ESB 
• ESB = Enterprise Service Bus 
• Termine coniato nei primi anni 2000 
• E’ un modello architetturale che permette 
l’integrazione fra applicazioni (EAI) 
• Si basa sull’astrazione di un BUS, in 
maniera similare all’analogo concetto per 
le architetture hardware
Cos’è un ESB
Cos’è un ESB 
• Routing delle richieste 
• Trasformazione dei dati 
• Versionamento dei servizi 
• Buffering delle richieste 
• Bilanciamento e Scalabilità dei servizi 
• Monitoring e controllo
Cos’è OSGI?
Cos’è OSGI? 
• Uno standard per un Java “Modulare” 
• permette di “impacchettare” il codice in un 
bundle (jar) 
• gestisce le dipendenze dei bundle 
• i bundle OSGI possono essere installati, 
lanciati, fermati, aggiornati (Lifecycle 
Management) ed offrire servizi 
• OSGI = SOA in una JVM 
• la prima versione risale al 2000 e nasce 
negli ambienti telco.
Maven / Nexus 
• Maven è lo standard “de facto” del dependency 
management nel mondo Java 
• Nexus è un repository Maven centralizzato che 
facilita l’approccio “Devops” 
• permette di gestire le dipendenze in maniera 
controllata 
• un server che contiene tutti gli “artifatti” del 
processo di sviluppo 
• Coadiuva la gestione dipendenze a runtime di OSGi
Cos’è Karaf?
Cos’è Karaf 
• Lightweight container per OSGI 
• Servizi di hot deploy, logging, shell, 
configuration, provisioning 
• JEE component : JBoss = bundle OSGI : Karaf
Cos’è Active MQ?
Cos’è ActiveMQ 
• Il Messaging Broker Open Source più 
diffuso al mondo 
• JMS, AMQP, MQTT, OpenWire, STOMP, REST 
• Java, C, C++, C#, Ruby, Perl, Python, PHP 
• Pluggable Transport 
• in-VM, TCP, SSL, NIO, UDP, JGroups
Codemotion fuse presentation
Enterprise Integration Patterns 
• Lavoro di Hohpe / Woolf 
• Divenuto uno standard de facto 
• parlare un linguaggio comune 
• riutilizzo di know how e soluzioni 
• Eliminazione codice custom dalle 
implementazioni 
• performance, bugs, quantità di codice
Enterprise Integration Patterns 
http://camel.apache.org/eip
Cos’è Camel?
Cos’è Camel 
• Framework Open source che implementa i 
pattern EIP (>100 componenti) 
• mapping 1:1 fra pattern e componenti 
• le rotte camel sono gestite tramite OSGI 
• per Container si intende il “contenitore” di 
componenti OSGI 
• OSGI : Container = EJB : J2EE Server
Camel
Cos’è ZooKeeper
Cos’è ZooKeeper 
• E’ un componente dell’ecosistema di Hadoop 
• Serve a costruire logiche di coordinamento 
• Sharding, Failover, Discovery, Master 
election, ecc. 
• Usato da HBase, Kafka, Solr, Yahoo, Fuse 
Fabric8
Cos’è Fabric8?
Cos’è Fabric8 
• Fabric8 sfrutta le caratteristiche di OSGI e 
Zookeeper per fornire ulteriori servizi: 
• Provisioning (configurazioni, codice, 
container, fabric stesso!) 
• Registry centralizzato (configurazioni, load 
balancing, discovery, fail-over) 
• Versionamento (git)
Cos’è JBoss Fuse?
Cos’è JBoss Fuse
Cos’è JBoss Fuse 
• Middleware composto da: 
• JBoss AMQ (ActiveMQ) per la 
messaggistica 
• Camel per le mediazioni (rotte) 
• CXF per i Web Services 
• Fabric8 per la governance (registry, 
provisioning) con Zookeeper, git, hawt.io 
• decine di sottocomponenti “minori”
Architettura
Architettura di esempio
ROOT : Zookeeper
Provisioning remoto
Provisioning remoto
Dettaglio Nodi Camel
Processo di 
sviluppo
Processo di sviluppo 
• Raccolta del requisito di integrazione 
• Se il tag A contenuto nel messaggio M ha 
nel record corrispondente della tabella B il 
campo X 
• Trasformazione del messaggio M 
(rimozione tag t1, aggiunta tag X) 
• Successiva trasformazione del messaggio 
M aggiungendo un tag t3
Processo di sviluppo 
“Traduzione” del requisito in Enterprise 
Integration Patterns
Processo di sviluppo
Processo di sviluppo 
• Riportare gli EIP sotto forma di codice 
• usando un DSL Java 
• usando un DSL XML 
• con un editor grafico (plugin per Eclipse)
Processo di sviluppo
Processo di sviluppo
Processo di sviluppo 
• Impacchettare la rotta in un bundle OSGI 
• mvn install 
• Fare il push sul repository 
• mvn deploy
Processo di sviluppo 
• Tramite CLI console o Web Console, e 
secondo le strategie di Roll-out aziendale, 
prelevare il bundle dal repository 
• I container selezionati faranno partire 
automaticamente la rotta se il deploy è 
andato a buon fine (in caso di autostart, il 
default)
Processo canonico 
• Il processo “canonico” dunque è: 
• creare una nuova rotta che implementi le 
nuove regole di business 
• creare una nuova versione su Fabric, per 
esempio 1.1 
• effettuare un check facendo un upgrade di un 
container alla 1.1 
• roll-out su tutti i container o roll-back del 
subset
DEFCON 2 
• Il processo “DEFCON 2”: 
• aprire la console grafica sui server di 
produzione 
• editare la rotta
Le console
Hawt.io 
• Web console 
• Progetto open source: Hawt.io 
• Accesso completo e remoto: 
• container, log, dashboard con strumenti di 
controllo 
• rotte camel, nodi AMQ, API Management, 
cluster.
Hawt.io: vista rotte Camel
Hawt.io 
• versioni, profili, bundle OSGI, ... 
• permette il DEBUG grafico delle rotte camel, 
con breakpoint 
• permette di editare rotte camel, anche su 
server di PRODUZIONE 
• permette di effettuare dei TRACE delle rotte 
• può mostrare i SORGENTI di codice Java che 
ha sollevato un’eccezione
Hawt.io: debug remoto e visuale
Command Line Console 
• Fuse Command Line console 
• Basata su SSH 
• Controllo totale locale e remoto del sistema 
• Scriptabile
Command Line Console
Performance
Performance ActiveMQ 
• Persistenza AMQ basata su File system 
• Utilizza LevelDB, un nosql di Google 
• il Btree di indicizzazione di LevelDB 
garantisce tempi O(1) per il caricamento dei 
messaggi 
• in altre parole, 3 o 30.000.000 di messaggi 
persistenti vengono “presi in carico” 
“istantaneamente” da un broker.
Performance ActiveMQ 
• LevelDB permette anche eccellenti tempi di 
scrittura sul file system 
• La velocità del disco è il singolo fattore più 
importante nel tuning. 
• Circa 10k msg/secondo da 5kb sostenuti per 
ore su un laptop moderno con SSD 
• Circa 4.5k msg/secondo sostenuti sul server 
di Amazon (9k msg/secondo con due dischi)
Performance Camel
Affidabilità
High Availability 
• AMQ è configurabile in modalità Master - 
Slave 
• 1 Slave per 1 Master 
• N Slave per M Master (esempio: 2 Slave per 
10 Master)
Nodi ActiveMQ
Scalabilità
Scalabilità ActiveMQ 
• AMQ offre diverse topologie per scalare 
orizzontalmente: 
• Network of Brokers 
• Client side partitioning
Network of Brokers 
• I messaggi vengono “inoltrati” fra i brokers 
• Store and Forward 
• Mono o bi-direzionale 
• Questa topologia implica un certo grado di 
comunicazione fra i broker (chattiness) 
• Uno o più hop per raggiungere il server su 
cui il messaggio è presente
Network of Brokers
Client side Partitioning 
• E’ la topologia che permette di scalare 
orizzontalmente in maniera illimitata 
• I diversi Broker NON sono a conoscenza 
l’uno dell’altro 
• I client “partizionano” i messaggi secondo un 
criterio qualsiasi 
• In questa topologia è possibile avere una 
singola coda deployata su centinaia di broker
Client side Partitioning
Client side Partitioning 
• E’ la topologia consigliata per ambienti ad 
altissime performance, insieme al Master/ 
Slave per l’HA 
• La natura dei messaggi deve prevedere criteri 
di partizionamento 
• E’ anche possibile avere diversi broker divisi 
per area geografica per architetture Follow 
The Sun
Success Stories
Customers
Customers
Customers
Customers
Customers
Roadmap
JBoss Fuse Roadmap
JBoss Fuse Roadmap 
! 
• JBoss FUSE 6.0 
• Aprile 2013 
• JBoss FUSE 6.1 
• GA da Lunedì 14 Aprile :) 
• build 379 
• https://repository.jboss.org/nexus/content/ 
repositories/ea/org/jboss/fuse/jboss-fuse-full/
Conclusioni
Resilienza 
! 
• Resilienza 
• Architettura distribuita 
• Failover 
• Master/Slave per l’alta affidabilità 
• Scalabilità orizzontale: Network of Brokers, 
Client side partitioning
Manutenibilità 
! 
• Manutenibilità 
• OSGI based, ciclo di vita dei componenti 
standardizzato (con versionamento) 
• Console di amministrazione molto potente 
• Debug/Trace rotte, gestione log, editing 
rotte, ...
Alte performance 
• Alte performance 
• da 4.5k a 10k messaggi al secondo per coda 
(messaggi persistenti “reali” da diversi Kb) 
• Possibile dedicare un broker ed un disco 
per ogni coda (o anche distribuire la stessa 
coda su più macchine ottenendo facilmente 
> 100k msg/secondo) 
• Tempi O(1) per presa in carico da parte del 
broker
Link e risorse
Link e risorse 
• Active MQ 
• http://activemq.apache.org 
• Camel 
• https://camel.apache.org 
• CXF 
• http://cxf.apache.org 
• ZooKeeper 
• http://zookeeper.apache.org 
• Karaf 
• http://karaf.apache.org 
• Fabric8 
• http://fabric8.io 
• JBoss FUSE 6.1 EA builds 
• https://repository.jboss.org/nexus/ 
content/repositories/ea/org/jboss/fuse/ 
jboss-fuse-full/ 
• Red Hat Supported! 
• https://www.jboss.org/products/ 
fuse.html
Thank you!

Mais conteúdo relacionado

Mais procurados

SQL Server Back to Basics: Sicurezza
SQL Server Back to Basics: SicurezzaSQL Server Back to Basics: Sicurezza
SQL Server Back to Basics: SicurezzaGianluca Hotz
 
SQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksSQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksGianluca Hotz
 
Come utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon AuroraCome utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon AuroraGianluca Hotz
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...MongoDB
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query ProcessingGianluca Hotz
 
Mettere in sicurezza ambienti sql server
Mettere in sicurezza ambienti sql serverMettere in sicurezza ambienti sql server
Mettere in sicurezza ambienti sql serverGianluca Hotz
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query ProcessingGianluca Hotz
 
Cloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - ItalianoCloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - ItalianoEDB
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL ServerGianluca Hotz
 
SQL Server Data Virtualization with Polybase
SQL Server Data Virtualization with PolybaseSQL Server Data Virtualization with Polybase
SQL Server Data Virtualization with PolybaseGianluca Hotz
 
Azure SQL Database Ledger
Azure SQL Database LedgerAzure SQL Database Ledger
Azure SQL Database LedgerGianluca Hotz
 
Scala in pratica - Stefano Rocco (MoneyFarm)
Scala in pratica - Stefano Rocco (MoneyFarm)Scala in pratica - Stefano Rocco (MoneyFarm)
Scala in pratica - Stefano Rocco (MoneyFarm)Scala Italy
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
 
SDS,la pietra d’angolo dell SDDC
SDS,la pietra d’angolo dell SDDC SDS,la pietra d’angolo dell SDDC
SDS,la pietra d’angolo dell SDDC VMUG IT
 
Introduzione a Workflow Foundation
Introduzione a Workflow FoundationIntroduzione a Workflow Foundation
Introduzione a Workflow FoundationDotNetMarche
 
20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCamp20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCampmlraviol
 
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...Gianluca Hotz
 

Mais procurados (20)

SQL Server Back to Basics: Sicurezza
SQL Server Back to Basics: SicurezzaSQL Server Back to Basics: Sicurezza
SQL Server Back to Basics: Sicurezza
 
SQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksSQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed Disks
 
Come utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon AuroraCome utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
 
SQL Server in AWS
SQL Server in AWSSQL Server in AWS
SQL Server in AWS
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
 
SQL Server in AWS
SQL Server in AWSSQL Server in AWS
SQL Server in AWS
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query Processing
 
Mettere in sicurezza ambienti sql server
Mettere in sicurezza ambienti sql serverMettere in sicurezza ambienti sql server
Mettere in sicurezza ambienti sql server
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query Processing
 
Cloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - ItalianoCloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - Italiano
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL Server
 
SQL Server Data Virtualization with Polybase
SQL Server Data Virtualization with PolybaseSQL Server Data Virtualization with Polybase
SQL Server Data Virtualization with Polybase
 
Azure SQL Database Ledger
Azure SQL Database LedgerAzure SQL Database Ledger
Azure SQL Database Ledger
 
HP software defined storage
HP software defined storageHP software defined storage
HP software defined storage
 
Scala in pratica - Stefano Rocco (MoneyFarm)
Scala in pratica - Stefano Rocco (MoneyFarm)Scala in pratica - Stefano Rocco (MoneyFarm)
Scala in pratica - Stefano Rocco (MoneyFarm)
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
SDS,la pietra d’angolo dell SDDC
SDS,la pietra d’angolo dell SDDC SDS,la pietra d’angolo dell SDDC
SDS,la pietra d’angolo dell SDDC
 
Introduzione a Workflow Foundation
Introduzione a Workflow FoundationIntroduzione a Workflow Foundation
Introduzione a Workflow Foundation
 
20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCamp20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCamp
 
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
Come utilizzare AWS Database Migration Service per migrare SQL Server ad Amaz...
 

Destaque

Part 2: Cloudera’s Operational Database: Unlocking New Benefits in the Cloud
Part 2: Cloudera’s Operational Database: Unlocking New Benefits in the CloudPart 2: Cloudera’s Operational Database: Unlocking New Benefits in the Cloud
Part 2: Cloudera’s Operational Database: Unlocking New Benefits in the CloudCloudera, Inc.
 
Codemotion 2015 Infinispan Tech lab
Codemotion 2015 Infinispan Tech labCodemotion 2015 Infinispan Tech lab
Codemotion 2015 Infinispan Tech labUgo Landini
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Codemotion
 
Osd 2016 Middleware Track
Osd 2016 Middleware TrackOsd 2016 Middleware Track
Osd 2016 Middleware TrackUgo Landini
 
Open Source Day 2015 - Migrare a JBoss: andare oltre gli aspetti tecnologici
Open Source Day 2015 - Migrare a JBoss: andare oltre gli aspetti tecnologiciOpen Source Day 2015 - Migrare a JBoss: andare oltre gli aspetti tecnologici
Open Source Day 2015 - Migrare a JBoss: andare oltre gli aspetti tecnologiciPar-Tec S.p.A.
 
Workshop sul crowdfunding per Samsung Maestros
Workshop sul crowdfunding per Samsung MaestrosWorkshop sul crowdfunding per Samsung Maestros
Workshop sul crowdfunding per Samsung MaestrosAndrea Landini
 
Presentazione - Progettazione e realizzazione di una piattaforma middleware p...
Presentazione - Progettazione e realizzazione di una piattaforma middleware p...Presentazione - Progettazione e realizzazione di una piattaforma middleware p...
Presentazione - Progettazione e realizzazione di una piattaforma middleware p...LucaGre
 
ESB e Architetture per l'Interoperabilità
ESB e Architetture per l'InteroperabilitàESB e Architetture per l'Interoperabilità
ESB e Architetture per l'InteroperabilitàCommit University
 
JBoss Fuse Service Works
JBoss Fuse Service WorksJBoss Fuse Service Works
JBoss Fuse Service WorksElvis Rocha
 
JBoss Fuse Workshop 101 part 2
JBoss Fuse Workshop 101 part 2JBoss Fuse Workshop 101 part 2
JBoss Fuse Workshop 101 part 2Christina Lin
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache CamelClaus Ibsen
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache CamelClaus Ibsen
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Christian Posta
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache CamelChristian Posta
 

Destaque (20)

Part 2: Cloudera’s Operational Database: Unlocking New Benefits in the Cloud
Part 2: Cloudera’s Operational Database: Unlocking New Benefits in the CloudPart 2: Cloudera’s Operational Database: Unlocking New Benefits in the Cloud
Part 2: Cloudera’s Operational Database: Unlocking New Benefits in the Cloud
 
Codemotion 2015 Infinispan Tech lab
Codemotion 2015 Infinispan Tech labCodemotion 2015 Infinispan Tech lab
Codemotion 2015 Infinispan Tech lab
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015
 
Osd 2016 Middleware Track
Osd 2016 Middleware TrackOsd 2016 Middleware Track
Osd 2016 Middleware Track
 
Concurrency
ConcurrencyConcurrency
Concurrency
 
Open Source Day 2015 - Migrare a JBoss: andare oltre gli aspetti tecnologici
Open Source Day 2015 - Migrare a JBoss: andare oltre gli aspetti tecnologiciOpen Source Day 2015 - Migrare a JBoss: andare oltre gli aspetti tecnologici
Open Source Day 2015 - Migrare a JBoss: andare oltre gli aspetti tecnologici
 
Workshop sul crowdfunding per Samsung Maestros
Workshop sul crowdfunding per Samsung MaestrosWorkshop sul crowdfunding per Samsung Maestros
Workshop sul crowdfunding per Samsung Maestros
 
Sensor Node Plugin System
Sensor Node Plugin SystemSensor Node Plugin System
Sensor Node Plugin System
 
Presentazione - Progettazione e realizzazione di una piattaforma middleware p...
Presentazione - Progettazione e realizzazione di una piattaforma middleware p...Presentazione - Progettazione e realizzazione di una piattaforma middleware p...
Presentazione - Progettazione e realizzazione di una piattaforma middleware p...
 
dvprimer-architecture
dvprimer-architecturedvprimer-architecture
dvprimer-architecture
 
ESB e Architetture per l'Interoperabilità
ESB e Architetture per l'InteroperabilitàESB e Architetture per l'Interoperabilità
ESB e Architetture per l'Interoperabilità
 
SOA wonderful World
SOA wonderful WorldSOA wonderful World
SOA wonderful World
 
JBoss Fuse Service Works
JBoss Fuse Service WorksJBoss Fuse Service Works
JBoss Fuse Service Works
 
JBoss Fuse Workshop 101 part 2
JBoss Fuse Workshop 101 part 2JBoss Fuse Workshop 101 part 2
JBoss Fuse Workshop 101 part 2
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache Camel
 
Fuse overview
Fuse overviewFuse overview
Fuse overview
 
Sparkflows Use Cases
Sparkflows Use CasesSparkflows Use Cases
Sparkflows Use Cases
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache Camel
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 

Semelhante a Codemotion fuse presentation

OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSopencityplatform
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...azuredayit
 
Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...
Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...
Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...Meet Magento Italy
 
Super-scaling Magento with Docker, micro-services and micro-costs
Super-scaling Magento with Docker, micro-services and micro-costsSuper-scaling Magento with Docker, micro-services and micro-costs
Super-scaling Magento with Docker, micro-services and micro-costsMikhail Zakharenko
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheAndrea Dottor
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbMongoDB
 
Service Fabric: la potenza dei micro servizi
Service Fabric:  la potenza dei micro serviziService Fabric:  la potenza dei micro servizi
Service Fabric: la potenza dei micro serviziMassimo Bonanni
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSMorlini Gabriele
 
Microsoft SQL Server PaaS (Platform as a Service)
Microsoft SQL Server PaaS (Platform as a Service)Microsoft SQL Server PaaS (Platform as a Service)
Microsoft SQL Server PaaS (Platform as a Service)Gianluca Hotz
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...MariaDB plc
 
Novità di SQL Server 2017
Novità di SQL Server 2017Novità di SQL Server 2017
Novità di SQL Server 2017Gianluca Hotz
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Mauro Servienti
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS Imola Informatica
 
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...Data Driven Innovation
 
"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco
"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco
"Sistemi managed in alta affidabilità e in open source" by Andrea Di MarcoThinkOpen
 

Semelhante a Codemotion fuse presentation (20)

OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
 
Tile server
Tile serverTile server
Tile server
 
Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...
Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...
Mikhail Zakharenko - Super-scaling Magento with Docker, micro-services and mi...
 
Super-scaling Magento with Docker, micro-services and micro-costs
Super-scaling Magento with Docker, micro-services and micro-costsSuper-scaling Magento with Docker, micro-services and micro-costs
Super-scaling Magento with Docker, micro-services and micro-costs
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cache
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
 
Service Fabric: la potenza dei micro servizi
Service Fabric:  la potenza dei micro serviziService Fabric:  la potenza dei micro servizi
Service Fabric: la potenza dei micro servizi
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
Microsoft SQL Server PaaS (Platform as a Service)
Microsoft SQL Server PaaS (Platform as a Service)Microsoft SQL Server PaaS (Platform as a Service)
Microsoft SQL Server PaaS (Platform as a Service)
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...
 
Novità di SQL Server 2017
Novità di SQL Server 2017Novità di SQL Server 2017
Novità di SQL Server 2017
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 
"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco
"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco
"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco
 

Codemotion fuse presentation

  • 1. Camel, Active MQ, CXF, Zookeeper e Karaf: l'integrazione nell'era del Cloud, the Apache way ! Ugo Landini
  • 3. Scope • Mostrare come sia possibile costruire un sistema di integrazione che sia: • Resiliente • Manutenibile • Flessibile • ad alte Performance
  • 5. Glossario • Fabric • Container • OSGI • Rotta (Camel) • Provisioning • Versionamento • Maven/Nexus • GIT • Coda • REST/WS • Zookeeper • ESB • Profiles • Bundle • OSGI • EIP, Enterprise Integration Patterns • Aggregator • Splitter • CBR • Enrichment • Multicast • Wiretap
  • 7. Cos’è un ESB • ESB = Enterprise Service Bus • Termine coniato nei primi anni 2000 • E’ un modello architetturale che permette l’integrazione fra applicazioni (EAI) • Si basa sull’astrazione di un BUS, in maniera similare all’analogo concetto per le architetture hardware
  • 9. Cos’è un ESB • Routing delle richieste • Trasformazione dei dati • Versionamento dei servizi • Buffering delle richieste • Bilanciamento e Scalabilità dei servizi • Monitoring e controllo
  • 11. Cos’è OSGI? • Uno standard per un Java “Modulare” • permette di “impacchettare” il codice in un bundle (jar) • gestisce le dipendenze dei bundle • i bundle OSGI possono essere installati, lanciati, fermati, aggiornati (Lifecycle Management) ed offrire servizi • OSGI = SOA in una JVM • la prima versione risale al 2000 e nasce negli ambienti telco.
  • 12. Maven / Nexus • Maven è lo standard “de facto” del dependency management nel mondo Java • Nexus è un repository Maven centralizzato che facilita l’approccio “Devops” • permette di gestire le dipendenze in maniera controllata • un server che contiene tutti gli “artifatti” del processo di sviluppo • Coadiuva la gestione dipendenze a runtime di OSGi
  • 14. Cos’è Karaf • Lightweight container per OSGI • Servizi di hot deploy, logging, shell, configuration, provisioning • JEE component : JBoss = bundle OSGI : Karaf
  • 16. Cos’è ActiveMQ • Il Messaging Broker Open Source più diffuso al mondo • JMS, AMQP, MQTT, OpenWire, STOMP, REST • Java, C, C++, C#, Ruby, Perl, Python, PHP • Pluggable Transport • in-VM, TCP, SSL, NIO, UDP, JGroups
  • 18. Enterprise Integration Patterns • Lavoro di Hohpe / Woolf • Divenuto uno standard de facto • parlare un linguaggio comune • riutilizzo di know how e soluzioni • Eliminazione codice custom dalle implementazioni • performance, bugs, quantità di codice
  • 19. Enterprise Integration Patterns http://camel.apache.org/eip
  • 21. Cos’è Camel • Framework Open source che implementa i pattern EIP (>100 componenti) • mapping 1:1 fra pattern e componenti • le rotte camel sono gestite tramite OSGI • per Container si intende il “contenitore” di componenti OSGI • OSGI : Container = EJB : J2EE Server
  • 22. Camel
  • 24. Cos’è ZooKeeper • E’ un componente dell’ecosistema di Hadoop • Serve a costruire logiche di coordinamento • Sharding, Failover, Discovery, Master election, ecc. • Usato da HBase, Kafka, Solr, Yahoo, Fuse Fabric8
  • 26. Cos’è Fabric8 • Fabric8 sfrutta le caratteristiche di OSGI e Zookeeper per fornire ulteriori servizi: • Provisioning (configurazioni, codice, container, fabric stesso!) • Registry centralizzato (configurazioni, load balancing, discovery, fail-over) • Versionamento (git)
  • 29. Cos’è JBoss Fuse • Middleware composto da: • JBoss AMQ (ActiveMQ) per la messaggistica • Camel per le mediazioni (rotte) • CXF per i Web Services • Fabric8 per la governance (registry, provisioning) con Zookeeper, git, hawt.io • decine di sottocomponenti “minori”
  • 37. Processo di sviluppo • Raccolta del requisito di integrazione • Se il tag A contenuto nel messaggio M ha nel record corrispondente della tabella B il campo X • Trasformazione del messaggio M (rimozione tag t1, aggiunta tag X) • Successiva trasformazione del messaggio M aggiungendo un tag t3
  • 38. Processo di sviluppo “Traduzione” del requisito in Enterprise Integration Patterns
  • 40. Processo di sviluppo • Riportare gli EIP sotto forma di codice • usando un DSL Java • usando un DSL XML • con un editor grafico (plugin per Eclipse)
  • 43. Processo di sviluppo • Impacchettare la rotta in un bundle OSGI • mvn install • Fare il push sul repository • mvn deploy
  • 44. Processo di sviluppo • Tramite CLI console o Web Console, e secondo le strategie di Roll-out aziendale, prelevare il bundle dal repository • I container selezionati faranno partire automaticamente la rotta se il deploy è andato a buon fine (in caso di autostart, il default)
  • 45. Processo canonico • Il processo “canonico” dunque è: • creare una nuova rotta che implementi le nuove regole di business • creare una nuova versione su Fabric, per esempio 1.1 • effettuare un check facendo un upgrade di un container alla 1.1 • roll-out su tutti i container o roll-back del subset
  • 46. DEFCON 2 • Il processo “DEFCON 2”: • aprire la console grafica sui server di produzione • editare la rotta
  • 48. Hawt.io • Web console • Progetto open source: Hawt.io • Accesso completo e remoto: • container, log, dashboard con strumenti di controllo • rotte camel, nodi AMQ, API Management, cluster.
  • 50. Hawt.io • versioni, profili, bundle OSGI, ... • permette il DEBUG grafico delle rotte camel, con breakpoint • permette di editare rotte camel, anche su server di PRODUZIONE • permette di effettuare dei TRACE delle rotte • può mostrare i SORGENTI di codice Java che ha sollevato un’eccezione
  • 52. Command Line Console • Fuse Command Line console • Basata su SSH • Controllo totale locale e remoto del sistema • Scriptabile
  • 55. Performance ActiveMQ • Persistenza AMQ basata su File system • Utilizza LevelDB, un nosql di Google • il Btree di indicizzazione di LevelDB garantisce tempi O(1) per il caricamento dei messaggi • in altre parole, 3 o 30.000.000 di messaggi persistenti vengono “presi in carico” “istantaneamente” da un broker.
  • 56. Performance ActiveMQ • LevelDB permette anche eccellenti tempi di scrittura sul file system • La velocità del disco è il singolo fattore più importante nel tuning. • Circa 10k msg/secondo da 5kb sostenuti per ore su un laptop moderno con SSD • Circa 4.5k msg/secondo sostenuti sul server di Amazon (9k msg/secondo con due dischi)
  • 59. High Availability • AMQ è configurabile in modalità Master - Slave • 1 Slave per 1 Master • N Slave per M Master (esempio: 2 Slave per 10 Master)
  • 62. Scalabilità ActiveMQ • AMQ offre diverse topologie per scalare orizzontalmente: • Network of Brokers • Client side partitioning
  • 63. Network of Brokers • I messaggi vengono “inoltrati” fra i brokers • Store and Forward • Mono o bi-direzionale • Questa topologia implica un certo grado di comunicazione fra i broker (chattiness) • Uno o più hop per raggiungere il server su cui il messaggio è presente
  • 65. Client side Partitioning • E’ la topologia che permette di scalare orizzontalmente in maniera illimitata • I diversi Broker NON sono a conoscenza l’uno dell’altro • I client “partizionano” i messaggi secondo un criterio qualsiasi • In questa topologia è possibile avere una singola coda deployata su centinaia di broker
  • 67. Client side Partitioning • E’ la topologia consigliata per ambienti ad altissime performance, insieme al Master/ Slave per l’HA • La natura dei messaggi deve prevedere criteri di partizionamento • E’ anche possibile avere diversi broker divisi per area geografica per architetture Follow The Sun
  • 76. JBoss Fuse Roadmap ! • JBoss FUSE 6.0 • Aprile 2013 • JBoss FUSE 6.1 • GA da Lunedì 14 Aprile :) • build 379 • https://repository.jboss.org/nexus/content/ repositories/ea/org/jboss/fuse/jboss-fuse-full/
  • 78. Resilienza ! • Resilienza • Architettura distribuita • Failover • Master/Slave per l’alta affidabilità • Scalabilità orizzontale: Network of Brokers, Client side partitioning
  • 79. Manutenibilità ! • Manutenibilità • OSGI based, ciclo di vita dei componenti standardizzato (con versionamento) • Console di amministrazione molto potente • Debug/Trace rotte, gestione log, editing rotte, ...
  • 80. Alte performance • Alte performance • da 4.5k a 10k messaggi al secondo per coda (messaggi persistenti “reali” da diversi Kb) • Possibile dedicare un broker ed un disco per ogni coda (o anche distribuire la stessa coda su più macchine ottenendo facilmente > 100k msg/secondo) • Tempi O(1) per presa in carico da parte del broker
  • 82. Link e risorse • Active MQ • http://activemq.apache.org • Camel • https://camel.apache.org • CXF • http://cxf.apache.org • ZooKeeper • http://zookeeper.apache.org • Karaf • http://karaf.apache.org • Fabric8 • http://fabric8.io • JBoss FUSE 6.1 EA builds • https://repository.jboss.org/nexus/ content/repositories/ea/org/jboss/fuse/ jboss-fuse-full/ • Red Hat Supported! • https://www.jboss.org/products/ fuse.html