Microsoft PowerPoint - A-Trenaman

42
1 Open source software for SOA © IONA Technologies 2005 Using Open Source Software for SOA Adrian Trenaman, Principal Consultant, IONA Technologies. [email protected]

Transcript of Microsoft PowerPoint - A-Trenaman

Page 1: Microsoft PowerPoint - A-Trenaman

1Open source software for SOA © IONA Technologies 2005

Using Open Source Software for SOA

Adrian Trenaman, Principal Consultant, IONA Technologies.

[email protected]

Page 2: Microsoft PowerPoint - A-Trenaman

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

Page 3: Microsoft PowerPoint - A-Trenaman

3Open source software for SOA © IONA Technologies 2005

Service Oriented Architecture

Page 4: Microsoft PowerPoint - A-Trenaman

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.

Page 5: Microsoft PowerPoint - A-Trenaman

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.

Page 6: Microsoft PowerPoint - A-Trenaman

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.

Page 7: Microsoft PowerPoint - A-Trenaman

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.

Page 8: Microsoft PowerPoint - A-Trenaman

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.

ConsumerConsumerClient

ServiceService

Server

Communication Infrastructure

Clients

Servers

Page 9: Microsoft PowerPoint - A-Trenaman

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.

ConsumerConsumer

Consumer

ServiceService

Service

Service Bus

Service Consumers

Service Providers

Page 10: Microsoft PowerPoint - A-Trenaman

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.

Page 11: Microsoft PowerPoint - A-Trenaman

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.

Page 12: Microsoft PowerPoint - A-Trenaman

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.

Page 13: Microsoft PowerPoint - A-Trenaman

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

Page 14: Microsoft PowerPoint - A-Trenaman

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

Page 15: Microsoft PowerPoint - A-Trenaman

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

Page 16: Microsoft PowerPoint - A-Trenaman

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.

Page 17: Microsoft PowerPoint - A-Trenaman

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.

Page 18: Microsoft PowerPoint - A-Trenaman

18Open source software for SOA © IONA Technologies 2005

Enterprise Service Bus

Page 19: Microsoft PowerPoint - A-Trenaman

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.

Page 20: Microsoft PowerPoint - A-Trenaman

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.

Page 21: Microsoft PowerPoint - A-Trenaman

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

Page 22: Microsoft PowerPoint - A-Trenaman

22Open source software for SOA © IONA Technologies 2005

Open Source SOA Software

Page 23: Microsoft PowerPoint - A-Trenaman

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

ServiceBus

Service 1 Service 2 Service N

Messaging

ContractRegistry

Security

Transaction

Page 24: Microsoft PowerPoint - A-Trenaman

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

InterfaceRespository

Security

Transaction

NamingService

Page 25: Microsoft PowerPoint - A-Trenaman

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.

Page 26: Microsoft PowerPoint - A-Trenaman

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

Page 27: Microsoft PowerPoint - A-Trenaman

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.

Page 28: Microsoft PowerPoint - A-Trenaman

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.

Page 29: Microsoft PowerPoint - A-Trenaman

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/

Page 30: Microsoft PowerPoint - A-Trenaman

30Open source software for SOA © IONA Technologies 2005

Comparison: ESB vs. CORBA for SOA

Page 31: Microsoft PowerPoint - A-Trenaman

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

Page 32: Microsoft PowerPoint - A-Trenaman

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.

Page 33: Microsoft PowerPoint - A-Trenaman

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.

Page 34: Microsoft PowerPoint - A-Trenaman

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)

Page 35: Microsoft PowerPoint - A-Trenaman

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.

Page 36: Microsoft PowerPoint - A-Trenaman

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.

Page 37: Microsoft PowerPoint - A-Trenaman

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.

Page 38: Microsoft PowerPoint - A-Trenaman

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: [email protected]

|

|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

|+----------------------------------------------------------------

+-------------------------------------------------------------------

Page 39: Microsoft PowerPoint - A-Trenaman

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

Page 40: Microsoft PowerPoint - A-Trenaman

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.

Page 41: Microsoft PowerPoint - A-Trenaman

41Open source software for SOA © IONA Technologies 2005

Summary

Page 42: Microsoft PowerPoint - A-Trenaman

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.