Welcome!

SOA & WOA Authors: Dana Gardner, John Ryan, Jeremy Geelan, David Linthicum, Rebel Brown

Related Topics: SOA & WOA

SOA & WOA: Article

Where HTTP Fails SOAP

Alternative choices for situations when HTTP does not scale sufficiently for enterprise Web service deployments

Scaling Web Services (SOAP) in the Back Office
Clearly, a protocol is needed that allows the interleaving of requests over a single connection. HTTP could be extended to support request identifiers, but modifications to this standard have taken years to be accepted because of the sheer number of deployments. Solving this problem within the bounds of a SOAP-based specification - WS-ReliableMessaging, for example - will always be subject to the limitations that HTTP imposes. A variety of alternatives to HTTP exist. Some are described below.

MQSeries
MQSeries is a widely deployed enterprise messaging system from IBM. It has been in production for many years and has proven its robustness and scalability in enterprise deployments. It has traditionally been used in single-threaded applications (based on the age of many deployments), but there is no reason why an application could not have multiple threads posting to the same queue, even before responses are read back from a reply queue. This would solve the problem described, but MQSeries is proprietary and expensive. It is much better suited to asynchronous communication, and demands a pair of queues for pseudo-synchronous communication.

JMS
JMS is a standard messaging interface designed as part of the J2EE specification. It does not specify any details about wire-level implementation, so two separate JMS implementations are unlikely to interoperate. With a JMS-based solution, therefore, all communication must take place using the same implementation; however, the API is widely accepted and adopted, and it's very friendly to the J2EE domain. Just like MQSeries, JMS is asynchronous, thereby allowing interleaving of requests. JMS is completely Java-centric, but many of the core back-office systems in production today are not, which means that successful integration of these systems with JMS can prove to be a challenge.

IIOP
The Object Management Group (OMG) adopted the Internet Inter-ORB Protocol (IIOP) as part of the CORBA 2.0 specification. A number of groups have adopted IIOP as their standard protocol, not least of which was Sun Microsystems, who adopted it as the standard protocol for Java RMI. Given its CORBA heritage, a number of IIOP implementations exist in a variety of languages. The variety of available IIOP implementations covers the range of commercial, free, and open source software. Most implementations of IIOP have matured to a point where they interoperate seamlessly with each other, and IIOP has proven itself in some of the most demanding environments such as telecommunications provisioning and network management. IIOP offers support for multiple qualities of service, including optimal delivery of large messages over TCP/IP (which would be ideal for SOAP). Just like HTTP it natively supports a request-reply paradigm, but in addition it allows for the interleaving of requests, replies, and fragments thereof, all over a single connection.

SOAP over IIOP
IIOP presents a very strong case for adoption as the protocol of choice within the back office. It's one of the few standards-based protocols (thus offering a wire-level interoperable transport) proven to scale in the enterprise. If one wanted to build a Web services framework that supported SOAP messages over IIOP, integrating open-source projects such as Apache AXIS with the JDK IIOP stack might do it.

The Need for an Enterprise Service Bus
A key difference between a Web services toolkit and an Enterprise Service Bus (ESB) is the ability to switch message format and protocol as necessary. For the sake of this discussion, we are talking only about switching the underlying protocol used to deliver SOAP messages, and we're working under the assumption that there is no need to integrate with legacy systems that expose endpoints with other message formats. The programming model should insulate developers from the protocol and transport, which should instead be a deployment option as opposed to a decision made at development time.

Most ESBs, with minimal additional development effort, allow you to build distributed systems that communicate using any of the following:

  • SOAP over HTTP
  • SOAP over MQSeries
  • SOAP over JMS
However, SOAP is only one among many protocols with which enterprise applications need to deal.

An ESB must also allow you to expose your business logic over more than one protocol/transport. In particular, it should be capable of exposing the endpoint over an enterprise-strength transport without sacrificing support for SOAP/HTTP. The vast majority of data (in the back office) should be transmitted over an enterprise-strength transport while still allowing for use of SOAP/HTTP where applicable. The forthcoming WS-Addressing standard from W3C will support metadata within its endpoint reference (EPR) construct, thus making it possible to describe and reference endpoints regardless of the protocol and transport used.

In some cases, however, you will not be able to control the volumes of requests coming from SOAP/HTTP-based clients. In such situations the ESB should provide you with a relay that accepts SOAP messages over the HTTP transport and sends them over the enterprise-strength transport to the ESB-enabled back-office server. This is effectively a concentrator implementation, instance-pooling inexpensive relays (typically behind a hardware HTTP load balancer) rather than attempting to create pools of expensive and complex back-office systems.

In the past there was a barrier to accessing back-office systems in the learning curve associated with the middleware technologies involved. With the advent of Web services, this barrier has been lowered substantially; this is a step in right direction and is essential for effective deployment of an SOA. An ESB insulates the developer from the middleware used in deployment. Given this empowerment granted by the ESB, the traditional vendor lock-ins in the back office can be removed. To be truly services oriented you should not be beholden to any individual middleware vendor, regardless of the scalability requirements. Most ESB vendors will provide proprietary alternatives to HTTP where scalability requirements demand it, e.g., IBM is encouraging the use of MQ to deliver SOAP messages. Alas all direct consumers of the service need to have this vendors' technology installed. Your ESB should provide you with a higher quality standards-based alternative, such as SOAP/IIOP.

About Frank Lynch

Frank Lynch is a principal services engineer with Iona Technologies. He holds B.Sc. in applied computing from Waterford Institute of Technology, Ireland. Frank has 10 years of experience in the software industry, primarily working with distributed systems technologies. He has worked in a wide range of roles including product development, professional services/consulting, sales, and support. He has advised some of the world's largest financial services and telecommunications firms, and spends considerable time with Global 2000 companies as a distributed systems technologist.

About Mark Fynes

Mark Fynes is a senior systems engineer at Iona Technologies. Previously he had been a freelance consultant, carrying out a number of roles including development training and implementation of Web-based staff-management systems. Mark secured his Bachelors degrees in both Arts and Engineering from Trinity College Dublin, Ireland with honors. He then joined the Computer Architecture Group at TCD and secured a research-based Masters in Science. During his time as a post-graduate researcher at TCD, he participated in an ESPRIT-funded project to provide video-on-demand with the hotel industry as an early adopter, focusing his work on remote systems management.

Comments (4) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
n d 08/21/06 05:22:31 PM EDT

Web services allow for the delivery of SOAP messages over any protocol. A common misconception is that all SOAP messages must be transmitted over HTTP. While that approach is useful in many cases, there are situations where it makes sense to use alternatives. This paper investigates situations where HTTP does not scale sufficiently for enterprise Web service deployments and looks at available alternatives.

Alysson Oliveira 11/11/05 09:22:55 PM EST

Hi,

I´d like to know how to do reference this article.
Volume: 5, Issue: 7 Page number:?????

Thanks

Alysson

A Non-Mouse 08/08/05 04:44:12 PM EDT

HTTP requests don't have to wait for an entire process to be completed before recieving a response. A "202 Accepted" and "Location" header can indicate to the client that the process is in a queue (or currently busy) and where the completed request will be found. Alternatively, a SMTP header could be borrowed (?) and a client could request with a "Reply-To" header for where the completed request should be sent (Reply-To being a URL endpoint, perhaps).

This isn't really something web browsers could leverage obviously but then back-end processing doesn't have to be in complete synchronization with what the user is seeing anyway.

Peter Saint-Andre 08/08/05 12:58:11 PM EDT

And let's not forget about the binding of SOAP to XMPP: http://www.jabber.org/jeps/jep-0072.html