Spoilt for Choice Which Integration Framework to choose? Integration vs. Mule ESB vs.
Main Tasks Evaluation of Technologies and Products Requirements Engineering Enterprise Architecture Management Business Process Management Architecture and Development of Applications Planning and Introduction of SOA Integration of Legacy Applications Cloud Computing Consulting Developing Speaking Coaching Writing Contact Email: kai.waehner@mwea.de Blog: www.kai-waehner.de/blog Twitter: @KaiWaehner Social Networks: Xing, LinkedIn 15.05.2012 Seite 2
What is the Key Message? 15.05.2012 Seite 3
Key Messages Do not reinvent the integration wheel! 15.05.2012 Seite 4
Key Messages Do not reinvent the integration wheel! There are some good alternatives for Integration! 15.05.2012 Seite 5
Key Messages Do not reinvent the integration wheel! There are some good alternatives for Integration! Often an ESB is the wrong Choice! 15.05.2012 Seite 6
Agenda 1) Systems Integration 2) Integration Frameworks 3) Spring Integration 4) Mule ESB 5) Apache Camel 6) And the Winner is... 15.05.2012 Seite 7
Agenda 1) Systems Integration 2) Integration Frameworks 3) Spring Integration 4) Mule ESB 5) Apache Camel 6) And the Winner is... 15.05.2012 Seite 8
What is the Problem? Growth Applications Interfaces Technologies Products 15.05.2012 Seite 9
Heterogeneity 15.05.2012 Seite 10
Spaghetti Solutions Everybody communicates to everybody 15.05.2012 Seite 11
Solution: Systems Integration All Roads lead to Rome... 15.05.2012 Seite 12
Alternatives for Systems Integration No Tool Integration Framework Enterprise Service Bus (ESB) Low High Complexity of Integration 15.05.2012 Seite 13
Alternatives for Systems Integration No Tool Integration Framework Enterprise Service Bus (ESB) Low High Complexity of Integration Spring Integration vs. Mule ESB vs. Apache Camel 15.05.2012 Seite 14
Agenda 1) Systems Integration 2) Integration Frameworks 3) Spring Integration 4) Mule ESB 5) Apache Camel 6) And the Winner is... 15.05.2012 Seite 15
Wishes Standardized Modeling Efficient Realization Automatic Testing 15.05.2012 Seite 16
Enterprise Integration Patterns (EIP) 15.05.2012 Seite 17
Enterprise Integration Patterns (EIP) 15.05.2012 Seite 18
Enterprise Integration Patterns (EIP) 19
Relation between EIPs and Integrations Frameworks Integration vs. Mule ESB vs. implement 15.05.2012 Seite 20
Comparison Criteria Open source Basic concepts / architecture Testability Commercial support Error handling Monitoring Enterprise readiness Developer-centric vs. designer-centric Expandability Deployment Popularity Tool support Connectivity Domain specific language (DSL) 15.05.2012 Seite 21
Similarities 15.05.2012 Seite 22
Connectivity Integration of different Technologies 15.05.2012 Seite 23
Domain Specific Languages (DSL) A domain-specific language (DSL) is a programming language or specification language dedicated to a particular problem domain, a particular problem representation technique, and / or a particular solution technique. Wikipedia 15.05.2012 Seite 24
Architecture http://java.dzone.com/articles/apache-camel-integration (Exemplarily: Apache Camel => Concepts are all the same, only different names) 15.05.2012 Seite 25
Deployment Standalone Application Server Web Container Spring Container OSGi Cloud 15.05.2012 Seite 26
Enterprise-Ready Maturity Transactions Concurrency Error handling Monitoring Testability 15.05.2012 Seite 27
Licensing Integration vs. Mule ESB vs. Apache License Common Public Atttribution License (CPAL) Apache License 15.05.2012 Seite 28
Commercial Support Integration vs. Mule ESB vs. 15.05.2012 Seite 29
Tool Support Integration Graph for Spring Integration Mule Studio for Mule ESB Fuse IDE for Apache Camel Talend Studio for Apache Camel 15.05.2012 Seite 30
Upcoming Procedure Concepts of each Framework Code Example Live Demo 15.05.2012 Seite 31
Comparison Criteria Focus Open source Basic concepts / architecture Testability Commercial support Error handling Monitoring Enterprise readiness Developer-centric vs. designer-centric Expandability Deployment Popularity Tool support Connectivity Domain specific language (DSL) 15.05.2012 Seite 32
Agenda 1) Systems Integration 2) Integration Frameworks 3) Spring Integration 4) Mule ESB 5) Apache Camel 6) And the Winner is... 15.05.2012 Seite 33
Connectivity AMQP Feed File FTP(S) GemFire HTTP TCP UDP JDBC JMS Mail MongoDB Redis RMI SFTP Stream Twitter Web Service XML XMPP How to create own custom adapter? 15.05.2012 Seite 34
DSLs XML (Not production-ready yet) 15.05.2012 Seite 35
Code Example 15.05.2012 Seite 36
Code Example http://blog.springsource.org/2012/03/05/introducing-spring-integration-scala-dsl/ 15.05.2012 Seite 37
Live Demo Spring Integration in Action 15.05.2012 Seite 38
Integration Graph 15.05.2012 Seite 39
Integration Graph Pro Visual Designer for Spring Integration flows Vice versa Editing (code generation vs. coding by hand) Open Source (part of Spring IDE at github) Simple Eclipse plugin Just Spring Integration Export of flow diagrams Contra Non-intuitive usability Unclear diagrams Immature (e.g. missing documentation, problems with code examples) 15.05.2012 Seite 40
Agenda 1) Systems Integration 2) Integration Frameworks 3) Spring Integration 4) Mule ESB 5) Apache Camel 6) And the Winner is... 15.05.2012 Seite 41
Mule ESB 15.05.2012 Seite 42
Standalone / Web Application Deployment http://www.mulesoft.org/documentation/display/mule3user/embedding+mule+in+a+java+application+or+webapp 15.05.2012 Seite 43
Connectivity AS400 Data Queue Abdera Amazon SQS jbpm CICS CTG CXF Email FTP Hibernate HTTP/S Legs4Mule IMAP/S Servlet SFTP SMTP/S SOAP STDIO TCP UDP VM XMPP WebSphere MQ WSDL Atom Base64 encoded Byte arrays CSV Encrypted GZIP Hex Strings HTML/ XHTML Java Objects JSON EDI COBOL Copybook XML Amazon S3 Authorize.net Apple Push Bit.ly CMIS CyberSource Facebook Flickr HBase Magento JCR JDBC Jersey Jetty JMS LDAP Multicast POP3/S Quartz Restlet RMI SAP Many more Connectors + easy to create own Connectors 15.05.2012 Seite 44
Connectivity Several Proprietary Connectors available, for instance: 15.05.2012 Seite 45
OSGi Support? OSGi adds another complexity to building applications. [...] OSGi is a great specification for middleware vendors, but a terrible specification for the end user. Ross Mason, MuleSoft, November 2010 15.05.2012 Seite 46
DSLs XML 15.05.2012 Seite 47
Code Example 15.05.2012 Seite 48
Live Demo Mule in Action 15.05.2012 Seite 49
Mule Studio 15.05.2012 Seite 50
Mule Studio Pro Visual Designer for Mule Flows Visual Live Monitoring Vice versa Editing (Code generation vs. coding by hand) Simple Eclipse plugin Just Mule Intuitive GUI Contra Proprietary Subscription required for many enterprise features (such as monitoring) 15.05.2012 Seite 51
Agenda 1) Systems Integration 2) Integration Frameworks 3) Spring Integration 4) Mule ESB 5) Apache Camel 6) And the Winner is... 15.05.2012 Seite 52
DSLs XML 15.05.2012 Seite 53
Connectivity SQL Twitter JMX File AWS RMI CXF HTTP MongoDB TCP FTP RSS Akka Netty Bean-Validation LDAP Atom Lucene AMQP SMTP MQ JDBC XSLT IRC Jetty jclouds EJB Quartz JMS Many more Components + easy to create own Components 15.05.2012 Seite 54
Code Example 15.05.2012 Seite 55
Code Example 15.05.2012 Seite 56
Live Demo Apache Camel in Action 15.05.2012 Seite 57
Tool Support Fuse IDE vs. Talend Open Studio for ESB 15.05.2012 Seite 58
Fuse IDE 15.05.2012 Seite 59
Fuse IDE Pro Visual Designer for Camel routes Visual Live Monitoring (for debugging, browsing, tracing) Vice versa Editing (code generation vs. coding by-hand) Just a simple Eclipse-Plugin Just Camel Intuitive GUI Export of route diagrams JUnit Test Wizard (generates scaffolding for tests) Contra Proprietary Subscription required Only XML DSL (this is not really a contra, because only Camel offers other DSLs) 15.05.2012 Seite 60
Talend Open Studio for ESB 15.05.2012 Seite 61
Talend Open Studio for ESB Pro Visual Designer for Camel routes Visual Live Monitoring Open Source (at github) Community Edition (not all features) Zero Coding Contra Zero Coding Only Java DSL (plus a lot of boilerplate code) No vice versa code editing (only code generation) No intuitive user interface => no simple Eclipse plugin => based on Eclipse, but it is more an own product (1GB) => full ESB only 15.05.2012 Seite 62
Agenda 1) Systems Integration 2) Integration Frameworks 3) Spring Integration 4) Mule ESB 5) Apache Camel 6) And the Winner is... 15.05.2012 Seite 63
And the Winner is... Integration Mule ESB 15.05.2012 Seite 64
When to use? Integration Mule ESB 15.05.2012 Seite 65
When to use? Spring Project Typical JVM Technologies No additional Framework Integration Mule ESB 15.05.2012 Seite 66
When to use? Integration One of the available proprietary Connectors is required Mule ESB 15.05.2012 Seite 67
When to use? Integration Mule ESB In all other Cases 15.05.2012 Seite 68
Alternatives for Systems Integration No Tool Integration Framework Enterprise Service Bus (ESB) Low High Complexity of Integration 15.05.2012 Seite 69
Alternatives for Systems Integration No Tool Integration Framework Enterprise Service Bus (ESB) Low High Complexity of Integration Integration Connectivity Routing Transformation 15.05.2012 Seite 70
Alternatives for Systems Integration No Tool Integration Framework Enterprise Service Bus (ESB) Low High Complexity of Integration Integration Connectivity Routing Transformation Spring Integration vs. Mule ESB vs. Apache Camel 15.05.2012 Seite 71
Alternatives for Systems Integration No Tool Integration Framework Enterprise Service Bus (ESB) Low High Complexity of Integration 15.05.2012 Seite 72
Alternatives for Systems Integration No Tool Integration Framework Enterprise Service Bus (ESB) Low High Complexity of Integration Integration Connectivity Routing Transformation Middleware Product Integration Business Process Management Business Activity Monitoring Registry / Repository Rules Engine 15.05.2012 Seite 73
Alternatives for Systems Integration No Tool Integration Framework Enterprise Service Bus (ESB) Low High Complexity of Integration Integration Connectivity Routing Transformation Middleware Product Integration Business Process Management Business Activity Monitoring Registry / Repository Rules Engine 15.05.2012 Seite 74
Alternatives for Systems Integration No Tool Integration Framework Enterprise Service Bus (ESB) Low High Complexity of Integration Apache ServiceMix, Mule ESB, WSO2 ESB vs. IBM Message Broker, IBM ESB, Oracle ESB, webmethods ESB Middleware Product Integration Business Process Management Business Activity Monitoring Registry / Repository Rules Engine 15.05.2012 Seite 75
Did you get the Key Messages? 15.05.2012 Seite 76
Key Messages Do not reinvent the integration wheel! There are some good alternatives for Integration! Often an ESB is the wrong Choice! 15.05.2012 Seite 77
Did you get the Key Messages? 15.05.2012 Seite 78
Become a Part of the Open Source Community 15.05.2012 Seite 79
Thank you for your Attention. Any Questions? Integration or Mule ESB or = Smart EAI MaibornWolff et al: Email: kai.waehner@mwea.de Twitter: @KaiWaehner Blog: www.kai-waehner.de/blog