SlideShare a Scribd company logo
1 of 37
Download to read offline
Rethinking the ESB:
lessons learned challenging
the limitations and pitfalls

Andreas Egloff
Frank Kieviet
Sun Microsystems
Agenda
>   Background: from what did we learn?
>   Three lessons we learned:
     ●   How to be lighter weight
     ●   The importance of architecture
     ●   How to avoid vendor lock-in
>   Demo
>   Conclusion



                                          2
From what did we learn?
>   SeeBeyond: integration middleware vendor
     ●   1992: DataGate
     ●   1999: eGate
     ●   2003: ICAN / Java CAPS
     ●   2008: OpenESB / GlassFishTM ESB v2
     ●   2009: OpenESB v3
>   1994: Forte
>   Now: Sun Microsystems

                                               3
Feedback is shaping every new release
>   Changing environments and requirements
>   Measurements, research
>   Positive feedback from customers, analysts
>   Negative feedback from “thought leaders”, e.g.
     ●   “Integration middleware is...
          ●   big, heavy, expensive,
          ●   difficult to install,
          ●   difficult to set up,
          ●   complicated to learn and use,
          ●   a haven for lock-in”
                                                     4
ESBs pros and cons
●   ESBs as a product category indeed come with risks, e.g.
     ●   Architecture concerns, good or bad for SOA?
     ●   More middleware
     ●   Concern of lock-in, over-reliance on one provider
●   Properties of individual ESBs or course vary
●   ESBs do serve a purpose:
     ●   Productivity increase
     ●   Message based integration style, decoupling
     ●   Service intermediary
     ●   Not everything is a web service

                                                             5
Lessons learned
What do we call light weight?
>   Light weight framework
     ●   Quick to learn, not complex, good productivity
     ●   Modular, embeddable
>   Light weight solutions
     ●   Easy to evolve
     ●   Easy to manage
>   Very little to do with installation size!
>   … but what are the requirements?


                                                          7
Lightweight: non functional requirements
             >   Enterprise scale integration
                  ●   “Throwing bodies at the problem”
                  ●   Scalable design time, runtime
             >   Change happens!
                  ●   Decouple configuration, deployables from
                       design time
                  ●   Faster change loop
                  ●   Patch management
             >   Long term commitments
                  ●   Today's hot stuff is tomorrow's legacy



                                                                 8
Accommodate large teams
Shorten the learning curve
     >   Observation: Enterprises like to scale
          by adding people
          ●   Teams have mixed skills
          ●   People flow in and out of teams
          ●   Lesson: easy-to-learn is critical
               ●   Provide tooling
               ●   Keep things simple!




                                                  9
Easy to learn...
… but don't let tooling get in the way

      >   Tooling helps with “hiding” complexities
           ●   Observation: total reliance on tooling is
                problematic
           ●   Lesson: also provide file access
      >   Graphical tools are perceived as user-friendly
           ●   Observation: graphical tools difficult to scale
           ●   Lesson: also provide textual access
           ●   Lesson: Provide options for different roles,
                preferences

                                                                 10
Increase developer productivity

    >   Download, installation, configuration
        ●   Observation: An expense that is paid multiple times
        ●   Lesson: reduce download to up 'n running time
             ● Simpler installer with less interaction required


             ● Add-ons can be installed via Java Web Start


             ● Command line install option


             ● Extreme: unzip and start




                                                             11
Increase developer productivity
>   Observation: tendency to duplicate code
>   Lesson: reduce coding
        ●   Prefer convention and configuration over coding
             ●   In that order!
        ●   Support patterns (EIP) as first class citizens




                                                              12
Don't let frameworks constrain
  >   Observation: frameworks are powerful to
       reduce code duplication
       ● But sometimes constrain flexibility
       ● Product is always used differently than

          expected
       ● Users want flexibility in changing behaviors


  >   Lessons:
       ●   Interceptors a powerful way to add flexibility
       ●   Work with YOUR technologies
            ●   Choice of frameworks, languages, tooling
                                                            13
Increase developer productivity

>   Observation: developers spend a lot of time waiting
    ●   Lesson: shorten the change-build-deploy-test cycle
         ●   Reduce build time, deploy time: smaller deployables
         ●   Extreme: in-place editing
    ●   Lesson: increase testability, debuggability
         ●   Tests built in
    ●   Lesson: support continuous integration




                                                                   14
Modularity
>   Observation:
     ● Modularity improves startup time, performance by
        only loading what's necessary
     ● Modularity leads to faster product development


     ● Being embeddable opens more options


     ● Modularity can help control complexity


>   Lesson:
     ●   JBI
     ●   OSGi
     ●   Extensible language, UI
                                                          15
Scale the design time

    >   Observation: explosion of project artifacts
         ●   Lesson: Reduce artifacts per solution
         ●   Lesson: or make managing large numbers of
              artifacts possible
              ● e.g. hierarchical ordering of artifacts




                                                          16
Reduce deployment size

     >   Observation: gigantic EAR files overwhelm
          runtime
          ●   Lesson: reduce the size of deployables
               ●   Shared components
               ●   Shared libraries
               ●   JBI engines / components




                                                       17
Connectivity configuration
      >   Deployables are used in different
          “environments”
           ●  Development, testing, staging, production
      >   Different roles involved
           ●  Developers, testers, administrators
            ● Observation: people in different roles use

               different tool sets
      >   Lesson: decouple configuration from design
          time and tie to runtime
           ●   Tools support the workflow


                                                           18
Quicken business logic changes
>   Observation: message based services more robust in the
     face of change
>   Observation: sometimes tiny changes in
     business logic are required in production systems
     ●   Would have to rebuild the application + release cycle
>   Lesson: avoid rebuilding “the world” for small business logic
     changes
     ●   Use scripting languages
     ●   Externalize business logic (e.g. CBR)
     ●   Consider evolution, versions in handling messages
     ●   Externalize cross-cutting concerns (e.g. Aspects)
                                                                 19
Patch management
  >   Patch management is important
       ● Keeping track of what patches are applied
       ● Patch distribution to reach all affected

           systems
  >   Observation: complex patch management
       interferes with minimal downtime
  >   Lesson: keep patching simple




                                                     20
The shared library problem
>   Shared libraries keep size in check, allows
     simple patch-all
>   Observation: patch-all too limiting
>   Lesson: OSGi provides solution


A          B       C             A         B         C


          SL                         SL        SL
          1.0                        1.0       1.1



                                                         21
Reproducible builds
>   “The build” needs to be controlled, reproducible
>   Observation: if design time generates code, or adds jars to
     deployable, whole design time needs to be in VCS
>   Lesson: avoid code generation, move jars to runtime
>   Lesson: small command line build environment

                        patch
          Design time           Deployable   Run time
                                                Deployable
           codegen              generated        generated
                                                 jars
           jars                 jars


                                                              22
Middleware: long term
commitment
>   Observation: systems stay in production for many
    years.
>   Observation: languages, frameworks, etc hot today
    will be like disco 10 years from now.
>   Lesson:
     ●   Reduce reliance on IDE
     ●   Use mainstream languages, frameworks, etc.
     ●   Look for “staying power”


                                                        23
Architecture
>   Two more architectural lessons-learned:
     ●   Component communication
     ●   Machine-machine communication




                                              24
Efficient component communication
>   Observation: JMS is often a bottleneck
>   Lesson: component-component message-passing
     can also be done without JMS
>   In-memory message exchange allows
     ●   Performance improvement
     ●   Message streaming, pass by reference
     ●   Propagation of security & transaction context
     ●   Easy throttling


                                                         25
Machine-machine communication
>   Observation: JMS has a proprietary wire protocol,
     requires yet more infrastructure
>   Observation: HTTP infrastructure provides proven
     scalability and interoperability
>   Lesson: JMS is just another transport option
>   Service platform with ESB features vs. MOM-focused
     ●   Better, simpler scalability
     ●   No impedance mismatch to SOA
     ●   Choice of protocols scales outside the enterprise

                                                             26
Choose your topology
Scale easily with homogenous clustering
       Machine 1      Machine 2          Machine 3   >   Observation: heterogeneous
HTTP
                                                          clustering based on JMS is the
                                                          tradition
                                                     >   Lesson: homogeneous clustering
                                                          also works and is easier to
                     JMS Server
                                                          manage
           HTTP             HTTP load balancer
                            (hardware/software)
                                                          ●   Push load balancing out
                                                          ●   Protocols:
  Node 1           Node 2            Node 3
                                                               ●   JMS is an obvious choice, but:
                                                               ●   HTTP / web services make for
                                                                    better interoperability, efficiency
                                                                                                      27
Choose your topology
Simpler heterogeneous clustering
  Machine 1      Machine 2         Machine 3
  Federated
  registry
                 Federated
                 registry
                                   Federated
                                   registry
                                               >      Observation: Not everything will be
                                                       homogenous
                                               >      Lesson: leverage SOA principles
                          HTTP load balancer(s)
                          (hardware/software)          and standard protocols for
                  HTTP
                                                       heterogeneous topologies too
                    External
                                                       ●   ESB can provide
                    SOA registry
                                                            ●   location transparency for services
Machine 1     Machine 2      Machine 3
                                     Other services
                                                            ●   explicit calls and use of external
                                     / ESBs
                                                                  (SOA) registries
                                                       ●   Flexibility of protocol
                      HTTP load balancer(s)
                      (hardware/software)                   ●   JXTA, HTTP, JMS...
               HTTP
                                                                                                28
Choose your topology
Combined topologies
                                             >    Lesson: homogeneous and
  Cluster 1
                                                   heterogeneous clustering
  Federated
  registry
                                                   complement each other
                                                   ●   Scaling, high availability
                                 Cluster 3

  Federated
  registry
                                Federated
                                registry
                                                   ●   Flexibility for varying
                                                        requirements
              Cluster 2                                 ●   Data or system locality
  Federated   Federated         Federated
  registry    registry          registry                ●   Differing scaling, HA requirements
                                                   ●   ESB features with choice of
                                                        topology, transport
                          HTTP load balancer(s)
                          (hardware/software)
                                                   ●   In-memory when appropriate
               HTTP


                                                                                            29
Avoid vendor lock-in
It's good business!
>   Observation: Customers demand it
>   Lessons: Change mentality... “come for our lack of
     vendor lock-in, stay for the product qualities”
        ●   Stick with open standards
        ●   Open source
        ●   Encourage best-of-breed
        ●   Provide an option to exit




                                                         30
Open standards
>   Main concerns:
     ●   Interoperability
          ●   JBI
          ●   Standard Protocols, web services: communicate with
               other products
     ●   Portability of skills
          ●   e.g. Java, EE, Spring, BPEL




                                                                   31
Open source
>   Observations:
     ● Customers increasingly demand it
     ● Makes vendor lock in more difficult


>   Lessons learned:
     ●   Allows better interaction
          with customers,
          faster turn-around
     ●   Leads to better products



                                             32
Be open to “best of breed”
>   Observation: the everything-from-one-vendor
     approach is very limiting
>   Lessons: Allow customers to use other parts from
     other vendors: mix and match best of breed
>   Standards and pluggability make this easier




                                                       33
Provide an option to exit
>   Observation: Customers increasingly demand it
>   Lesson: Enable users to move project artifacts to
     another product
>   Lesson: Interoperate easily with other frameworks
     ●   Service based will continue to work as part of common
          SOA approaches
     ●   Open Standards ensures the existing system can work
          with new systems
     ●   Open Source
          ●   Ensures continued ability to fix a legacy system

                                                                 34
What does it look like?
(Demo)
Conclusion
>   Lessons learned:
     ●   Be light weight
     ●   Better architecture: better product
          ●   Not just rebranded MOM
     ●   Avoid vendor lock in
>   Lessons learned are requirements
>   Look beyond feature lists to systemic qualities
     ●   How will it fare over time in the real world
     ●   Choose the right topology and distribution model
                                                            36
Andreas.Egloff@sun.com
Frank.Kieviet@sun.com
http://open-esb.org

More Related Content

Similar to TS 5341 Rethinking the ESB

The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practices
Bill Buchan
 
Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBay
Tony Ng
 

Similar to TS 5341 Rethinking the ESB (20)

Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.
 
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practices
 
Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?
 
Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBay
 
Winning the Erlang Edit•Build•Test Cycle
Winning the Erlang Edit•Build•Test CycleWinning the Erlang Edit•Build•Test Cycle
Winning the Erlang Edit•Build•Test Cycle
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development Pipeline
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Jenkins Performance - Avoiding Pitfalls, Diagnosing Issues, and Scaling for G...
Jenkins Performance - Avoiding Pitfalls, Diagnosing Issues, and Scaling for G...Jenkins Performance - Avoiding Pitfalls, Diagnosing Issues, and Scaling for G...
Jenkins Performance - Avoiding Pitfalls, Diagnosing Issues, and Scaling for G...
 
Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
 
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and DecideTaking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
 
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and DecideTaking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
 
WSO2Con ASIA 2016: Getting More 9s from Your Deployment
WSO2Con ASIA 2016: Getting More 9s from Your DeploymentWSO2Con ASIA 2016: Getting More 9s from Your Deployment
WSO2Con ASIA 2016: Getting More 9s from Your Deployment
 
Project management frameworks for software developing
Project management frameworks for software developingProject management frameworks for software developing
Project management frameworks for software developing
 
Continuous integration (eng)
Continuous integration (eng)Continuous integration (eng)
Continuous integration (eng)
 
Open Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up IntroOpen Source Jumpstart Tooling Up Intro
Open Source Jumpstart Tooling Up Intro
 
meetup version of Paving the road to production
  meetup version of Paving the road to production    meetup version of Paving the road to production
meetup version of Paving the road to production
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 

TS 5341 Rethinking the ESB

  • 1. Rethinking the ESB: lessons learned challenging the limitations and pitfalls Andreas Egloff Frank Kieviet Sun Microsystems
  • 2. Agenda > Background: from what did we learn? > Three lessons we learned: ● How to be lighter weight ● The importance of architecture ● How to avoid vendor lock-in > Demo > Conclusion 2
  • 3. From what did we learn? > SeeBeyond: integration middleware vendor ● 1992: DataGate ● 1999: eGate ● 2003: ICAN / Java CAPS ● 2008: OpenESB / GlassFishTM ESB v2 ● 2009: OpenESB v3 > 1994: Forte > Now: Sun Microsystems 3
  • 4. Feedback is shaping every new release > Changing environments and requirements > Measurements, research > Positive feedback from customers, analysts > Negative feedback from “thought leaders”, e.g. ● “Integration middleware is... ● big, heavy, expensive, ● difficult to install, ● difficult to set up, ● complicated to learn and use, ● a haven for lock-in” 4
  • 5. ESBs pros and cons ● ESBs as a product category indeed come with risks, e.g. ● Architecture concerns, good or bad for SOA? ● More middleware ● Concern of lock-in, over-reliance on one provider ● Properties of individual ESBs or course vary ● ESBs do serve a purpose: ● Productivity increase ● Message based integration style, decoupling ● Service intermediary ● Not everything is a web service 5
  • 7. What do we call light weight? > Light weight framework ● Quick to learn, not complex, good productivity ● Modular, embeddable > Light weight solutions ● Easy to evolve ● Easy to manage > Very little to do with installation size! > … but what are the requirements? 7
  • 8. Lightweight: non functional requirements > Enterprise scale integration ● “Throwing bodies at the problem” ● Scalable design time, runtime > Change happens! ● Decouple configuration, deployables from design time ● Faster change loop ● Patch management > Long term commitments ● Today's hot stuff is tomorrow's legacy 8
  • 9. Accommodate large teams Shorten the learning curve > Observation: Enterprises like to scale by adding people ● Teams have mixed skills ● People flow in and out of teams ● Lesson: easy-to-learn is critical ● Provide tooling ● Keep things simple! 9
  • 10. Easy to learn... … but don't let tooling get in the way > Tooling helps with “hiding” complexities ● Observation: total reliance on tooling is problematic ● Lesson: also provide file access > Graphical tools are perceived as user-friendly ● Observation: graphical tools difficult to scale ● Lesson: also provide textual access ● Lesson: Provide options for different roles, preferences 10
  • 11. Increase developer productivity > Download, installation, configuration ● Observation: An expense that is paid multiple times ● Lesson: reduce download to up 'n running time ● Simpler installer with less interaction required ● Add-ons can be installed via Java Web Start ● Command line install option ● Extreme: unzip and start 11
  • 12. Increase developer productivity > Observation: tendency to duplicate code > Lesson: reduce coding ● Prefer convention and configuration over coding ● In that order! ● Support patterns (EIP) as first class citizens 12
  • 13. Don't let frameworks constrain > Observation: frameworks are powerful to reduce code duplication ● But sometimes constrain flexibility ● Product is always used differently than expected ● Users want flexibility in changing behaviors > Lessons: ● Interceptors a powerful way to add flexibility ● Work with YOUR technologies ● Choice of frameworks, languages, tooling 13
  • 14. Increase developer productivity > Observation: developers spend a lot of time waiting ● Lesson: shorten the change-build-deploy-test cycle ● Reduce build time, deploy time: smaller deployables ● Extreme: in-place editing ● Lesson: increase testability, debuggability ● Tests built in ● Lesson: support continuous integration 14
  • 15. Modularity > Observation: ● Modularity improves startup time, performance by only loading what's necessary ● Modularity leads to faster product development ● Being embeddable opens more options ● Modularity can help control complexity > Lesson: ● JBI ● OSGi ● Extensible language, UI 15
  • 16. Scale the design time > Observation: explosion of project artifacts ● Lesson: Reduce artifacts per solution ● Lesson: or make managing large numbers of artifacts possible ● e.g. hierarchical ordering of artifacts 16
  • 17. Reduce deployment size > Observation: gigantic EAR files overwhelm runtime ● Lesson: reduce the size of deployables ● Shared components ● Shared libraries ● JBI engines / components 17
  • 18. Connectivity configuration > Deployables are used in different “environments” ● Development, testing, staging, production > Different roles involved ● Developers, testers, administrators ● Observation: people in different roles use different tool sets > Lesson: decouple configuration from design time and tie to runtime ● Tools support the workflow 18
  • 19. Quicken business logic changes > Observation: message based services more robust in the face of change > Observation: sometimes tiny changes in business logic are required in production systems ● Would have to rebuild the application + release cycle > Lesson: avoid rebuilding “the world” for small business logic changes ● Use scripting languages ● Externalize business logic (e.g. CBR) ● Consider evolution, versions in handling messages ● Externalize cross-cutting concerns (e.g. Aspects) 19
  • 20. Patch management > Patch management is important ● Keeping track of what patches are applied ● Patch distribution to reach all affected systems > Observation: complex patch management interferes with minimal downtime > Lesson: keep patching simple 20
  • 21. The shared library problem > Shared libraries keep size in check, allows simple patch-all > Observation: patch-all too limiting > Lesson: OSGi provides solution A B C A B C SL SL SL 1.0 1.0 1.1 21
  • 22. Reproducible builds > “The build” needs to be controlled, reproducible > Observation: if design time generates code, or adds jars to deployable, whole design time needs to be in VCS > Lesson: avoid code generation, move jars to runtime > Lesson: small command line build environment patch Design time Deployable Run time Deployable codegen generated generated jars jars jars 22
  • 23. Middleware: long term commitment > Observation: systems stay in production for many years. > Observation: languages, frameworks, etc hot today will be like disco 10 years from now. > Lesson: ● Reduce reliance on IDE ● Use mainstream languages, frameworks, etc. ● Look for “staying power” 23
  • 24. Architecture > Two more architectural lessons-learned: ● Component communication ● Machine-machine communication 24
  • 25. Efficient component communication > Observation: JMS is often a bottleneck > Lesson: component-component message-passing can also be done without JMS > In-memory message exchange allows ● Performance improvement ● Message streaming, pass by reference ● Propagation of security & transaction context ● Easy throttling 25
  • 26. Machine-machine communication > Observation: JMS has a proprietary wire protocol, requires yet more infrastructure > Observation: HTTP infrastructure provides proven scalability and interoperability > Lesson: JMS is just another transport option > Service platform with ESB features vs. MOM-focused ● Better, simpler scalability ● No impedance mismatch to SOA ● Choice of protocols scales outside the enterprise 26
  • 27. Choose your topology Scale easily with homogenous clustering Machine 1 Machine 2 Machine 3 > Observation: heterogeneous HTTP clustering based on JMS is the tradition > Lesson: homogeneous clustering also works and is easier to JMS Server manage HTTP HTTP load balancer (hardware/software) ● Push load balancing out ● Protocols: Node 1 Node 2 Node 3 ● JMS is an obvious choice, but: ● HTTP / web services make for better interoperability, efficiency 27
  • 28. Choose your topology Simpler heterogeneous clustering Machine 1 Machine 2 Machine 3 Federated registry Federated registry Federated registry > Observation: Not everything will be homogenous > Lesson: leverage SOA principles HTTP load balancer(s) (hardware/software) and standard protocols for HTTP heterogeneous topologies too External ● ESB can provide SOA registry ● location transparency for services Machine 1 Machine 2 Machine 3 Other services ● explicit calls and use of external / ESBs (SOA) registries ● Flexibility of protocol HTTP load balancer(s) (hardware/software) ● JXTA, HTTP, JMS... HTTP 28
  • 29. Choose your topology Combined topologies > Lesson: homogeneous and Cluster 1 heterogeneous clustering Federated registry complement each other ● Scaling, high availability Cluster 3 Federated registry Federated registry ● Flexibility for varying requirements Cluster 2 ● Data or system locality Federated Federated Federated registry registry registry ● Differing scaling, HA requirements ● ESB features with choice of topology, transport HTTP load balancer(s) (hardware/software) ● In-memory when appropriate HTTP 29
  • 30. Avoid vendor lock-in It's good business! > Observation: Customers demand it > Lessons: Change mentality... “come for our lack of vendor lock-in, stay for the product qualities” ● Stick with open standards ● Open source ● Encourage best-of-breed ● Provide an option to exit 30
  • 31. Open standards > Main concerns: ● Interoperability ● JBI ● Standard Protocols, web services: communicate with other products ● Portability of skills ● e.g. Java, EE, Spring, BPEL 31
  • 32. Open source > Observations: ● Customers increasingly demand it ● Makes vendor lock in more difficult > Lessons learned: ● Allows better interaction with customers, faster turn-around ● Leads to better products 32
  • 33. Be open to “best of breed” > Observation: the everything-from-one-vendor approach is very limiting > Lessons: Allow customers to use other parts from other vendors: mix and match best of breed > Standards and pluggability make this easier 33
  • 34. Provide an option to exit > Observation: Customers increasingly demand it > Lesson: Enable users to move project artifacts to another product > Lesson: Interoperate easily with other frameworks ● Service based will continue to work as part of common SOA approaches ● Open Standards ensures the existing system can work with new systems ● Open Source ● Ensures continued ability to fix a legacy system 34
  • 35. What does it look like? (Demo)
  • 36. Conclusion > Lessons learned: ● Be light weight ● Better architecture: better product ● Not just rebranded MOM ● Avoid vendor lock in > Lessons learned are requirements > Look beyond feature lists to systemic qualities ● How will it fare over time in the real world ● Choose the right topology and distribution model 36