make easier integration of your services with fuse solutions - redhat 2013
DESCRIPTION
This presentation is all about why Fuse technology makes live easier of Integration projects / services using Camel, Karaf & FabricTRANSCRIPT
Make easier Integration of your services with Fuse Solutions
Charles MoulliardSr. Enterprise Architect / Apache member
23/01/2013
Speaker : Charles Moulliard
• Engineer in Agronomy & Master in Zoology19 years of experience in IT world development (J2EE, .NET), specialized in new technologies web/Internet & integration, Project manager in bank, financial, telco, insurance - Team builder – Coach - Evangelist
• Architect @RedHat• Apache Committer : ServiceMix, Karaf (PMC), Camel (PMC),
DeltaSpike, Fabric
Twitter : http://twitter.com/cmoulliard
LinkedIn : http://www.linkedin.com/in/charlesmoulliard
My blog : http://cmoulliard.blogspot.com
Slideshare : http://www.slideshare.net/cmoulliard
Agenda
● Why Integration is so hard
● How Fuse technology makes that easier
● What we offer
● Fuse Enterprise (MB, ESB)
● Fuse IDE
● Fuse Management Console
Why integration is so hard
Why integration is so hard
IT is like a jungle, completely crazy
Why integration is so hard
Constellation of protocols & standards
HTTP(S) (S)FTP(S)
(S)SMTP
TCP/IP
UDP
SSL
PKI
SOA BPEL
BPMN
WS-*
SCAREST JDBC
JPA
JMS
JavaEE
AMQP
POP
IMAP
POJOEJB
JBI
RMI
RPC
CORBA
DCOM
SNMPSSH
Why integration is so hard
Support huge family of Formats
EDI
XML
CSV
SOAP
Why integration is so hard
Microsoft (.NET, COM) ↔ Java (EJB, POJO)CORBA, DCOM fail to simplify inter-operability
CORBA
DCOM
BRIDGE
How Fuse makes that easier
How Fuse makes that easier
What do we need to solve these issues
● Technology supporting existing protocols/standards● Facilitate Transformation or Data Formating ● Integration language● Runtime to deploy services● Modularity/Granularity● Async architecture & persistence● Tools to develop/package & deploy projects● Supervision strategy● (Cloud) infrastructure
How Fuse make that easier
Where do we find such a technology → OpenSource community (Apache, JBoss)
● Integration Technology (Camel)● Multi-Technology Java OSGI Server (Karaf)● WS/REST framework (CXF) – SOA Vision● Middleware (ActiveMQ)● Modular runtime (Felix)● OSGI Tooling (OPS4J)● EE Features – JPA, Web, JTA, JNDI (Aries)● Cloud (jcloud, cloudstack, openshift)
Camel Integration Engine ...
Camel
● Birthdate - March 2007
● OpenSource Integration Framework implementing
EIP patterns (Book : 2005 by Gregor Hohpe &
Bobby Woolf)
● Why EIP ? To provide words, grammar & language
● Camel uses a Domain Specific Language
transposing the EIP patterns into Java, XML, Scala
Camel
Some of features/characteristics ● In memory bus ← → alternative to JBI - NMR● Route objects → can be XML, File, Stream, Bytes ● Predicate & Expression language (xslt, xpath,..)● Support Sync/Async exchanges● Threads Management, Tx Architecture ● Error and exception handling● Policy driven● Container agnostic
Camel (1)
More than 50 patterns are implemented
http://camel.apache.org/enterprise-integration-patterns.html
Camel (2)
More than 120 components
http://camel.apache.org/components.html
Camel (3)● ConvertBody
● Data formats to simplify
exchange between layers,
applications connected
(JAXB, Bindy, SOAP, ...)
● marshaler (obj-A obj-B)
● unmarshaler (obj-B obj-A)
http://camel.apache.org/data-format.html
Camel (4)
The model Content Based Router
& its DSL representation
Camel (5)
Camel (6)
Camel (7)
Camel (8)
URI corresponds to component name + properties
Camel (9)
• Transpose the DSL using Java• First the configure() method must be created
Camel (10)
Next we create a java class extending RouteBuilder class
Camel (11)
Language is flexible and proposesdifferent ways to define the
endpoints and predicates
Camel (12)
Integrate easily with IntelliJ, Eclipse, JBoss Developer Studio, Fuse Ide, NetBeans
Camel (13)
Instead of Java, you can use Spring / XML DSL
How Fuse makes that easier
What do we need to solve these issues
● Technology supporting existing protocol/standards● Facilitate Transformation or Data Formating ● Integration language● Runtime to deploy services● Modularity/granularity● Async architecture & persistence● Tools to develop/package & deploy projects● Supervision strategy● (Cloud) infrastructure
Camel
Multi-technology container
ESB – ServiceMix (1)
Demystify the concept Enterprise Service Bus
→ This is not→ Or a
But an exchanging platform of messages, objects moving within transport layers
ESB - ServiceMix (2)
● Allow to separate the business layer from those that will transport the information and transform (marshal) it
•Provide connectors(= endpoints) to collect information and send it on the bus as messages
ServiceMix (3)
Message is ACK or ERR
Routing is defined into
the SU
Normalized = XML
exchanges
ServiceMix (4)
Based on an OSGI kernelOffer modularity for services
Multi-Technology Platform ● Camel● CXF● ActiveMQ,● Aries (JPA,
Transaction, JNDI, Web)
Karaf – Heart of ServiceMix (5)
Karaf – Heart of ServiceMix (6)
Features :
● Administration console (local, remote, ssh, web, jmx)
● Provisioning system (features)● Hot deployment and configuration management● Instances management● Security integration (JAAS → ldap, jdbc, file)● Logging management (log4j, logger, commons
logging, ….)
Karaf – Heart of ServiceMix (6)
The platform is « modular » because we can select the libraries, containers.
Camel, JBIJetty, Pax Web
Architecture - Messaging
from(«ftp://server/dir»).beanRef(«myBean»);
from(«cxf:bean:myWS»).beanRef(«myBean») ;
The BUS operates the exchanges between the endpoints using Camel (individual), NMR – JBI (transversal)
Architecture - Java
The OSGI platform proposes a Service Registry (aka JNDI) to deploy Java Interfaces
<bean id="incidentServiceTarget" class="org.apache.camel.service.impl.IncidentServiceImpl"><property name="incidentDAO">
<osgi:reference interface="org.apache.camel.dao.IncidentDAO"/> </property>
</bean>
Architecture - Messaging + Java
Decoupling of the "services" from integration layer
from(« cxf:bean:myWS »).beanRef(« myBean », « validate »).beanRef(«aBean»,« saveDB »).beanaRef(« myBean », « generateResponse »);
Architecture - Messaging + Java + Web
Can be web platform, it uses Jetty Web Application Server, Pax Web – a tooling for war and OSGI HTTP Service to register Servlet, …
How Fuse makes that easier
What do we need to solve these issues
● Technology supporting existing protocols/standards● Facilitate Transformation or DataFormating● Integration language● Runtime to deploy services● Modularity/Granularity● Async architecture & persistence● Tools to develop/package & deploy projects● Supervision strategy● (Cloud) infrastructure
Camel
Karaf
Middleware to persist, propagate asynchronous exchanges, scale your
architecture
Architecture
When we need asymetric deployment (CPU, memory is not enough) ActiveMQ interconnect the instances and persist messages
ActiveMQ
Clients connect to the broker using connectors with simple URIs
File & JDBC-based message stores supported.
… all based on a flexible Spring-based core.
Topics and queues created dynamically.
Network connectors control how the broker interacts with other brokers for discovery, replication, failover, clustering and store & forward.
•A high performance, reliable messaging fabric, supporting JMS, C, C++,.Net, Stomp clients. Offers persistence for messages and bridge between ServiceMix instances
How Fuse makes that easier
What do we need to solve these issues
● Technology supporting existing protocols/standards● Facilitate Transformation or DataFormating ● Integration language● Runtime to deploy services● Modularity/Granularity● Async architecture & persistence● Tools to develop/package & deploy project● Supervision strategy● (Cloud) infrastructure
Camel
Karaf
ActiveMQ
And now move on to Fuse World
47
Fuse vs Fuse Enterprise
http://fabric.fusesource.org/Open Source Software for “configuring,
provisioning & running Fuse and Apache software on any machines” •physical, virtual, private, public, private+public
cloud or not etc Keeps you DRY from those rainy clouds :) Weave your containers into an easy to manage
fabric
49
What is Fuse Fabric
50
Fuse Fabric : What does it do ?
A. Development (Fuse IDE -WYSIWYG editor, Debug, Runtime, Profiling)
51
Fuse Fabric : What does it do ?
B. Simplify Packaging - FAB
FAB = any jar file containing a pom.xml file under
META-INF/maven/groupId/artifactId/pom.xml (and pom.properties file)
which contain the transitive dependency information for the jar.
Fuse ESB allows to create new instances and administrate them locally or remotely (ssh/jmx)
BUT Instances are not “cloned” Configurations must be
updated (manually) Process is error prone No Deployment Platform
52
Fuse Fabric : What does it do ?
53
C. Instance Management
Fabric (through profiles + maven proxy + registry) will create instances and manage them•Locally•Remotely (ssh)•In the cloud
Fuse Fabric : What does it do ?
Registry = Configurations Repository → replicated, manageable
Agents = Java Fabric runtime Profiles = Artifacts to be deployed
54
What is Fabric
Based on Apache ZooKeeper•Is a Centralized Coordination Service, distributed and highly
reliable•Uses a directory & file based structure
Registry
Registry
2 kinds of registry : Configurations & RuntimeRecommended to have >= 1 registry
Fabric-agent deployed per Fuse ESB containerZookeeper client Agent listens to the registry configurations
provisions features & services
57
Agent registers important information into the registry (jmx)
Agent
Fabric → fabric commands to manage containers, profiles, ensemble, users
58
Fuse Fabric : What does it do ?
Could be managed from Fuse Management Console = WAR + Rest API + Fabric
59
Instance Management - FMC
Create Local, Remote or in the cloud instances
60
Instance Management - FMC
61
Instance Management - FMC
62
Fuse Fabric : What does it do ?
D. Profiling•Simplify deployment in Fuse ESB instances•Provisioning of features across machines
Profile•Envelope for features, bundles, OSGI
configurations & config files•Profiles can be inherited, combined, versioned•Can be defined using commands
63
Management (create/delete/version,…)
Profiling - FMC
64
Example of profile (Camel – Version 1)
Profiling - FMC
65
Configuration files, parameters, jvm
Profiling - FMC
66
Associate profiles to a container (deployment)
Deploying - FMC
67
Fabric : What does it do ?
E. “Services” factory - Virtualisation• Create “indirection” points• Load balancing and failover• Easy elastic scaling of services
Exposing Camel endpoint into the fabric Invoking remote Camel endpoint Loadbalance requests
68
Virtualisation – Camel Fabric
Message brokers automatically discovery each other Clients use connection URI “fabric:default” to connect
to a message broker If you have multiple logical ActiveMQ clusters just name
them in the URI e.g. •fabric:us-west, fabric:us-east, fabric:europe
69
Virtualisation – ActiveMQ Fabric
70
Virtualisation – ActiveMQ Fabric
CXF FabricAdds a feature to the CXF bus for discovery & load balancing
D-OSGIDistribute OSGI services between Fabric instances
ServiceMix FabricAllow local NMR to use remote endpoints when no local NMR endpoint available
Process FabricStart & monitor processesKeep processes running across machines
71
Other Fabric
72
Fabric : What does it do ?
F. Monitoring containers (bundles, OSGI services)
Containers – info (cpu, memory, profiles deployed)
73
Real Time Monitoring - FMC
Statistics - Routes
74
Real Time Monitoring - FMC
Statistics – Brokers
75
Real Time Monitoring - FMC
Statistics – JMS Messages
76
Real Time Monitoring - FMC
77
To be complete
Production Monitoring Solution → JON
78
To be complete
79
To be complete
How Fuse makes that easier
What do we need to solve these issues
● Technology supporting existing protocols/standards● Facilitate Transformation or DataFormating ● Integration language● Runtime to deploy services● Modularity/Granularity● Async architecture & persistence● Tools to develop/package & deploy● Supervision strategy ● (Cloud) infrastructure
Camel
Karaf
ActiveMQ
Fuse
How Fuse makes that easier
Time to make a DEMO
Camel
Karaf
ActiveMQ
Fuse
CXF
Questions?
More info www.fusesource.com & www.redhat.com
@cmoulliard
cmoulliard.blogspot.com
linkedin.com/in/charlesmoulliard
slideshare.net/cmoulliard