58
The future of middleware: enterprise application integration and Fuse Giuseppe Brindisi EMEA Solution Architect/Red Hat

The future of middleware: enterprise application ...openslava.sk/.../The-future-of-middleware...Fuse_Giuseppe-Brindisi.pdf · The future of middleware: enterprise application integration

  • Upload
    vandiep

  • View
    228

  • Download
    1

Embed Size (px)

Citation preview

The future of middleware: enterprise application integration and Fuse

Giuseppe BrindisiEMEA 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

• AMQ can be configured in Master - Slave

• 1 Slave per 1 Master

• N Slaves per M Masters (example: 2 Slaves per 10 Masters)

• AMQ can scale horizontally with different topologies:

• Network of Brokers

• Client side partitioning

HA

Scalability

Conclusions

Conclusions

• Resiliency

• Distributed Architecture

• Failover

• Master/Slave for High Availability

• Horizontal Scalability: Network of Brokers, Client side partitioning

• Maintainability

• OSGI based, standardized software componentlifecycle (with versioning)

• Powerful admin console

• Performance

Links to useful resources

Links to useful resources

• Fabric

• Container

• OSGI

• Route (Camel)

• Provisioning

• Versioning

• Maven/Nexus

• GIT

• Queue

• REST/WS

• Zookeeper

• Profiles

• Bundle

• OSGI

• EIP, Enterprise Integration Patterns

• Aggregator

• Splitter

• CBR

• Enrichment

• Multicast

• Wiretap

Links to useful resources

Karafhttp://karaf.apache.orgFabric8http://fabric8.ioJBoss FUSE 6.1 EA buildshttps://repository.jboss.org/nexus/content/repositories/ea/org/jboss/fuse/jboss-fuse-full/Red Hat Supported!https://www.jboss.org/products/fuse.html

Active MQhttp://activemq.apache.orgCamelhttps://camel.apache.orgCXFhttp://cxf.apache.orgZooKeeperhttp://zookeeper.apache.org

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