0% found this document useful (0 votes)
93 views58 pages

The Future of Middleware Java, Enterprise Engineering and Fuse Giuseppe Brindisi

The document discusses the future of middleware for enterprise application integration using JBoss Fuse. It provides an overview of key concepts in Fuse including the Camel framework for implementing enterprise integration patterns (EIP), OSGi for modular application development, ActiveMQ for messaging, and Fabric for provisioning and management of distributed Fuse instances. The document also briefly discusses performance and high availability capabilities of the platform.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
93 views58 pages

The Future of Middleware Java, Enterprise Engineering and Fuse Giuseppe Brindisi

The document discusses the future of middleware for enterprise application integration using JBoss Fuse. It provides an overview of key concepts in Fuse including the Camel framework for implementing enterprise integration patterns (EIP), OSGi for modular application development, ActiveMQ for messaging, and Fabric for provisioning and management of distributed Fuse instances. The document also briefly discusses performance and high availability capabilities of the platform.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 58

The future of middleware:

enterprise application
integration and Fuse
Giuseppe Brindisi
EMEA Solution Architect/Red Hat
AGENDA
Agenda

● Build an enterprise application integration platform that


is:


Resilient

Maintainable

Flexible

With high performances
What is EIP?
What is EIP?

• Work by Hohpe / Woolf

• Became a de facto standard

• speak the same language

• reuse of know how and solutions

• Avoid custom code for integrations

• performance, bugs, less lines of code


Enterprise Integration Patterns

http://camel.apache.org/eip
What's JBOSS Fuse?
What's JBOSS Fuse?

• An integration Middleware built on:

• JBoss AMQ (ActiveMQ) for messaging

• Camel for mediations (routes)

• CXF for Web Services

• Fabric for governance (registry,


provisioning)

• many “minor” subcomponents


What is Jboss FUSE?
What is OSGI?
What is OSGI?

• A standard for a “Modular” Java

• how to “pack” code in a bundle (jar)

• OSGi bundles can be remotely installed,


started, stopped, paused, updated and
more (Lifecycle Management)
• OSGi = SOA in a JVM

• First version in 2000, coming from the


telco world.
What is Camel?
What is Camel?

• Framework Open source implementing EIP


patterns
• mapping 1:1 between pattern and
components
• camel routes managed through OSGI
• OSGI Container
• OSGI : Container = EJB : J2EE Server
What is Camel?
What is ZooKeeper?
What is ZooKeeper?

• Part of the Hadoop ecosystem

• Used to build coordination logics

• Sharding, Failover, Discovery, Master


election, ecc.

• Used by HBase, Kafka, Solr, Yahoo, etc.


What is MAVEN?
MAVEN

• Maven is the “de facto” standard in Java


dependency management

• Nexus (Artifactory) is a centralized Maven


repo that makes “Devops” easy

• controls dependencies

• a server contains each and every project


artifact
What is KARAF?
What is KARAF?

• Lightweight container for OSGI

• Hot deploy, logging, shell, configuration,


provisioning services

• JEE component : JBoss = bundle OSGI : Karaf


What is ACTIVE-MQ?
What is ACTIVE-MQ?

• Open Source Messaging Broker

• JMS, AMQP, MQTT, OpenWire, STOMP, REST

• Java, C, C++, C#, Ruby, Perl, Python, PHP

• Pluggable Transport

• in-VM, TCP, SSL, NIO, UDP, JGroups


What is CXF?
What is CXF?

• De facto open source standard for Web


Services

• Used in JBoss too

• WS-*, REST support

• …
What is Fabric?
What is Fabric?

• Allocate Resources, Install & Connect


containers in your environment
• Publish Services, Discover & Coordinate

• Manage

• Provision

• Visualize

• Scale Up / Down

• and much more…


What is Fabric?

• Introduced with Fuse technology

• But now an independent project

• http://fabric8.io

• It is now (will be) cross product (Fuse, EAP,


Openshift, ecc.)
What is Fabric?

• Provisioning

• configurations, scripts, code (aggregated in


profiles)

• On every kind of container

• Karaf, Wildfly, Tomcat, plain JVMs

• Everywhere

• Openshift, Docker, any public/private IAAS,


bare metal, hybrid.
Example Architecture
Example Architecture
Architecture: Camel node details
The Console
The Console: Hawt.io – camel route view
The Console: command line console

• Fuse Command Line console

• SSH based

• Total local and remote control of the system

• Scriptable
The Console: command line console
Performance
Performance - CAMEL

• Camel is a Java technology and doesn’t


introduce any overhead

• Performance depends by the Camel


components used

• provided components has usually been


finely tuned and tested in hundreds of
customers

• Camel code is probably much faster than


your code ;)
Performance - ActiveMQ

• AMQ persistence File system based

• LevelDB, a nosql developed by Google

• O(1) to load stored messages thanks to the


BTree Google algorithm

• 3 or 30.000.000 persistent messages


instantaneously “loaded” by a broker.
Performance - ActiveMQ

• LevelDB has excellent write performance

• Disk speed is the single most important


factor.

• About 10k msg/sec (5kb) of sustained traffic


on a modern laptop with an SSD

• About 4.5k msg/sec (5kb) of sustained traffic


on Amazon server (9k msg/sec using both
disks)
High Availability and Scalability
High Availability and Scalability

HA
• AMQ can be configured in Master - Slave
• 1 Slave per 1 Master
• N Slaves per M Masters (example: 2 Slaves
per 10 Masters)

Scalability
• AMQ can scale horizontally with different
topologies:
• Network of Brokers
• Client side partitioning
Conclusions
Conclusions

• Resiliency
• Distributed Architecture
• Failover
• Master/Slave for High Availability
• Horizontal Scalability: Network of Brokers,
Client side partitioning
• Maintainability
• OSGI based, standardized software component
lifecycle (with versioning)
• Powerful admin console
• Performance
Links to useful resources
Links to useful resources

• Fabric • Profiles
• Container • Bundle
• OSGI • OSGI
• Route (Camel) • EIP, Enterprise
• Provisioning Integration Patterns
• Versioning • Aggregator
• Maven/Nexus • Splitter
• GIT • CBR
• Queue • Enrichment
• REST/WS • Multicast
• Zookeeper
• Wiretap
Links to useful resources

Karaf
Active MQ
http://karaf.apache.org
http://activemq.apache.org
Fabric8
Camel
http://fabric8.io
https://camel.apache.org
JBoss FUSE 6.1 EA builds
CXF
https://repository.jboss.org/ne
http://cxf.apache.org
xus/content/repositories/ea/or
ZooKeeper
g/jboss/fuse/jboss-fuse-full/
http://zookeeper.apache.org
Red Hat Supported!
https://www.jboss.org/product
s/fuse.html
Ask questons or rate the Speaker

www.sli.do/openslava
Annex
Software Development Process
Software Development Process

• Integration requisite

• If tag A contained in Message M has in


corresponding record in table B the X field

• Trasform M (remove t1 tag, add X tag)

• Add tag t3 to Message M in any case


Software Development Process

“Translation” in Enterprise Integration

Patterns
Software Development Process
Software Development Process

• Transform EIP in code

• using a DSL in Java

• using a DSL in XML

• with a GUI editor (Eclipse plugin)


Software Development Process

• Bundle in an OSGI component

• mvn install

• Push on Maven/Nexus repo

• mvn deploy
Software Development Process

• With CLI console or Web Console, and


following Roll-out company plan, pull the
bundle from the repository

• Selected containers will download and start


automatically the bundle
Software Development Process

• “Canonical” process is:

• create a new route implementing business

• pack the route in a bundle and “assign” to a


new version of a profile

• upgrade one of more containers to this profile


to check everything is ok

• roll-out on every container or roll-back


Software Development Process

• “DEFCON 2” process:

• Open the web console on a production


server

• edit the route on the fly

You might also like