Your SlideShare is downloading. ×
  • Like
Microsoft PowerPoint - A-Trenaman
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Microsoft PowerPoint - A-Trenaman

  • 425 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
425
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 1Open source software for SOA © IONA Technologies 2005 Using Open Source Software for SOA Adrian Trenaman, Principal Consultant, IONA Technologies. adrian.trenaman@iona.com
  • 2. Open source software for SOA 2© IONA Technologies 2005 Introduction This presentation is about service-oriented architecture, and how you can implement it using open-source software available today. Roadmap: - What is SOA? - A little historical reference - Distinguishing features of service-oriented architectures - The (Enterprise) Service Bus concept - Open-source software choices for SOA - There’s a lot of open-source “competition” out there. - Comparison: ESB vs. CORBA for SOA - Conclusions
  • 3. 3Open source software for SOA © IONA Technologies 2005 Service Oriented Architecture
  • 4. Open source software for SOA 4© IONA Technologies 2005 The history of SOA The term “SOA” was coined in a 1996 research paper by Gartner analyst Yefim V. Natis. - “SOA is a software architecture that starts with an interface definition and builds the entire application topology as a topology of interfaces, interface implementations and interface calls… - …SOA would be better-named ‘interface-oriented architecture.’” SOA principals arose out of work with distributed objects. - Experience with distributed object technologies (for example, COM and CORBA) led to a set of design principals, guidelines and best practise. - It became popular to refer to these distributed objects as “services”. SOA could be thought of as the application of object-oriented principals to client-server architectures.
  • 5. Open source software for SOA 5© IONA Technologies 2005 The history of SOA (cont’) Despite its early appearance, the term SOA became more prominent some years later around 2002/2003 Web services technologies provided a new interface definition language called WSDL that is suitable for use in a SOA. - The term SOA was hijacked by marketers to lend credibility to their web services products, with the message “you need our web services product for SOA” SOA is not dependent on web services technologies - SOA predates them! However, web services technologies are suitable for SOA. Remember: SOA is an architectural style, not a product.
  • 6. Open source software for SOA 6© IONA Technologies 2005 Understanding architecture styles When discussing the architectural style of a cathedral you might say that it is “Gothic” or “Roman” There is no rigorous definition of the Gothic or Roman styles, just a collection of design characteristics. - Gothic arches are pointy; Roman arches are rounded - Gothic walls should be embellished with statues and fine detail; Roman walls are plain and simple. - If a cathedral has rounded arches and plain walls then it is Roman style. To understand a style you need to focus on the distinctive defining characteristics of the style that differentiate it from others.
  • 7. Open source software for SOA 7© IONA Technologies 2005 Distinguishing features of a SOA Service-oriented architecture is an architectural style for client-server applications. Distinguishing features: - A SOA consists of clients and servers (services) connected by a communication subsystem known as a service “bus”. - Services are defined using formal interfaces (contracts) that hide away implementation details from the client. - The bus supports both point-to-point and messaging styles of communication, and supports enterprise qualities of service like security and transactions. - Services are often reused by a number of applications.
  • 8. Open source software for SOA 8© IONA Technologies 2005 SOA components Distributed architectures can be trivially separated into clients, servers and the communication infrastructure that lies between them. Consumer Consumer Client Service Service Server Communication Infrastructure Clients Servers
  • 9. Open source software for SOA 9© IONA Technologies 2005 SOA components (cont’) The SOA literature gives us new names for these components: service consumers, service providers and a service bus. Consumer Consumer Consumer Service Service Service Service Bus Service Consumers Service Providers
  • 10. Open source software for SOA 10© IONA Technologies 2005 SOA clients and services SOA provides different terms for client and server - In SOA terminology, a client is a service consumer, or simply a consumer. - Likewise, a server is known as a service provider, or simply a service Some people find this terminology useful. - They prefer to use service, because server is ambiguous (server could mean a software application or a computer) Many people find this terminology unnecessary and annoying. - They are cynical of any attempt to recast well-known concepts as something new and innovative by simply giving them a new name. In practice, most people still use client, and use server and service interchangeably.
  • 11. Open source software for SOA 11© IONA Technologies 2005 SOA clients and services (cont’) In a SOA services exhibit the following properties: - It’s interface is defined using a formal contract (for example, WSDL, or IDL) - The service implementation details are unknown to the client; the only connection (or coupling) between the client and server is the contract. - The service is self-contained, and can be run with or without other services present. - Services may be used by other services - The interface is stored in a well-known repository that prospective users can browse. Formal contracts, loose-coupling and abstraction of implementation details are key features of a SOA. Note: the properties above are almost identical to the properties of an object in object-oriented architecture.
  • 12. Open source software for SOA 12© IONA Technologies 2005 SOA service bus The clients and servers in a SOA communicate via a common communication framework called a “service bus”. The term service bus is derived from computer bus (the wires that connect the CPU, RAM, I/O and so on) - Each component provides an interface to the bus, which allows it to communicate indirectly with a large number of different kinds of components. - A component X places a message on the bus, and component Y receives it. The term service bus is used metaphorically to describe a subsystem that connects clients and servers using the same underlying protocols and technologies.
  • 13. Open source software for SOA 13© IONA Technologies 2005 Aside: the “bus” metaphor The “service bus” is a single communication subsystem used by all the clients and services in a SOA. Client 2 Client NClient 1 Service Bus Service 1 Service 2 Service N
  • 14. Open source software for SOA 14© IONA Technologies 2005 Aside: the “bus” metaphor (cont’) Some people mistakenly (or purposely) interpret the “service bus” to be a messaging hub. Hub-spoke architectures are difficult to scale, because the messaging hub becomes a bottleneck. Client 2 Client NClient 1 Service Bus Service 1 Service 2 Service N
  • 15. Open source software for SOA 15© IONA Technologies 2005 Aside: the “bus” metaphor (cont’) In reality, a “service bus” is a set of distributed libraries and daemons that facilitate direct and indirect communication between clients and services. This approach scales well. Client 2 Client NClient 1 Service Bus Service 1 Service 2 Service N Messaging
  • 16. Open source software for SOA 16© IONA Technologies 2005 SOA system services A service bus product usually includes system services that provide clients and servers with commonly required functionality, for example: - Service naming and lookup – for finding services at runtime - Service registry – for storing service contracts - Security - Transactions - Service management - Messaging Typically the services are implemented using the same communication infrastructure that clients and normal servers use.
  • 17. Open source software for SOA 17© IONA Technologies 2005 There’s nothing new about SOA SOA associates new terminology with concepts that have been around for some time. - The key idea of separating service semantics from service implementation using well defined contracts was already used by CORBA, DCOM and DCE. CORBA and DCOM where inherently object-oriented. - Over time a set of design guidelines and best-practices emerged that focused on the design of services (otherwise known as distributed objects). SOA can be implemented using existing contract-based client- server technologies such as CORBA and DCOM. At the same time, SOA has been used as the motivating force behind the development of new product categories such as the Enterprise Service Bus (ESB) category.
  • 18. 18Open source software for SOA © IONA Technologies 2005 Enterprise Service Bus
  • 19. Open source software for SOA 19© IONA Technologies 2005 Enterprise Service Bus The term “ESB” (Enterprise Service Bus) lacks a formal definition. - The term emerged around 2003 and has become synonymous with SOA. - It has been hijacked by marketers and vendors and liberally redefined to suit their product sets. An ESB is a software product that provides underlying communication infrastructure for software components. - The “enterprise” in ESB stresses that the product has features like security and transactions and is suitable for use in a large-scale enterprise. ESBs provide support for contract-based services using direct (synchronous point-to-point) and indirect (asynchronous messaging) communication paradigms.
  • 20. Open source software for SOA 20© IONA Technologies 2005 ESBs and XML Technologies such as CORBA and DCOM have provided service-bus functionality for some time now. - Surely we could argue that CORBA is an ESB? The industry has settled on the following rule-of-thumb “if it doesn’t use XML, then it’s not an ESB.” To qualify as an ESB, a product must use XML; typically this means the web services technologies: - XSD and WSDL for contract definition - SOAP and XML for protocol payload - UDDI for service registry Aside: perhaps ESB is a misnomer; it should have been called XML Services Bus, or Web Services Bus.
  • 21. Open source software for SOA 21© IONA Technologies 2005 Features of an ESB In the absence of a definition of an ESB, a good way to understand ESB to look at the features provided. An ESB typically provides the following functionality: - Data modeling with XML Schema; - Interface modeling with WSDL; - Client and server development tools (code generation from WSDL, libraries, IDE support, etc.) - Synchronous point-to-point communication using SOAP/HTTP - Asynchronous messaging using SOAP as a payload over a messaging protocol that supports persistence of messages. - Message payload transformation using XSLT
  • 22. 22Open source software for SOA © IONA Technologies 2005 Open Source SOA Software
  • 23. Open source software for SOA 23© IONA Technologies 2005 What do you need for SOA? You need: - A service bus providing point to point messaging - A compatible messaging service (if not provided by the bus) - Other services: registry, security, transactions… - Developer tools (design contracts, develop and deploy services, …) Client 2 Client NClient 1 Service Bus Service 1 Service 2 Service N Messaging Contract Registry Security Transaction
  • 24. Open source software for SOA 24© IONA Technologies 2005 SOA with CORBA If using CORBA, the ORB you choose will typically provide all the components you need. Client 2 Client NClient 1 ORB Service 1 Service 2 Service N Events/ Notification Interface Respository Security Transaction Naming Service
  • 25. Open source software for SOA 25© IONA Technologies 2005 Open Source ORBs Choices for open source ORB: - Orbacus (Java and C++ ORB): www.orbacus.com, commercially supported by IONA. - TAO (C++ ORB) http://www.cs.wustl.edu/~schmidt/TAO.html, commercially supported by Prismtech, Huihoo, and OCI among others - JacORB (Java ORB) http://jacorb.org. - MICO (C++ ORB) http://www.mico.org, commercially supported by Object Security Because ORBs use the standardized IIOP protocol on-the- wire, you can mix and match different ORB implementations.
  • 26. Open source software for SOA 26© IONA Technologies 2005 SOA with ESB The ESB provides core infrastructure and tools. - Many ESB components (eg. Registry, JMS) are pluggable! - Expect a LAMP-like SOA stack to emerge, where a SOA ESB solution will comprise a number of open-source projects. Client 2 Client NClient 1 ESB Service 1 Service 2 Service N JMS UDDI/ ebXML Security Transaction
  • 27. Open source software for SOA 27© IONA Technologies 2005 Open Source ESBs There are a number of open source ESBs available. Choices: - Celtix: hosted on ObjectWeb, supported commercially by IONA Technologies - OpenESB: hosted on java.net - Mule: hosted on codehaus.org - ServiceMix: hosted by LogicBlaze Each of these ESBs typically provides a default JMS messaging provider - But you can easily change to a alternative provider. - A list of open-source JMS providers follows.
  • 28. Open source software for SOA 28© IONA Technologies 2005 Open Source JMS Providers There are many open-source JMS providers. Choices: - JORAM: hosted by ObjectWeb - Active MQ: hosted by Logic Blaze - SwiftMQ: hosted by swiftmq - MantaRay: hosted on SourceFourge.net - JBossMQ: hosted by jboss.org - Others: OpenJMS, UberMQ, ActiveJMS, … Note: JMS providers are not one-the-wire compatible! - If JMS is used, then both client and server must use the same JMS implementation.
  • 29. Open source software for SOA 29© IONA Technologies 2005 Open Source Contract Registries The UDDI standard defines a registry system for WSDL contracts. A number of open-source implementations exist: - jUDDI: hosted by Apache - http://ws.apache.org/juddi - Ruddi: hosted by InspireIT - http://www.inspireit.biz - Nsure UDDI Server: hosted by Novell - http://developer.novell.com/uddi The ebXML registry is an evolution of UDDI. - Sun Service Registry: http://www.sun.com/products/soa/registry/ - FreebXML: http://ebxmlrr.sourceforge.net/
  • 30. 30Open source software for SOA © IONA Technologies 2005 Comparison: ESB vs. CORBA for SOA
  • 31. Open source software for SOA 31© IONA Technologies 2005 Comparison: ESB vs. CORBA for SOA Recap: SOA requires an interface definition language and communication infrastructure. You can use an ESB to implement a SOA - Or use a more traditional alternative, like CORBA. The next slides compare ESB and CORBA with respect to the following: - Communication infrastructure - Interface Definition - Messaging styles - Complexity - Technology Adoption - Performance
  • 32. Open source software for SOA 32© IONA Technologies 2005 Interface Definition ESB uses WSDL for interface definition - Can be quite complex, even for simple “Hello, World” example. - Provides a clean separation of interface vs. location (host name, port, etc.) - Interfaces are defined using WSDL, data-types are defined using XSD. CORBA uses IDL for interface definition - Easy to learn and use (syntactically similar to Java, C++, C#) - Location information is not specified in the contract.
  • 33. Open source software for SOA 33© IONA Technologies 2005 Communication Infrastructure ESB typically uses SOAP as a messaging payload. - SOAP “wraps” XML messages in an XML wrapper; as a result SOAP messages are self describing. - Messages are transmitted as plain text. - Payload transmitted over HTTP or JMS Some ESBs (e.g. IONA’s Artix) allow other payload/transport combinations. CORBA uses a binary message payload, Common Data Representation (CDR). - Messages are not self describing. - Payload transmitted over IIOP (Internet Inter-Orb Protocol) - Asynchronous messaging provided by an event or notification service.
  • 34. Open source software for SOA 34© IONA Technologies 2005 Messaging Styles ESB can support the following messaging styles: - One-way (using SOAP/HTTP or SOAP/JMS) - Request-response (using SOAP/HTTP or SOAP/JMS) - Document-oriented (using SOAP/HTTP or SOAP/JMS) - Publish-subscribe (using SOAP/JMS) CORBA also supports all of these messaging styles. - One-way (using IIOP or event service) - Request-response (using IIOP ) - Document-oriented (using IIOP or event service) - Publish-subscribe (using event service)
  • 35. Open source software for SOA 35© IONA Technologies 2005 Complexity Interface design using WSDL (in an ESB) is complex. - Requires specialist knowledge / experience / tools. - Client and server implementation are straight-forward (particularly using Java) Interface design using IDL (in CORBA) is easy. - You can easily write your own IDL with Notepad! - CORBA boasts a powerful yet complex server-side programming model.
  • 36. Open source software for SOA 36© IONA Technologies 2005 Technology Adoption ESB technologies (WSDL, SOAP, JMS) have enormous adoption. - Huge technology support from J2EE, .Net, … CORBA adoption is leveling out. - However, there is some growth in high-performance areas such as manufacturing.
  • 37. Open source software for SOA 37© IONA Technologies 2005 Performance Is ESB faster/slower than CORBA? As an illustration, timings were gathered for an Invoice Server - The invoice data structure is sufficiently complex to be interesting, involving enumerations, lists, nested data-types, etc. - Sample invoice provided on next slide. The server was implemented using Celtix ESB and Orbacus for Java. Two business operations were measured: - Transmitting a single invoice - sendInvoice() - Client sends an invoice - Server returns void. - Transmitting a batch of invoices - getInvoicesForCustomer(): - Client sends first name, last name - Server returns a list of 100 invoices.
  • 38. Open source software for SOA 38© IONA Technologies 2005 Invoice +------------------------------------------------------------------- | I N V O I C E | |Customer: null |Name: null null |Address: 4 Shelbourne Road | Ballsbridge | Dublin | null | D4 | Ireland | |Phone: +353-1-6372000 |Email: customer@iona.com | |Shipping Date: 2005-11-30 |Payment Date: 2005-12-25 | |+---------------------------------------------------------------- ||Items: || 1000 x Widget (Code: 123) Unit cost: 20.0, Total cost: 20000.0 || 1000 x Doo-Lally (Code: 321) Unit cost: 30.0, Total cost: 30000.0 |+---------------------------------------------------------------- +-------------------------------------------------------------------
  • 39. Open source software for SOA 39© IONA Technologies 2005 Results The following table shows timings for the ESB vs. CORBA approach. - Note: client, server and JMS on same machine. CORBA clearly outperforms the ESB. - Is XML a good fit for SOA? findInvoicesForCustomer()sendInvoice()SOA 2.3 ms1.2 msOrbacus ORB: IIOP 326.57 ms53.88 msCeltix ESB: SOAP/JMS (ActiveMQ) 123.6 ms19.9 msCeltix ESB: SOAP/HTTP
  • 40. Open source software for SOA 40© IONA Technologies 2005 Aside: is XML really a good fit for SOA? XML has widespread support as a markup language. - XML documents are self describing and can be easily validated and parsed. - XML tools are available for almost all programming languages However, XML is often criticized for its size and performance: - XML documents can be bloated with markup tags. - Validation and parsing of XML can be costly in time and memory. There may be applications where XML (and by consequence, ESB) is simply too slow. - The performance cost can only really be estimated on a per-application basis. There is a strong argument that ESBs should provide support for compact binary protocols as well as XML-based protocols.
  • 41. 41Open source software for SOA © IONA Technologies 2005 Summary
  • 42. Open source software for SOA 42© IONA Technologies 2005 Conclusion When it comes to open source SOA you have lots of choice. We reviewed and compared two different SOA technology sets: ESB and CORBA ESB offers great advantages in terms of technology adoption and acceptance of the underlying XML core. This flexibility may cost you in terms of performance. - ESB performance will be acceptable for many business applications! - If not, then the open-source ESB community will have to provide support for fast non-XML protocols.