|By Mark Little, Jim Webber||
|April 22, 2003 12:00 AM EDT||
In July 2002, BEA, IBM, and Microsoft released a trio of specifications designed to support business transactions over Web services. These specifications - BPEL4WS, WS-Transaction, and WS-Coordination - together form the bedrock for reliably choreographing Web services-based applications, providing business process management, transactional integrity, and generic coordination facilities respectively.
This article introduces the underlying concepts of Web Services Coordination, and shows how a generic coordination framework can be used to provide the foundations for higher-level business processes. In future articles, we will demonstrate how coordination allows us to move up the Web services stack to encompass WS-Transaction and on to BPEL4WS.
In general terms, coordination is the act of one entity (known as the coordinator) disseminating information to a number of participants for some domain-specific reason. This reason could be in order to reach consensus on a decision like a distributed transaction protocol, or simply to guarantee that all participants obtain a specific message, as occurs in a reliable multicast environment. When parties are being coordinated, information known as the coordination context is propagated to tie together operations that are logically part of the same coordinated work or activity. This context information may flow with normal application messages, or may be an explicit part of a message exchange and is specific to the type of coordination being performed. For example, a security coordination service will propagate differently formed contexts than a transaction coordinator.
Despite the fact that there are many types of distributed applications that require coordination, it will be no surprise to learn that each domain typically uses a different coordination protocol. In transactions, for example, OASIS Business Transactions Protocol and Object Management Group's Object Transaction Service are solutions to specific problem domains that are not applicable to others since they are based on different architectural styles.
Given the domain-specific nature of these protocols (i.e., loosely coupled transactional Web services and tightly coupled transactional CORBA objects) there is no way to provide a universal solution without jeopardizing efficiency and scalability in each individual domain; and not everyone wants to (or can afford to) have a full-blown transaction processing system in order to do coordination. However, both of these protocols have the underlying requirement for propagating contextual information to participants, and therefore it would make some sense if that mechanism could be made generic, and thus reused. On closer examination, we find that even solely within the Web services domain we encounter situations where coordination is a requirement of several different types of problem domain, such as workflow management and transaction processing, but where the overall models are very different yet that same requirement for coordination is still present.
The fundamental idea underpinning WS-Coordination is that there is indeed a generic need for propagating context information in a Web services environment, which is a shared requirement irrespective of the applications being executed. The WS-Coordination specification defines a framework that allows different coordination protocols to be plugged in to coordinate work between clients, services, and participants (see Figure 1). The WS-Coordination specification talks in terms of activities, which are distributed units of work involving one or more parties (which may be services, components, or even objects). At this level, an activity is minimally specified and is simply created, made to run, and then completed.
In Figure 1, we suggest that the framework is useful for propagating security, workflow, or replication contexts, though this is by no means an exhaustive list. Nonetheless, whatever coordination protocol is used, and in whatever domain it is deployed, the same generic requirements are present:
The first three points are directly the concern of WS-Coordination, while the fourth is the responsibility of a third-party entity, usually the client application that controls the application as a whole. These four roles and their interrelationships are shown in Figure 2.
The WS-Coordination framework exposes an Activation Service that supports the creation of coordinators for specific protocols and their associated contexts. The process of invoking an activation service is done asynchronously, so the specification defines both the interface of the activation service itself, and that of the invoking service, so that the activation service can call back to deliver the results of the activation - namely a context that identifies the protocol type and coordinator location. These interfaces are presented in Listing 1, where the activation service has a one-way operation that expects to receive a CreateCoordinationContext message, and correspondingly the service that sent the CreateCoordinationContext message expects to be called back with a CreateCoordination ContextResponse message, or informed of a problem via an Error message.
Once a coordinator has been instantiated and a corresponding context created by the activation service, a Registration Service is created and exposed. This service allows participants to register to receive protocol messages associated with a particular coordinator. Like the activation service, the registration service assumes asynchronous communication and so specifies WSDL for both registration service and registration requester (see Listing 2).
When a participant is registered with a coordinator through the registration service, it receives messages that the coordinator sends (for example, "prepare to complete" and "complete" messages if a two-phase protocol is used); where the coordinator's protocol supports it, participants can also send messages back to the coordinator.
The role of terminator is generally played by the client application, which at an appropriate point will ask the coordinator to perform its particular coordination function with any registered participants - to drive the protocol through to its completion. On completion, the client application may be informed of an outcome for the activity, which may vary from simple succeeded/ failed notification through to complex structured data detailing the activity's status.
The context is critical to coordination since it contains the information necessary for services to participate in the protocol. It provides the glue to bind all of the application's constituent Web services together into a single coordinated application whole. Since WS-Coordination is a generic coordination framework, contexts have to be tailored to meet the needs of specific coordination protocols that are plugged into the framework. The format of a WS-Coordination context is specifically designed to be third-party extensible and its contents are as follows:
While the first three points are common sense, the fourth is somewhat more interesting. Since WS-Coordination is generic, it is of very little use to applications without augmentation, and this is reflected in the part of the WS-Coordination XML schema for contexts. In Listing 3, the schema states that a context consists of a URI that uniquely identifies the type of coordination that is required (xs:anyURI), an endpoint where participants to be coordinated can be registered (wsu:PortReferenceType), and an extensibility element designed to carry specific coordination protocol context payload (xs:any), which can carry arbitrary XML payload. (Note: This type also inherits some useful features from its parent in the form of a time-to-live value and an identifier.)
Coordinating Business Processes on the Web
To show WS-Coordination in action, we'll consider a centralized sign-on service that enables a client application to authenticate once, and then use given credentials to access a number of Web services, and to de-authenticate from the system with a single operation irrespective of the number of Web services that are invoked. (Note: It's important to note that although the coordination strategy outlined here is reasonable enough, the patter as a whole isn't industrial strength since we avoid clouding the coordination issues by drawing on other useful technologies such as XML encryption and XML signature, which a truly trustworthy implementation would utilize. You should remember while following this example through that a real implementation would draw heavily on security standards like XML-encryption to provide the necessary privacy and XML digital signatures to provide authenticity.) The initial coordination pattern for this scenario is captured in Figure 3.
Here we see the initial stages of the application. The client application locates an activation service and sends it a message asking for the creation of a security coordinator and a corresponding security context, passing appropriate user credentials as part of the activation process as shown in Listing 4.
Assuming that a security coordination service has been registered with the coordination framework, a coordinator is created (and exposed as a registration service) and a context like that in Listing 4 is duly returned to the client application as part of the CreateCoordinationContextResponse message.
The client application interacts with its component Web services sending and receiving messages as normal, with the exception that it embeds the coordination context (which carries the security information) in a SOAP header block in its messages to provide authenticity credentials for those services that are invoked.
Let's assume that a service understands the protocol messages associated with our simple centralized sign-on service, and furthermore hasn't registered a participant previously. Once the service receives a SOAP message containing a security context header (see Listing 5), it registers a participant with the coordinator using the details provided in the context (via the WS-Coordination registration service URI, for example). This registration operation occurs every time a service receives a particular context for the first time, which ensures that all services register participants within the activity.
When the client decides to terminate its session and log out of the services it has been using, it sends a completion message to the coordinator; in turn, the coordinator informs each registered participant to revoke the privileges for the client application, preventing it from using their corresponding services. Any subsequent calls by the client to that service with the same context will result in the service being unable to register a participant since the context details will no longer resolve to a live coordinator to register with (see Figure 4).
At some point, the client application finishes its work and must run the completion protocol to force its own system-wide logoff. To do this, it sends a security protocol logoff message to the security coordinator. This message is entirely out-of-scope of WS-Coordination and is instead defined by the specification of our security protocol which plugs in to the WS-Coordination framework. The completion message is shown in Listing 6.
In response to receiving this message, the security coordinator informs each of its registered participants to terminate the user's current session. To do this, it sends each of the participants a signOut message to which they respond with a signedOut message, confirming that the user is no longer authenticated with that particular participant's associated service. The pertinent parts of the signOut and signedOut messages are shown in Listing 7.
Once a signedOut message has been received from each of the enrolled participants, it can report back to the client application that its session has been ended. The final message in our WS-Coordination protocol is the loggedOut response message from the security coordination to the client (see Listing 8).
Advanced Usage Scenarios
In our security coordination example, the overall architecture is relatively static and known in advance of the coordination. However, it may be that in a business-to-business scenario we would like the ability to coordinate arbitrary groups of Web services as part of a single, logical, coordinated application. WS-Coordination supports this through a scheme known as interposition.
Interposition is a way of creating a hierarchy of coordinators, each of which looks like a simple participant to coordinators higher up the coordination tree, yet acts just like a normal coordinator for participants lower down the tree. Coordinators become registered within this hierarchy if the client application sends a CreateCoordination Context message to an activation service along with a valid context. When the receiving activation service creates the new context (and associated coordinator/registration service), it uses the original context to determine the endpoint of its superior coordinator (a.k.a. registration service) and enrolls the new coordinator with it.
In Figure 5 we see a typical interposed coordinator arrangement spanning three different enterprises using two different coordination protocols. This arrangement is arrived at through a client application creating a top-level context and then invoking Web services within the bounds of its partner enterprises. In the noninterposed case, upon first receipt of a context embedded in a SOAP header a service registers a participant with the coordinator identified by the context. However, in this situation, for reasons such as security or trustworthiness, the service enrolls its own coordinator by sending an activation message loaded with the top-level context to a local activation service, and then registers with the newly created local coordinator. (Note: By using ts own coordinator, the service or domain in which it resides only exposes the coordinator to the superior and not the individual participants. This may be useful in restricting the amount of information that can flow out of the domain and hence be available to potentially upotentially unsecure or untrusted individuals/services.)
Having received a context with an activation message, the newly created coordinator duly registers itself with the registration service that the context advertises. The top-level coordinator is unaware of this arrangement since it sees the interposed coordinator as a participant, while the local participants are coordinated by their own local coordinator, which confers the following advantages:
In Figure 5 Enterprise A uses the same coordination protocol as the top-level coordinator. In this case, Enterprise A's coordinator coordinates local participants according to the same protocol as the top-level. However, since only the outcome of the local coordination needs to be sent over the Internet to the top-level coordinator, and not the more abundant coordination protocol messages, this approach is performance-optimized, compared to registering Enterprise A's participants directly with the top-level coordinator.
For Enterprise B and Enterprise C, the same performance benefit exists, although the real focus of coordinating these participants is the fact that they are coordinated with different protocols that suit the particular enterprise's needs and not necessarily the same coordination protocol used at the top level. Since the local coordinator for each enterprise is effectively "bilingual" in the coordination protocols they understand (knowing both the participant aspects of the top-level coordination protocol and the coordinator aspects of their own internal coordination protocols), different coordination domains can easily be bridged without adding complexity to the overall architecture.
WS-Coordination looks set to become the adopted standard for activity coordination on the Web. Out of the box, WS-Coordination provides only activity and registration services, and is extended through protocol plug-ins that provide domain-specific coordination facilities. In addition to its generic nature, the WS-Coordination model also scales efficiently via interposed coordination, which allows arbitrary collections of Web services to coordinate their operation in a straightforward and scalable manner.
Though WS-Coordination is generically useful, at the time of this writing only one protocol that leverages WS-Coordination has been made public: WS-Transaction We'll look at this protocol in our next article.
The 4th International Internet of @ThingsExpo, co-located with the 17th International Cloud Expo - to be held November 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA - announces that its Call for Papers is open. The Internet of Things (IoT) is the biggest idea since the creation of the Worldwide Web more than 20 years ago.
May. 29, 2015 12:00 PM EDT Reads: 1,742
Software development, like manufacturing, is a craft that requires the application of creative approaches to solve problems given a wide range of constraints. However, while engineering design may be craftwork, the production of most designed objects relies on a standardized and automated manufacturing process. By contrast, much of moving an application from prototype to production and, indeed, maintaining the application through its lifecycle has often remained craftwork. In his session at Dev...
May. 29, 2015 12:00 PM EDT Reads: 1,480
Amazon, Google and Facebook are household names in part because of their mastery of Big Data. But what about organizations without billions of dollars to spend on Big Data tools - how can they extract value from their data? In his session at 6th Big Data Expo®, Ali Ghodsi, Co-Founder and Head of Engineering at Databricks, discussed how the zero management cost and scalability of the cloud is addressing the challenges and pain points that data engineers face when working with Big Data. He also s...
May. 29, 2015 12:00 PM EDT Reads: 4,291
SYS-CON Events announced today that EnterpriseDB (EDB), the leading worldwide provider of enterprise-class Postgres products and database compatibility solutions, will exhibit at SYS-CON's 16th International Cloud Expo®, which will take place on June 9-11, 2015, at the Javits Center in New York City, NY. EDB is the largest provider of Postgres software and services that provides enterprise-class performance and scalability and the open source freedom to divert budget from more costly traditiona...
May. 29, 2015 11:00 AM EDT Reads: 1,588
The Internet of Things is a misnomer. That implies that everything is on the Internet, and that simply should not be - especially for things that are blurring the line between medical devices that stimulate like a pacemaker and quantified self-sensors like a pedometer or pulse tracker. The mesh of things that we manage must be segmented into zones of trust for sensing data, transmitting data, receiving command and control administrative changes, and peer-to-peer mesh messaging. In his session a...
May. 29, 2015 11:00 AM EDT Reads: 4,015
I read an insightful article this morning from Bernard Golden on DZone discussing the DevOps conundrum facing many enterprises today – is it better to build your own DevOps tools or go commercial? For Golden, the question arose from his observations at a number of DevOps Days events he has attended, where typically the audience is composed of startup professionals: “I have to say, though, that a typical feature of most presentations is a recitation of the various open source products and compo...
May. 29, 2015 10:00 AM EDT Reads: 894
The 5th International DevOps Summit, co-located with 17th International Cloud Expo – being held November 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA – announces that its Call for Papers is open. Born out of proven success in agile development, cloud computing, and process automation, DevOps is a macro trend you cannot afford to miss. From showcase success stories from early adopters and web-scale businesses, DevOps is expanding to organizations of all sizes, including the...
May. 29, 2015 10:00 AM EDT Reads: 4,091
May. 29, 2015 10:00 AM EDT Reads: 1,892
This is the final installment of the six-part series Microservices and PaaS. It seems like forever since I attended Adrian Cockroft's meetup focusing on microservices. It's actually only been a couple of months, but much has happened since then: countless articles, meetups, and conference sessions focusing on microservices have been delivered, many meetings and design efforts at companies moving towards a microservices-based approach have been endured, and five installments of this blog series ...
May. 29, 2015 09:30 AM EDT Reads: 2,530
There is no question that the cloud is where businesses want to host data. Until recently hypervisor virtualization was the most widely used method in cloud computing. Recently virtual containers have been gaining in popularity, and for good reason. In the debate between virtual machines and containers, the latter have been seen as the new kid on the block – and like other emerging technology have had some initial shortcomings. However, the container space has evolved drastically since coming on...
May. 29, 2015 09:15 AM EDT Reads: 1,374
Bill Doerrfeld at Nordic APIs has written today about how APIs are evolving the B2B landscape. This is a particularly interesting article for me, because my personal background is working for an EDI provider, where I linked EDI processes from the private network to the Internet, over 15 years ago. Vordel was founded to allow new Web Services APIs to be used for B2B. Axway, a B2B software company, acquired Vordel in 2012 to link B2B with Web APIs. This caused a domino effect, with other API Manag...
May. 29, 2015 09:15 AM EDT Reads: 593
Even though it’s now Microservices Journal, long-time fans of SOA World Magazine can take comfort in the fact that the URL – soa.sys-con.com – remains unchanged. And that’s no mistake, as microservices are really nothing more than a new and improved take on the Service-Oriented Architecture (SOA) best practices we struggled to hammer out over the last decade. Skeptics, however, might say that this change is nothing more than an exercise in buzzword-hopping. SOA is passé, and now that people are ...
May. 29, 2015 09:00 AM EDT Reads: 3,556
SYS-CON Media named Andi Mann editor of DevOps Journal. DevOps Journal is focused on this critical enterprise IT topic in the world of cloud computing. DevOps Journal brings valuable information to DevOps professionals who are transforming the way enterprise IT is done. Andi Mann, Vice President, Strategic Solutions, at CA Technologies, is an accomplished digital business executive with extensive global expertise as a strategist, technologist, innovator, marketer, communicator, and thought lea...
May. 29, 2015 09:00 AM EDT Reads: 1,475
Virtualization is everywhere. Enormous and highly profitable companies have been built on nothing but virtualization. And nowhere has virtualization made more of an impact than in Cloud Computing, the rampant and unprecedented adoption of which has been the direct result of the wide availability of virtualization software and techniques that enabled it. But does the cloud actually require virtualization?
May. 29, 2015 09:00 AM EDT Reads: 2,144
SYS-CON Events announced today that MetraTech, now part of Ericsson, has been named “Silver Sponsor” of SYS-CON's 16th International Cloud Expo®, which will take place on June 9–11, 2015, at the Javits Center in New York, NY. Ericsson is the driving force behind the Networked Society- a world leader in communications infrastructure, software and services. Some 40% of the world’s mobile traffic runs through networks Ericsson has supplied, serving more than 2.5 billion subscribers.
May. 29, 2015 09:00 AM EDT Reads: 1,451
Enterprises are fast realizing the importance of integrating SaaS/Cloud applications, API and on-premises data and processes, to unleash hidden value. This webinar explores how managers can use a Microservice-centric approach to aggressively tackle the unexpected new integration challenges posed by proliferation of cloud, mobile, social and big data projects. Industry analyst and SOA expert Jason Bloomberg will strip away the hype from microservices, and clearly identify their advantages and d...
May. 29, 2015 09:00 AM EDT Reads: 1,532
In the first four parts of this series I presented an introduction to microservices along with a handful of emerging microservices patterns, and a discussion of some of the downsides and challenges to using microservices. The most recent installment of this series looked at ten ways that PaaS facilitates microservices development and adoption. In this post I’ll cover some words of wisdom, advice intended for individuals, teams, and organizations considering a move to microservices. I've gleaned...
May. 29, 2015 09:00 AM EDT Reads: 2,754
Python is really a language which has swept the scene in recent years in terms of popularity, elegance, and functionality. Research shows that 8 out 10 computer science departments in the U.S. now teach their introductory courses with Python, surpassing Java. Top-ranked CS departments at MIT and UC Berkeley have switched their introductory courses to Python. And the top three MOOC providers (edX, Coursera, and Udacity) all offer introductory programming courses in Python. Not to mention, Python ...
May. 29, 2015 09:00 AM EDT Reads: 1,155
With major technology companies and startups seriously embracing IoT strategies, now is the perfect time to attend @ThingsExpo in Silicon Valley. Learn what is going on, contribute to the discussions, and ensure that your enterprise is as "IoT-Ready" as it can be! Internet of @ThingsExpo, taking place Nov 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA, is co-located with 17th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading in...
May. 29, 2015 09:00 AM EDT Reads: 2,503
It's 2:15pm on a Friday, and I'm sitting in the keynote hall at PyCon 2013 fidgeting through a succession of lightning talks that have very little relevance to my life. Topics like "Python code coverage techniques" (ho-hum) and "Controlling Christmas lights with Python” (yawn - I wonder if there's anything new on Hacker News)...when Solomon Hykes takes the stage, unveils Docker, and the world shifts. If you haven't seen it yet, you should watch the video of Solomon's Pycon The Future of Linux C...
May. 29, 2015 09:00 AM EDT Reads: 1,984