FUSE ESB – ServiceMix 4 Dream platform for Java Integration FUSE Community Day, Paris, 14 th  October 2010 Charles Moulliard Sr. Principal Solution Architect Apache Committer
Agenda Presentation of the Fuse ESB technologies Platform unmasked Concepts  Standards Architecture design  Messaging OSGI service Messaging + OSGI services Web High availability and distributed applications Real example Q/A
Fuse ESB –Technologies “ Open the ServiceMix box to discover it ?”
Fuse ESB - Unmasked <<jvm>> :ServiceMix4 Java Boot (Register as service - Wrapper) Lightweight container (Apache Karaf) OSGI Kernel (Apache Felix / Eclipse Equinox) Container Container Container Container Container Container
Fuse ESB – Conceptual Architecture Containers for Integration, Web, Java and SOA. Java Application Web Applications SOAP/REST web services Business processes Routing - EIP Messaging Server (FTP, SMTP, LDAP,…) <<jvm>> :ServiceMix4 EIP Web  Services RESTful Services Business Processes Messaging Java Application Web Applications Java Business Integration Servers
<<jvm>> :ServiceMix4 EIP Web  Services RESTful Services Business Processes Messaging Java Application Web Applications Java Business Integration Servers Fuse ESB - conceptual architecture (cont’) Provides a uniform approach for common cross-functional concerns Logging Lifecycle and deployment Configuration Versioning & Dependency Mgmt Instances Management Security Transactions Logging Lifecycle / Deployment Configuration Versioning Management Security
Fuse ESB - Standards and Technologies <<jvm>> :ServiceMix4 Logging Lifecycle / Deployment Configuration Versioning Management Security Apache Camel,  servicemix-eip BPEL (Apache ODE) WSDL, SOAP, XML, XSD, JAX-WS, JAX-RS, (Apache CXF) Java, JVM-based languages, Spring JMS (Apache ActiveMQ) OSGi Config Admin Log4J, slf4J, commons, Java logging OSGi JAAS JMX, web-console, ssh EIP Web  Services RESTful Services Business Processes Reliable  Messaging Java Application Web Applications Java Business Integration JBI, NMR JSF, JSP, Struts, Wicket
Fuse ESB – Architectures design « What a beautiful world ! »
<<jvm>> :ServiceMix4 BUS Fuse ESB – “Messaging” Architecture  The bus (camel, jms, nmr) orchestrates exchange of messages through different endpoints The exchanges can be of type (InOnly, InOut) and processed in a Sync/Async / Transaction way FTP Route Service (Java/Spring) JAX-WS
<<jvm>> :ServiceMix4 OSGI & Services Fuse ESB – “OSGI” Architecture  This model is oriented for deployment of Java application where we use Spring or Blueprint to configure « services »  The part of OSGI EE covering (JPA, Transaction, JNDI, …) will help the design of such architecture Modules can be designed according to « decoupage » technical or business DAO Ordering Service Java, JPA Java / Spring / Hibernate
<<jvm>> :ServiceMix4 Fuse ESB – “Messaging + OSGI” Architecture  Camel routes allow you to link POJOS together using camel-bean, Spring DM or Blueprint, … BUS FTP JAX-WS Java, JPA OSGI & Services Java / Spring / Hibernate Ordering Service DAO Camel Route from(ftp) .validate() .to(bean:orderOsgi) from(cxf:bean:orderWS) .validate() .to(bean:orderOsgi)
<<jvm>> :ServiceMix4 Fuse ESB – “Web” Architecture  Web projects can be deployed as WAR bundles They could only contain HTML artifacts (hml, gif, css, js, … files) They have access to business modules using OSGI service OSGI & Services Java / Spring / Hibernate Java, JPA Ordering Service DAO Web Application Html, gif, jpeg, css, js files
Fuse ESB – Bundle border  OSGi with bundles offer modularity but … create « limitation » in camel routes  Camel ‘direct://’ component can only be used within camel routes packaged in the same ‘camel context’ in the same bundle. <<jvm>> :ServiceMix4 BUS Camel - FTP from(ftp) .to(direct://order) from(direct://order) .bean://order?method=place Camel-cxf Bundle Bundle
Fuse ESB – Bundle border (con’t)  Camel ‘vm://’ component overcomes this limitation because it works within the JVM context This offers much flexibility for project packaging Is it enough ? <<jvm>> :ServiceMix4 BUS Camel - FTP from(ftp) .to(vm://order) from(vm://order) .bean://order?method=place Camel-cxf Bundle A Bundle B
<<jvm>> :ServiceMix4 : Nestor Fuse ESB – JVM border When more cpu, memory are required, we need more than one JVM - Server This is where ActiveMQ save us and bridge our jvm, servers <<jvm>> :ServiceMix4 : Toto BUS Camel - FTP from(ftp) .to(amq:queue:order) from(amq:queue:order) .bean://order?method=place Bundle A Bundle B BUS Camel - ActiveMq ActiveMQ
ServiceMix and ActiveMQ « The perfect match for high-available solutions and distributed applications »
ActiveMQ replication, clustering & failover Broker replication Shared message store <<jvm>> samwise:ActiveMQ Master state replicated to slave using network connector. <<jvm>> frodo:ActiveMQ <<jvm>> samwise:ActiveMQ Brokers compete for file system or database lock. <<jvm>> frodo:ActiveMQ
Server 2 Server 1 Networks of master-slave pairs A clustered, highly available approach with 2 machines Slave <<jvm>> Frodo:ActiveMq <<jvm>> Frodo:ActiveMq <<jvm>> Frodo:ActiveMq <<jvm>> Frodo:ActiveMq Network Of Brokers Master
…  the thing is, it’s largely the same scaling model in ServiceMix « Simplicity is the best »
Master Fuse ESB : networks of master-slave pairs Differs from AMQ only in that slaves can be ‘partially active’ <<jvm>> frodo: SMX4 <<jvm>> gandalf: SMX4 <<jvm>> saruman: SMX4 <<jvm>> samwise: SMX4 Slave
Master Fuse ESB : embedded brokers Embedded brokers speed up in-VM traffic <<jvm>> frodo:SMX4 <<jvm>> gandalf:SMX4 <<jvm>> saruman: SMX4 <<jvm>> samwise: SMX4 Slave ActiveMq ActiveMq ActiveMq ActiveMq
Breaking out the broker Broker ‘meta-traffic’ will increase as more brokers are added . If you have many SMX instances, then it might be more sensible to deploy your AMQ infrastructure separately <<jvm>> merry: SMX4 <<jvm>> frodo:SMX4 <<jvm>> gandalf:SMX4 <<jvm>> saruman: SMX4 <<jvm>> samwise: SMX4 <<jvm>> pip: SMX4 Slave <<jvm>> master:AMQ <<jvm>> slave: AMQ Master
Fuse ESB – All Together Slave Regional Office Headquarter queue:order BUS Camel - FTP from(amq:queue:order) .bean://order BUS bean://order queue:order Master queue:order BUS SMX4 - Master SMX4 - Slave queue:order from(ftp) .to(amq:queue:order) Regional Office Camel - WS BUS queue:order from(ftp) .to(amq:queue:order) from(amq:queue:order) .bean://order bean://order
Questions ? More info    http://fusesource.com/products/ Follow me Twitter : http://twitter.com/cmoulliard LinkedIn : http://www.linkedin.com/in/charlesmoulliard My blog :  http://cmoulliard.blogspot.com

Apache ServiceMix4 : Dream platform for Java Integration

  • 1.
    FUSE ESB –ServiceMix 4 Dream platform for Java Integration FUSE Community Day, Paris, 14 th October 2010 Charles Moulliard Sr. Principal Solution Architect Apache Committer
  • 2.
    Agenda Presentation ofthe Fuse ESB technologies Platform unmasked Concepts Standards Architecture design Messaging OSGI service Messaging + OSGI services Web High availability and distributed applications Real example Q/A
  • 3.
    Fuse ESB –Technologies“ Open the ServiceMix box to discover it ?”
  • 4.
    Fuse ESB -Unmasked <<jvm>> :ServiceMix4 Java Boot (Register as service - Wrapper) Lightweight container (Apache Karaf) OSGI Kernel (Apache Felix / Eclipse Equinox) Container Container Container Container Container Container
  • 5.
    Fuse ESB –Conceptual Architecture Containers for Integration, Web, Java and SOA. Java Application Web Applications SOAP/REST web services Business processes Routing - EIP Messaging Server (FTP, SMTP, LDAP,…) <<jvm>> :ServiceMix4 EIP Web Services RESTful Services Business Processes Messaging Java Application Web Applications Java Business Integration Servers
  • 6.
    <<jvm>> :ServiceMix4 EIPWeb Services RESTful Services Business Processes Messaging Java Application Web Applications Java Business Integration Servers Fuse ESB - conceptual architecture (cont’) Provides a uniform approach for common cross-functional concerns Logging Lifecycle and deployment Configuration Versioning & Dependency Mgmt Instances Management Security Transactions Logging Lifecycle / Deployment Configuration Versioning Management Security
  • 7.
    Fuse ESB -Standards and Technologies <<jvm>> :ServiceMix4 Logging Lifecycle / Deployment Configuration Versioning Management Security Apache Camel, servicemix-eip BPEL (Apache ODE) WSDL, SOAP, XML, XSD, JAX-WS, JAX-RS, (Apache CXF) Java, JVM-based languages, Spring JMS (Apache ActiveMQ) OSGi Config Admin Log4J, slf4J, commons, Java logging OSGi JAAS JMX, web-console, ssh EIP Web Services RESTful Services Business Processes Reliable Messaging Java Application Web Applications Java Business Integration JBI, NMR JSF, JSP, Struts, Wicket
  • 8.
    Fuse ESB –Architectures design « What a beautiful world ! »
  • 9.
    <<jvm>> :ServiceMix4 BUSFuse ESB – “Messaging” Architecture The bus (camel, jms, nmr) orchestrates exchange of messages through different endpoints The exchanges can be of type (InOnly, InOut) and processed in a Sync/Async / Transaction way FTP Route Service (Java/Spring) JAX-WS
  • 10.
    <<jvm>> :ServiceMix4 OSGI& Services Fuse ESB – “OSGI” Architecture This model is oriented for deployment of Java application where we use Spring or Blueprint to configure « services » The part of OSGI EE covering (JPA, Transaction, JNDI, …) will help the design of such architecture Modules can be designed according to « decoupage » technical or business DAO Ordering Service Java, JPA Java / Spring / Hibernate
  • 11.
    <<jvm>> :ServiceMix4 FuseESB – “Messaging + OSGI” Architecture Camel routes allow you to link POJOS together using camel-bean, Spring DM or Blueprint, … BUS FTP JAX-WS Java, JPA OSGI & Services Java / Spring / Hibernate Ordering Service DAO Camel Route from(ftp) .validate() .to(bean:orderOsgi) from(cxf:bean:orderWS) .validate() .to(bean:orderOsgi)
  • 12.
    <<jvm>> :ServiceMix4 FuseESB – “Web” Architecture Web projects can be deployed as WAR bundles They could only contain HTML artifacts (hml, gif, css, js, … files) They have access to business modules using OSGI service OSGI & Services Java / Spring / Hibernate Java, JPA Ordering Service DAO Web Application Html, gif, jpeg, css, js files
  • 13.
    Fuse ESB –Bundle border OSGi with bundles offer modularity but … create « limitation » in camel routes Camel ‘direct://’ component can only be used within camel routes packaged in the same ‘camel context’ in the same bundle. <<jvm>> :ServiceMix4 BUS Camel - FTP from(ftp) .to(direct://order) from(direct://order) .bean://order?method=place Camel-cxf Bundle Bundle
  • 14.
    Fuse ESB –Bundle border (con’t) Camel ‘vm://’ component overcomes this limitation because it works within the JVM context This offers much flexibility for project packaging Is it enough ? <<jvm>> :ServiceMix4 BUS Camel - FTP from(ftp) .to(vm://order) from(vm://order) .bean://order?method=place Camel-cxf Bundle A Bundle B
  • 15.
    <<jvm>> :ServiceMix4 :Nestor Fuse ESB – JVM border When more cpu, memory are required, we need more than one JVM - Server This is where ActiveMQ save us and bridge our jvm, servers <<jvm>> :ServiceMix4 : Toto BUS Camel - FTP from(ftp) .to(amq:queue:order) from(amq:queue:order) .bean://order?method=place Bundle A Bundle B BUS Camel - ActiveMq ActiveMQ
  • 16.
    ServiceMix and ActiveMQ« The perfect match for high-available solutions and distributed applications »
  • 17.
    ActiveMQ replication, clustering& failover Broker replication Shared message store <<jvm>> samwise:ActiveMQ Master state replicated to slave using network connector. <<jvm>> frodo:ActiveMQ <<jvm>> samwise:ActiveMQ Brokers compete for file system or database lock. <<jvm>> frodo:ActiveMQ
  • 18.
    Server 2 Server1 Networks of master-slave pairs A clustered, highly available approach with 2 machines Slave <<jvm>> Frodo:ActiveMq <<jvm>> Frodo:ActiveMq <<jvm>> Frodo:ActiveMq <<jvm>> Frodo:ActiveMq Network Of Brokers Master
  • 19.
    … thething is, it’s largely the same scaling model in ServiceMix « Simplicity is the best »
  • 20.
    Master Fuse ESB: networks of master-slave pairs Differs from AMQ only in that slaves can be ‘partially active’ <<jvm>> frodo: SMX4 <<jvm>> gandalf: SMX4 <<jvm>> saruman: SMX4 <<jvm>> samwise: SMX4 Slave
  • 21.
    Master Fuse ESB: embedded brokers Embedded brokers speed up in-VM traffic <<jvm>> frodo:SMX4 <<jvm>> gandalf:SMX4 <<jvm>> saruman: SMX4 <<jvm>> samwise: SMX4 Slave ActiveMq ActiveMq ActiveMq ActiveMq
  • 22.
    Breaking out thebroker Broker ‘meta-traffic’ will increase as more brokers are added . If you have many SMX instances, then it might be more sensible to deploy your AMQ infrastructure separately <<jvm>> merry: SMX4 <<jvm>> frodo:SMX4 <<jvm>> gandalf:SMX4 <<jvm>> saruman: SMX4 <<jvm>> samwise: SMX4 <<jvm>> pip: SMX4 Slave <<jvm>> master:AMQ <<jvm>> slave: AMQ Master
  • 23.
    Fuse ESB –All Together Slave Regional Office Headquarter queue:order BUS Camel - FTP from(amq:queue:order) .bean://order BUS bean://order queue:order Master queue:order BUS SMX4 - Master SMX4 - Slave queue:order from(ftp) .to(amq:queue:order) Regional Office Camel - WS BUS queue:order from(ftp) .to(amq:queue:order) from(amq:queue:order) .bean://order bean://order
  • 24.
    Questions ? Moreinfo  http://fusesource.com/products/ Follow me Twitter : http://twitter.com/cmoulliard LinkedIn : http://www.linkedin.com/in/charlesmoulliard My blog : http://cmoulliard.blogspot.com