Next-Generation ESB Kevin Conner SOA Platform Architect, Red Hat Keith Babo JBoss ESB Project Lead, Red Hat June 23rd, 2010
Today's Menu Recent History ESB (Re)Defined Building From a Strong Core Beyond The Core
What We've Been Up To Project has been very active Four minor project releases in the past year JBoss ESB 4.5, 4.6, 4.7, 4.8 Major Platform Release Enterprise SOA Platform 5.0 New Project Lead All good stuff, but slowed progress on ESB 5.x
Where We Are Going Next ESB 5 natch ;-) Original codebase is limiting growth Focus on developing a strong, flexible core Bring existing features forward Leverage innovation inside and outside of JBoss Deliver a top notch ESB
ESB Defined ( c. 2004 ) An ESB is a standards-based integration platform that combines messaging, web services, data transformation, and intelligent routing to reliably connect and coordinate the interaction of significant numbers of diverse applications across extended enterprises with transactional integrity. - David A. Chappell
ESB Defined ( c. 2010) In computing, an enterprise service bus (ESB) consists of a software architecture construct which provides fundamental services for complex architectures via an event-driven and standards-based messaging-engine (the bus). Developers typically implement an ESB using technologies found in a category of middleware infrastructure products, usually based on recognized standards. - Wikipedia http://en.wikipedia.org/wiki/enterprise_service_bus
Say What?! An ESB is essentially a middle man
The Middle Man This is a bad thing in retail... You Middle Man Great Merchandise at Low Prices
The Middle Man But a great thing in computing architectures... All problems in computer science can be solved by another level of indirection. - David Wheeler
What's Our Definition of an ESB? Platform for service consumers and providers Provides a uniform invocation contract based on messaging Mediates and enriches the communication between service consumers and providers Separates the service implementation from the communication channel used to access the service Instrument for World Peace
Wise Words from an Industry Expert The key to an ESB is balance.
Building From a Strong Core Gateways Data Services Tooling Weld Camel BPEL Workflow Repository Registry Routing Endpoint Message Bus Message Component Domain CEP EJB BAM Transformation Orchestration Web Services Data Grid Decision Services Converters
ESB Core Foundation for the functionality of the ESB Lightweight No fluff! Embeddable Modular Clearly separable components Extensible Innovation does happen elsewhere
What's In The Core?
Message Bus Based on HornetQ Core Lightweight, distributed, transactional Messaging becomes a transparent feature of the ESB Distribution via bridging Support for clustered, heterogeneous topologies Additional Features of Interest Rate Limiting De-duping Delayed Redelivery Large Message Handling
Hornet In the Bus
Message Simplicity and consistency are primary goals Message = Context + Content Context Environment surrounding message delivery Content Business payload meant for service Body and optional attachments ESB can add value if requested e.g. caching, claim check, etc.
Component Consumes and provides services on the bus Plugs in to the ESB via well-defined contracts Messaging, configuration, deployment, monitoring Messaging required; the rest are optional Yields consistency across component types Perspective from today's implementation Gateways are components Actions would be deployed into components
Components In Action
Services Service Name and configuration for a service Does not contain binding details Service Endpoint Specifies the communication channel used to invoke a service Exposes local services to remote consumers Ignoring this distinction leads to brittle, inflexible services
Domain A service domain is a group referencing one or more services with a set of shared Characteristics Configuration Policies Allows for dynamic configuration of new and existing services available in the ESB Separable from service definitions
Registry Registry is an overloaded term Runtime Registry Reflects runtime state of an ESB Local to each ESB; federated across ESBs Enterprise Registry Directory of services Often conflated with repository Independent of runtime state of ESB
Routing Connecting consumer and provider A B It can get complicated Service availability Service location Multiple providers Path weighting Multi-step routes (A B C)
Beyond The Core Data Services Tooling Gateways Weld Camel BPEL Workflow Repository Registry Routing Endpoint Message Bus Message Component Domain CEP EJB BAM Transformation Orchestration Web Services Data Grid Decision Services Converters
Weld Java Contexts and Dependency Injection (CDI) Allow any POJO (bean) to act as a consumer and/or provider on the ESB Injection of ESB services into beans Use CDI events to produce/consume messages Observer receive messages Producer send messages
No POJO Left Behind
Camel Popular open source integration framework Great support for Enterprise Integration Patterns Flexible and powerful routing expressions XML Java DSL Large set of connectors
Camel In The ESB Layers on core ESB routing and provides pipeline orchestration A B A split B filter C Allows the use of ESB services in lieu of physical endpoints in Camel routes Camel components can be added to ESB
Web Services Make it dead simple to use web services in the ESB Expose existing services via web service bindings Simplify SOAP processing Integrate security support from CXF and PicketLink SAML WS-Policy WS-Trust Web Service mediation is an important use case
Data Services Teiid as the foundation for Data Services Data Virtualization Data Federation Exposed over SQL/JDBC and Web Services Some interesting possibilities Expose data services via ESB gateways Include ESB services in data federation model ETL
Transformation Keep improving Smooks Visual mapper Scriptable mappings Expand transformation use cases Transform around a service Message mapping in gateways Helper templates Focus on performance
Tooling Focus on user workflow Service definition, composition, configuration, deployment Personalities which hat are you wearing? Maven Fits modularity of ESB 5 nicely Convention over configuration ESB Projects need to build from command-line Tooling must be synthesized across projects
Orchestration Three flavors of orchestration A B (Core) Pipeline (Camel) Complex (BPEL, jbpm) BPEL jbpm Web service orchestration Java orchestration JBoss BPM Past, Present, & Future Session Tomorrow!
Complex Event Processing Drools Fusion Event processing as a service Cloud vs. Stream mode Gateways are entry points Messages carry events Real-time analysis of services Wire Tap System events
Help Shape The Future Project Site http://jboss.org/jbossesb User Forum Wiki Email http://community.jboss.org/en/jbossesb?view=discussions http://community.jboss.org/wiki/jbossesb kbabo@redhat.com compliments kconner@redhat.com insults