Sei sulla pagina 1di 83

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

ESB

Container

Profiles

OSGI

Bundle

Rotta (Camel)

OSGI

EIP, Enterprise Integration


Patterns

Provisioning

Versionamento

Aggregator

Maven/Nexus

Splitter

GIT

CBR

Coda

Enrichment

REST/WS

Multicast

Wiretap

Zookeeper

Cos un ESB?

Cos un ESB

ESB = Enterprise Service Bus

Termine coniato nei primi anni 2000

E un modello architetturale che permette


lintegrazione fra applicazioni (EAI)

Si basa sullastrazione di un BUS, in


maniera similare allanalogo 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 lapproccio 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

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 dellecosistema 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 uneccezione

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


luno dellaltro

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 lHA

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 lalta 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

Camel

https://camel.apache.org

CXF

http://activemq.apache.org

Karaf

http://zookeeper.apache.org

http://fabric8.io

JBoss FUSE 6.1 EA builds

http://karaf.apache.org

Fabric8

http://cxf.apache.org

ZooKeeper

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!