make easier integration of your services with fuse solutions - redhat 2013

Post on 28-Nov-2014

2.129 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

This presentation is all about why Fuse technology makes live easier of Integration projects / services using Camel, Karaf & Fabric

TRANSCRIPT

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@redhat.com

cmoulliard.blogspot.com

linkedin.com/in/charlesmoulliard

slideshare.net/cmoulliard

top related