Your SlideShare is downloading. ×
  • Like
An Introduction to Apache ServiceMix 4 - FUSE ESB
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

An Introduction to Apache ServiceMix 4 - FUSE ESB

  • 9,944 views
Published

A presentation I gave at the FUSE Community Day in London, June 10th 2010.

A presentation I gave at the FUSE Community Day in London, June 10th 2010.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
9,944
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
361
Comments
0
Likes
7

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1.
    • Apache ServiceMix 4
    • FUSE Community Day London, 10th June 2010
    Adrian Trenaman Distinguished Consultant Financial Services Group, Progress Professional Services [email_address] .com http: //trenaman . blogspot .com
  • 2. Agenda
    • A little bit about what ServiceMix 4 really is
      • Conceptual architecture
      • Standards and technologies
      • Deployment and scaling
      • Experience on the road
    • How you can be successful with ServiceMix 4
      • As architects
      • As developers
      • As project managers
  • 3. ServiceMix 4 - architecture, standards & technologies
  • 4. Apache ServiceMix 4 - conceptual architecture
    • JVM-based runtime container for integration and SOA.
      • EIP-style integration flows
      • SOAP web services
      • REST web services
      • Business processes
      • Reliable messaging
      • Business Logic
    <<jvm>> :ServiceMix4 Integration Flows Web Services RESTful Services Business Processes Reliable Messaging Business Logic
  • 5. Apache ServiceMix 4 - conceptual architecture (cont’)
    • ServiceMix provides a uniform approach for common cross-functional concerns
      • Logging
      • Lifecycle and deployment
      • Configuration
      • Versioning & Dependency Mgmt
      • Management
      • Security
      • Transactions
    <<jvm>> :ServiceMix4 Integration Flows Web Services RESTful Services Business Processes Reliable Messaging Business Logic Logging Lifecycle / Deployment Configuration Versioning Management Security
  • 6. Apache ServiceMix 4 - standards and technologies <<jvm>> :ServiceMix4 Integration Flows Web Services RESTful Services Business Processes Reliable Messaging Business Logic Logging Lifecycle / Deployment Configuration Versioning Management Security EIP (Apache Camel) or JBI (ServiceMix 3) BPEL (Apache ODE) WSDL, SOAP, XML, XSD, JAX-WS, JSON, (Apache CXF) Java, JVM-based languages JMS (Apache ActiveMQ) OSGi Config Admin Log4J, Slf4J, commons, Java logging, … OSGi SSH, JAAS, HTTPS, TLS, … JMX, web-console, ssh
  • 7. Modular deployment with bundles and features
    • You can deploy almost anything into ServiceMix 4
      • War, Jar, bundle, spring, …
    • Prefer OSGi bundles for your routing / integration / business logic
      • More modular design, explicit versioning, classpath control.
      • Can share classes or objects (OSGi services)
      • Dynamic wiring of OSGi services allows live hot deployment of patches without impacting your production deployment.
    • Use the ‘feature’ mechanism to group and co-deploy bundles.
    <<jvm>> :ServiceMix4 smx:> features:addUrl file:my-features.xml smx:> features:install f1 a:bundle b:bundle c:bundle f1 f2 x:bundle y:bundle common my-features.xml
  • 8. Getting into production…
    • Deployment from Maven repository is ideal…
      • … but remember, admins don’t like running internet-happy developer tools like Maven in production!
      • Be prepared to deliver artifacts via .zip or .tar.gz - there are features-based Maven plugins to help!
    Maven DEV SYSTEST UAT PROD .tar.gz
  • 9. Scaling up, scaling out… ‘to understand ServiceMix, first you must understand ActiveMQ’
  • 10. ActiveMQ: networked brokers
    • Brokers use network connectors to share consumer information and make routing decisions using “store-and-forward”
      • JMS clients use failover URLs or auto-discovery to connect to a live broker.
    c1:Consumer c2:Consumer p:Producer <<jvm>> frodo:ActiveMQ <<jvm>> gandalf:ActiveMQ Foo: Foo: m 1: Producer sends a message m to the broker. m 2: Broker ‘frodo’ decides to route message via broker ‘gandalf’. m 3: message is delivered.
  • 11. Aside: networked brokers allow you to create local broker clusters and implement wide-scale cross-geography architectures.
  • 12. 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
  • 13. Networks of master-slave pairs
    • A clustered, highly available approach
    Master <<jvm>> merry:ActiveMQ <<jvm>> frodo:ActiveMQ <<jvm>> gandalf:ActiveMQ <<jvm>> saruman:ActiveMQ <<jvm>> samwise:ActiveMQ <<jvm>> pip:ActiveMQ Slave
  • 14. … the thing is, it’s largely the same scaling model in ServiceMix
  • 15. ServiceMix 4: networks of master-slave pairs
    • Differs from AMQ only in that slaves can be ‘partially active’
    <<jvm>> merry: SMX4 <<jvm>> frodo:SMX4 <<jvm>> gandalf:SMX4 Master <<jvm>> saruman: SMX4 <<jvm>> samwise: SMX4 <<jvm>> pip: SMX4 Slave
  • 16. ServiceMix 4: embedded brokers
    • Embedded brokers speed up in-VM traffic, and facilitate location transparency via a ‘messaging fabric’
    <<jvm>> merry: SMX4 <<jvm>> frodo:SMX4 <<jvm>> gandalf:SMX4 ActiveMQ ActiveMQ ActiveMQ ActiveMQ ActiveMQ ActiveMQ Master <<jvm>> saruman: SMX4 <<jvm>> samwise: SMX4 <<jvm>> pip: SMX4 Slave
  • 17. ‘ The unbearable chattiness of brokers’ or ‘too many brokers spoiled the pot’
  • 18. Breaking out the broker
    • Broker ‘meta-traffic’ will increase as more brokers are added.
      • Sharing info on what consumers are listening to what destinations.
    • If you have many SMX instances, then it might be more sensible to deploy your AMQ infrastructure separately.
      • This also keeps things conceptually simple.
      • We like simple.
    Master <<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
  • 19. Respecting and supporting our JBI heritage
  • 20. JBI - fundamentals <<jvm>> :SMX <<component>> :FTP NMR <<component>> :EIP <<component>> :SAXON <<component>> :JMS ServiceMix acts as a container for “components”, communicating with each other using the XML-based Normalized Message Router. Use well-known components like JMS, HTTP, CXF, Bean, FTP, FILE, or write your own.
  • 21. JBI fundamentals (cont’) <<jvm>> :SMX <<component>> :FTP NMR <<component>> :EIP <<component>> :SAXON <<component>> :JMS Build an application by configuring and wiring endpoints as SUs, combining them into SAs that can be deployed atomically. Endpoints are configured using xbean (Spring) configuration; deployment artifacts are created using maven plugins. :Transformer :Pipeline :Producer :Poller
  • 22. JBI fundamentals: packaging Each component is specialized using a SU. In ServiceMix, the endpoint(s) are defined in an xbean.xml file. Maven plugins are used to generate jbi.xml file SUs can optionally contain support classes and resources such as WSDL & XSD SUs are bundled together into an SA to be deployed atomically. <<jar>> <<zip>> .class xbean.xml jbi.xml resources ftp-input-su <<zip>> .class xbean.xml jbi.xml resources eip-su <<zip>> .class xbean.xml jbi.xml resources jms-output-su <<zip>> .class xbean.xml jbi.xml resources xslt-transformer-su
  • 23. JBI support in ServiceMix 4
    • Full support for JBI 1.0
    • Use JBI without the packaging!
      • Spring + JBI components.
    • Use NMR without canonical XML payload
    • Use Interceptors to monitor endpoints and message exchanges.
    • New clustering architecture:
      • Clustered consumers write to NMR which uses a single JMS queue.
      • Providers listen on queue using message selectors
      • ActiveMQ network connectors provide location transparency.
    <<jvm>> :SMX NMR <<jvm>> :SMX NMR :FilePoller :JMSProvider
  • 24. Where we are today
  • 25. What is the community up to?
    • Better documentation - the ServiceMix book
    • Building on OSGi Blueprints technology
    • Supporting Apache Ode
    • Scalability, performance, feature build-out
  • 26. Adopting ServiceMix 4
    • Java, Maven, Spring - if you don ’t have these skills, be prepared to get them.
    • Invest in technical steering - don’t go in the wrong direction
    • Nominate FUSE expert(s) on your team - then let them spread the love.
    • Know yourself - If you 池 e not source-friendly, then get professional help.
    • In the source, there is truth - don’t be afraid of the truth.
  • 27. Words from a battle-hardened consultant…
    • Don’t confuse enterprise integration with workflow or BPM
      • Use the right tool for the job at hand.
    • Respect the {n|cr}appy path above the happy path.
    • Validate performance early, and keep validating it.
    • Prefer Camel; use JBI as an integration point.
    • Never forget your customer. Give them visibility and control.
      • Thing about management early.
  • 28.
    • Apache ServiceMix 4
    • FUSE Community Day London, 10th June 2010
    Adrian Trenaman Distinguished Consultant Financial Services Group, Progress Professional Services [email_address] .com http: //trenaman . blogspot .com