IBM Software Group Services Oriented Architecture and the Enterprise Services Bus The next step to an on demand business Geoff Hambrick Distinguished Engineer, ISSW Enablement Team ghambric@us.ibm.com
Take a moment to assess Java and J2EE for our example: - open order 0.. + amount : Integer = product.price quantity
Good: Java is a write once run most anywhere - open order 0.. + amount : Integer = product.price quantity
Good: Eclipse based tools for Java & J2EE are available - open order 0.. + amount : Integer = product.price quantity
Good: states map to session EJBs for high QoS - open order 0.. + amount : Integer = product.price quantity
Good: business objects map to entity EJBs for persistence - open order 0.. + amount : Integer = product.price quantity
Good: DTOs map to custom methods to optimize interface - open order 0.. + amount : Integer = product.price quantity
Good: relationships map to CMRs to enable tuning - open order 0.. + amount : Integer = product.price quantity
Good: transitions between states map to MDBs for asynch - open order 0.. + amount : Integer = product.price quantity
Good: integration with various back ends can use J2C - open order 0.. + amount : Integer = product.price quantity
Bad: not all clients or back ends support Java or J2EE - open order 0.. + amount : Integer = product.price quantity
Bad: not all versions of app servers are compatible - open order 0.. + amount : Integer = product.price quantity
Bad: each type of J2EE component is accessed differently - open order 0.. + amount : Integer = product.price quantity
Bad: remote versus local semantics are very different - open order 0.. + amount : Integer = product.price quantity
Bad: concerns about complexity and performance - open order 0.. + amount : Integer = product.price quantity
Bad: hard to enforce best practices without MDA tools - open order 0.. + amount : Integer = product.price quantity
Bad: EJBs not designed for high volume batch systems - open order 0.. + amount : Integer = product.price quantity
Bad: EJBs not designed for application assembly - open order 0.. + amount : Integer = product.price quantity
Service Oriented Architecture
What is Service Oriented Architecture (SOA)? An approach for building distributed systems that deliver application functionality as services to either end-user applications or other services It defines : An architecture that leverages open standards to represent software assets as services. Provides a standard way of representing and interacting with software assets Individual software assets become building blocks that can be reused in developing other applications Shifts focus to application assembly rather than implementation details Used externally to integrate with applications outside of the enterprise
What is Service Oriented Architecture (SOA)? The Service concept resonates strongly with customers as a way of simplifying the application assembly programming model. However, there is still no generally accepted definition. Our definition: A service has A well-defined interface, and an implementation of the interface Set of messages it sends and receives Set of named operations ("verbs") If deployed, a binding to a documented network address A Web service is a service that: Defines its interface using WSDL Is accessible using a WS-Interoperability compliant protocol
What is Service Oriented Architecture (SOA)? What about J2EE components? Technically, all J2EE components meet our definition of a service. However, a well designed stateless session EJB typifies the characteristics of a great service. Characteristics of a great service: it is stateless (calls can be made in any order) enables a loose coupling between client and service makes it easy to obtain and reuse a reference without worry it is coarse grained (only one or two calls need be made per unit of work) can be used efficiently in a distributed environment further enables a loose coupling its access can be mediated (the protocols and parameters can be transformed) a session EJB can be easily exposed to HTTP (by servlets) and JMS/MQ (by MDBs) Serializable data transfer objects can easily be converted to XML and other forms its implementation is adaptable (dependencies can be bound after code time) a session EJB deployment descriptor capture dependencies these can be bound to different implementations
What is Service Oriented Architecture (SOA)? Basic components that can be exposed as services
Enterprise Service Bus
What is an Enterprise Service Bus (ESB)? A fabric weaving service components into a seamless interaction multiple protocols multiple client languages multiple service languages multiple application styles Enterprise concerns can be addressed enterprise-wide at the backbone insert mediation components in the path of messages broker service interactions without changing existing endpoints adapt mismatched interfaces, substitute equivalent componentry, and add basic services like security, audit, log, and routing among others
ESB Capabilities Ubiquitous and heterogeneous Universal connectivity (HTTP, IIOP, MQ) e.g. J2EE,.NET Leverage existing investments CICS, IMS WBI Adaptors Messaging QoS Synchronous and Asynchronous Store and Forward Reliable Mediations Transformation Validation Pattern Recognition Customized Routing Subsidiary functions (eg metering) Virtualization of services Dynamic selection of service providers Flexible management of QoS Explicit intermediary Proxy for non-enterprise connections Security control-point Service Management Security and access control Registry and discovery (eg UDDI) Monitoring and policy-based admin Standards-based Interoperability with business partners, including security Vendor-independence
What is an Enterprise Service Bus (ESB)? Portal Service Business-to-Business Interactions Enterprise Service Bus: Transform, Route, Notify, Augment, Side Effect Workflow Business Actviity Enterprise Information System Adapter Script Plain Old Java Object, Stateless Session Bean Information Mgmt XML Database Distinguished Services
What is an Enterprise Service Bus (ESB)? Business Integration Reference Architecture Key point: no one product is IBM s SOA offering you can mix and match WebSphere BI Modeler Development Platform WebSphere Studio Business Performance Management Services WBI Monitor Interaction Services WebSphere Portal Server Process Services WebSphere BI Server WebSphere BI Server Foundation Information Services DB2 Information Integrator WebSphere MQ Enterprise Service Bus Web Services Gateway WBI Event/Message Broker Partner Services WebSphere BI Connect Business App Services WebSphere Application Server Application and Data Access Services WBI Adapters HATS DB2 II Classic Business Application and Data Services Enterprise Applications and Data Infrastructure Services
How can you get EJBs on the bus? Session EJB implementation exposed to: Java through local interface (possibly with POJO wrapper) RMI/IIOP through remote interface SOAP/HTTP by a servlet (or WS Gateway) that translates SOAP/HTTP into local session bean method invocations JMS/MQ by a Message Driven Bean that translates message fields into local session bean method invocations Session Client Access. Java 2. 2. Java. Session Remote Interface 3. 4. 7. 32. 5. 8. 33. IIOP 0. Session Bean Impl Java 6. 23. 29. 38. Java 9. 22. 37. Entity Client Access Java 8. 2. 36. 7. 20. 35. Entity Local Interface Java 6. 9. 34. J2EE Client App Session Local Interface Entity Bean Impl 5. 30. Java 24. 39. Web Services Client 3. HTTP 26. Web Services Servlet 4. Java 25. Session Alternate Access 29. Java Message Driven Bean 27. MQ 40. 28. Asynch Services Client
Summary J2EE enables building perfectly good components But these are too complex for application assembly Service Oriented Architecture (SOA) is actually easier for the client! Stateless session EJBs have all the characteristics of great services The Enterprise Service Bus is an IBM reference architecture for SOA It is easy to connect session EJBs to the protocols supported by the ESB
Questions?