Developing with an Enterprise Service Bus


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Lot of buzz but what does this mean to developers
  • Talk about the stories of integrate versus re build
  • Vendors are singing different songs Integration or other Focus on Mule Loan Broker Petstore
  • Politically correct software – everybody talks to everybody
  • Think in terms of business services not technology
  • No transformer needed No Inbound router needed – could use to aggregate requests, filter requests, or resequence requests Outbound router – might filter quotes that don’t meet minimum criteria, might route faults to some other location
  • 4 new banks Diff messaging Integrate lender service
  • Developing with an Enterprise Service Bus

    1. 1. Developing with an Enterprise Service Bus Brian Cochran & Eric Stevens
    2. 2. Who We Are <ul><li>Own and Operate Architecture Consulting Company specializing in ESB technology and implementations. </li></ul><ul><li>Working on an ESB implementation in the utility industry for last 18 months. </li></ul><ul><li>Expertise in extremely high volume transactional environments. Making use of ESB as a Grid enabler. </li></ul><ul><li>Background in architecting financial service and insurance solutions for Fortune 1000. </li></ul><ul><li>Primarily open source centric. </li></ul>
    3. 3. Outline <ul><li>What is an ESB? </li></ul><ul><li>Where and why should you use one? </li></ul><ul><li>What tools should you use? </li></ul><ul><li>What do you need to do (a look at the popular Loan Broker example)? </li></ul><ul><li>What are the “gotchas”? </li></ul><ul><li>Who is using this stuff? </li></ul>
    4. 4. Software Agility Agility Green Field Customizations Renovation Roadmap
    5. 5. SOA Background <ul><li>What is a Service Oriented Architecture? </li></ul><ul><ul><li>Loosely Coupled Business Services </li></ul></ul><ul><ul><li>Cross Platform </li></ul></ul><ul><ul><li>Distributed Environment </li></ul></ul>Quoting Data Tier App Submission Credit Inquiry Not Just Business Tier Presentation Tier
    6. 6. Defining ESB <ul><li>A Framework that helps in implementing Service Oriented Architectures </li></ul><ul><ul><li>Can be used for other things </li></ul></ul><ul><ul><li>SOA does not require an ESB </li></ul></ul><ul><li>Provides framework for </li></ul><ul><ul><li>Messaging </li></ul></ul><ul><ul><li>Transformation </li></ul></ul><ul><ul><li>Routing </li></ul></ul><ul><ul><li>Orchestration </li></ul></ul>JCredit NQuote J2Quote NRate
    7. 7. Applications of an ESB <ul><li>Rapid Integration of different systems </li></ul><ul><li>Reuse of existing applications </li></ul><ul><li>Parallel Grid based Applications </li></ul><ul><li>To force decoupling of components </li></ul><ul><li>Build Asynchronous Applications </li></ul>
    8. 8. Lending Twig Loan Broker (adapted from the EIP book) I need a simple loan quoting site for Bank Fred ASAP! Yeah right, you’ve never done anything simple in your life.
    9. 9. Lending Twig Loan Broker <ul><li>public class LoanBrokerImpl implements LoanBroker { </li></ul><ul><li>// injected dependencies </li></ul><ul><li>CreditAgencyService creditAgency = null; </li></ul><ul><li>BankServiceFacade bankFacade = null; </li></ul><ul><li>  // service method </li></ul><ul><li>pulic LoanQuote createQuote(QuoteRequest req){  CreditReport cr =creditAgency.createCreditReport( </li></ul><ul><li>req.getSSN());  LoanQuote lq = bankFacade.createQuote(req.getSSN(), </li></ul><ul><li>req.getAmount(),cr);   return lq; } </li></ul><ul><li>} </li></ul>Spring Hibernate Struts JSF
    10. 10. Service Enabling Lending Twig Our partner wants to call our software as a Web Service and is talking about SOA things. Do we do that? I can see where this is going. Everyone is going to want to communicate with our software in different ways and use it in ways we never intended.
    11. 11. Finding an ESB Well I certainly don’t want to expose the Integration technology to my POJOs. And I’m betting That WS isn’t going to be the only way people try to integrate with this stuff. Let me look at using an ESB. Mule Service Mix Cape Clear Celtix TIBCO
    12. 12. Mule ESB <ul><li>Light Weight and Embeddable </li></ul><ul><li>Supports POJO Components </li></ul><ul><li>Based on “Enterprise Integration Patterns” </li></ul><ul><li>Support for over 20 different protocols </li></ul><ul><li>Support for Pluggable Component Containers (Spring, JNDI, Hivemind, etc.) </li></ul><ul><li>Highly scalable (SEDA and Distributed Messaging) </li></ul>
    13. 13. Some Mule Supported Technologies Tcp Http VM SSL System Stream Jdbc Axis AS400 Data Queue Ftp Glue Space GigaSpaces XMPP File Udp Multicast Jms Rmi Ejb Email Resource Adapter Soap Oracle AQ Quartz Xfire JBI Spring Extensions Pico Extensions Plexus Extensions HiveMind Extensions Jotm Support Acegi Security PGP Security
    14. 14. Exposing Services <ul><li>public class LoanBrokerImpl implements LoanBroker { </li></ul><ul><li>public LoanQuote createQuote( </li></ul><ul><li> QuoteRequest req) </li></ul><ul><li>{…} </li></ul><ul><li>} </li></ul><bean id=“loanBroker” class=“LoanBroker” /> <!–- descriptor --> <mule-descriptor name=“loanBroker“ implementation=“loanBroker&quot;> <inbound-router> <endpoint address=“axis:http://host/loanBroker” /> <endpoint address=“vm://vmLoanBroker” /> </inbound-router> </mule-descriptor> spring-context.xml mule-config.xml
    15. 15. Mule Architecture Guide (from Endpoints Component
    16. 16. Multiple Services <ul><li>We want support four new banks in our system and offer the consumer </li></ul><ul><li>the best rate. But: </li></ul><ul><li>Not all of them have web services, some use JMS, some use EJBs. </li></ul><ul><li>Not all banks write all loans, so we acquired SmartLender Rule Base, </li></ul><ul><ul><li>a .NET service that will help us figure out which banks will </li></ul></ul><ul><ul><li>offer on which loan requests. </li></ul></ul><ul><li>Sounding like an Accidental Architecture. Some issues are: </li></ul><ul><li>We don’t want a bunch of logic in our </li></ul><ul><ul><li>existing LoanBroker based on which Bank? </li></ul></ul><ul><li>How are we going to get the response back to the user </li></ul><ul><ul><li>in any sort of reasonable time? </li></ul></ul>
    17. 17. Loan Broker (from EIP book)
    18. 18. Lessons Learned <ul><li>Concentrate on Interface Definition over Component Design (its hard). </li></ul><ul><li>Configuration explosion is easy (you must standardize). </li></ul><ul><li>Immature Development model can make things difficult (asynchronous, routers, transformers, etc.). </li></ul><ul><li>State management makes it difficult to be truly service oriented. </li></ul><ul><li>Use iterative, test driven development. </li></ul><ul><li>Get high level buy in </li></ul>
    19. 19. Who’s using this stuff? <ul><li>Mule: </li></ul><ul><li>HP </li></ul><ul><li>Sony </li></ul><ul><li>Deutche Bank </li></ul><ul><li>CitiBank </li></ul>
    20. 20. Other Real World Application <ul><li>Used network concepts of an ESB to build data collection system over millions of embedded devices. </li></ul><ul><li>Handle Proprietary Network Protocols using transformers and driver services </li></ul><ul><li>Facilitate parallel processing over large amounts of data using ESB patterns. </li></ul><ul><li>Integrate with external ERP and network management systems to manage the installation and maintenance of installed devices. </li></ul>
    21. 21. More Information <ul><li> – Mule Web Site </li></ul><ul><li>Enterprise Integration Patterns – Gregor Hohpe, Bobby Woolf </li></ul><ul><li> </li></ul><ul><li>Atlanta CS – [email_address] </li></ul>
    22. 22. Questions?