problems faced 2. The idea of a service-oriented online architecture 3. How and why we selected Mule 4. Overview and examples of Mule use cases 5. Best practices and learnings
to available to other portals Server applications only run on specialized hardware and application platform Everyone is talking to everyone, point-to-point communication is difficult to manage Business context and problems faced Existing online infrastructure was complex, expensive to maintain and could not be used by other portals 2. May 2012 3 QAware Corporate Network (Head Quarter) Portal DMZ Distribution Partner LAN (*) as Reverse Proxy Web- Server (*) Web- Server (*) Browser Oracle DB2 Backend Backend Backend Backend Client- Application Client- Application Data Platform Component Application Platform Online- Server Server- Application Server- Application - Spare Parts - Technical Info - …
more extensible QAware 4 2. May 2012 Business context and problems faced Online Client Corporate Network (Head Quarter) DMZ Primary ESB Backend Portal Online- Server (*) as Reverse Proxy Local Area Network Web- Server (*) Web- Server (*) Browser
proved to be rather difficult due to close coupling to platform ▪ To get rid of the application platform components we had to identify the all required services for the online scenario ▪ Then a light-weight surrogate based on Mule was implemented to provide these services to the applications instead ▪ The portal independent services had to be identified and extracted from the portal ▪ Access to all backend systems is now provided by one central Mule ESB instance, implementing logging and security ▪ The maintenance costs for the simplified architecture have already decreased significantly ▪ New server application instances can be deploy transparently within hours instead of days now Business context and problems faced The goal was to simplify the architecture, unify the way backend systems are accessed and cut operation costs 2. May 2012 5 QAware
problems faced 2. The idea of a service-oriented online architecture 3. How and why we selected Mule 4. Overview and examples of Mule use cases 5. Best practices and learnings
building blocks QAware 7 2. May 2012 The idea of a service-oriented online architecture Online Client Corporate Network (Head Quarter) DMZ Primary ESB Backend Portal Online- Server (*) as Reverse Proxy Local Area Network Web- Server (*) Web- Server (*) Web- Server (*) Local ESB Browser
online servers in national networks QAware 8 2. May 2012 The idea of a service-oriented online architecture Local ESB Corporate Network (Head Quarter) Primary ESB Backend Portal Online- Server National Corporate Network (USA) Secondary ESB DMZ Backend‘ Local Area Network (*) as Reverse Proxy Web- Server (*) Web- Server (*) Web- Server (*) Browser Online- Client
support different user groups and network locations QAware 9 2. May 2012 The idea of a service-oriented online architecture Corporate Network Primary ESB Backend Portal Online- Server National Corporate Network (USA) Secondary ESB DMZ Backend‘ Local Area Network Web- Server (*) Web- Server(*) (*) as Reverse Proxy Local ESB Browser Online- Client Web- Server(*) Portal Online- Server
problems faced 2. The idea of a service-oriented online architecture 3. How and why we selected Mule 4. Overview and examples of Mule use cases 5. Best practices and learnings
Mule … ▪ Instead we did a qualitative and quantitative comparison of major open source ESB products using different criteria: ▪ Primary: professional maintenance, commercial support with SLAs, licensing, performance, operations by IT department possible ▪ Secondary: documentation, code quality, activity and size of community, Spring support, sync and async communication, supported standards, app server integration, development tools ▪ Mule quickly emerged as the favored ESB product, followed by Fuse ESB and WSO2 ▪ Static analysis of the Mule sources (Sonar, Structure101) showed acceptable quality ▪ Modularization and project structure looks well- thought-out and enables light-weight deployment ▪ Good code quality, in spite of found violations and partially low documentation ▪ Test coverage is reasonably high to ensure correct function in case of changes How and why we selected Mule Based on the proposed architecture scenarios we could identify the requirements on the ESB product 2. May 2012 11 QAware
Are all 3 uses cases supported? ▪ Development model: used frameworks, supported IDEs, build tools? ▪ Learning curve: How good is the documentation? Clear API? ▪ Development effort: How long does it take to implement the uses cases? ▪ Mule ESB scored best in comparison, closely followed by WSO2 How and why we selected Mule Implementation of a small PoC prototype to get a first impression of the chosen products 2. May 2012 12 QAware 1 2 3 WS-Call POJO Provider External WS-Call (Asnyc) WS-Proxy with Transform
(Apache JMeter) ▪ Measurement of performance relevant metrics using Software-EKG ▪ Live profiling of system behavior (JProfiler) ▪ All findings have been reported to MuleSoft ▪ Together with MuleSoft we were able to solve all the found issues: ▪ MuleSoft supplied a working patch for the Registry synchronization issue within 2 days ▪ Other issues could simply be addressed using the optimized configuration parameters (thread pool settings, …) supplied to us ▪ This was decisive for the confidence and the final decision for Mule ESB How and why we selected Mule Intensive performance tests uncovered several findings (with Mule 3.1.1) … 2. May 2012 13 QAware
problems faced 2. The idea of a service-oriented online architecture 3. How and why we selected Mule 4. Overview and examples of Mule use cases 5. Best practices and learnings
Java web application to be operated by the IT department ▪ Embedding Mule into a web app is pretty straight forward using the a context listener ▪ Custom listener implementation required to customize working directory and various other system properties ▪ Each Glassfish v2.1 app server instance runs with 512mb heap space on SuSe linux ▪ The reverse proxies are Apache 2.2 instances using mod_proxy with stickyness ▪ The final WAR is simply assembled from the Maven artifacts of the individual Mule apps ▪ Hot-deployment of individual apps not required Overview and examples of Mule use cases Clustered deployment of Mule ESB as a web application for scalability and high availability 2. May 2012 15 QAware
interface to access details user from heterogeneous data sources 2. May 2012 16 QAware ▪ Access to the endpoint is controlled using a Spring security filter ▪ Each data source has specific POJO implementation or private flow ▪ Choice is based on payload using a Groovy evaluator
and types ▪ Custom transformers ▪ Choice uses CXF operation header ▪ XSLT to transform XML/RPC to JAXB XML structure Overview and examples of Mule use cases Web service to XML/RPC service adapter to access the BZST service for simple and qualified VAT checks 2. May 2012 17 QAware
POJOs with JAX-WS annotations ▪ The service component only performs validation and preprocessing of request Overview and examples of Mule use cases Web service to email service adapter to send support requests to a ticketing backend system 2. May 2012 18 QAware ▪ The actual sending using an SMTP connector is performed asynchronous ▪ Custom transformer uses Velocity to convert request object to email body
problems faced 2. The idea of a service-oriented online architecture 3. How and why we selected Mule 4. Overview and examples of Mule use cases 5. Best practices and learnings
and flow definitions ▪ The MuleFunctionalTest allowed us to test our flows within the IDE ▪ No deployment to a standalone instance required, thus reducing turn-around times ▪ The MuleClient is not really intuitive to use ▪ Smart combination of SoapUI test cases together with mock services allowed 100% local and off-site development ▪ Learning: develop as much as possible as POJOs and use „traditional“ unit testing ▪ Learning: take the time to write a good mock for the service you are integrating Best practices and learnings Test driven development using MuleFunctionalTests, SoapUI tests and mock services 2. May 2012 20 QAware
most efficient Enterprise Service Bus” (http://www.mulesoft.com/mule-esb-small-footprint) ▪ We went well below the mentioned figures by building a custom Mule distribution tuned and optimized for our specific use cases ▪ Based on the default distribution assembly XML found in the Mule community sources, we 1. got rid of everything not required in production, mainly docs and examples, but also not required Tanuki EXE wrapper binaries, etc.pp.; 2. selected only the required Mule modules and transports our uses cases really required, this reduced the amount of 3rd party libs significantly; 3. used Maven dependency management to have full control of all used 3rd party libraries, used more recent versions where possible (e.g. Spring, CXF, Saxon) 4. added our Mule apps and their dependencies, then repackaged ▪ Thorough load tests lead to optimized JVM parameters and high performance: -Xmx=128m -Xms=128m -XX:MaxPermSize=64m -XX:NewRatio=2 -XX:SurvivorRatio=12 -XX:+UseParallelGC -XX:+UseParallelOldGC Best practices and learnings Building a custom Mule distribution for 100% control of all dependencies and optimal performance 2. May 2012 21 QAware 96 MB 30 MB 37 MB
would have been impossible; the system needs to be available around the clock ▪ Instead a staged migration of the infrastructure components and applications has been used: ▪ Phase 1: Migration of all online servers, application by application, introduction of the primary ESB with first required services ▪ Phase 2: Integration of a new online portal, operated in parallel to the old portal infrastructure ▪ Phase 3: Migration of all „legacy“ portals to access the new online infrastructure components ▪ After each phase the behavior of the new components was monitored closely to detect any problems in production ▪ The services and backend systems integrated by the primary ESB instance constantly grew (I might still be growing in next phases) Best practices and learnings No big bang: start small and migrate in several phases 2. May 2012 22 QAware