Click here to close now.

Welcome!

MICROSERVICES Authors: Elizabeth White, XebiaLabs Blog, Michael Kanasoot, Carmen Gonzalez, Lori MacVittie

Related Topics: MICROSERVICES

MICROSERVICES: Article

Introducing WS-Coordination

Introducing WS-Coordination

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.

Coordination
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.

WS-Coordination
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:

  • Instantiation (or activation) of a new coordinator for the specific coordination protocol for a particular application instance
  • Registration of participants with the coordinator such that they will receive that coordinator's protocol messages during (some part of) the application's lifetime
  • Propagation of contextual information between the Web services that comprise the application
  • An entity to drive the coordination protocol through to completion

    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.

     

    Activation
    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.

    Registration
    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.

    Completion
    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.

    Context
    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:

  • A coordination identifier with guaranteed global uniqueness for an individual coordinator in the form of a URI
  • An address of a registration service endpoint where parties receiving a context can register participants into the protocol
  • A time-to-live value that indicates for how long the context should be considered valid
  • Extensible protocol-specific information particular to the actual coordination protocol supported by the coordinator

    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:

  • Increased performance: Since only completion messages need to be propagated over the Internet to the top-level coordinator, the more numerous coordination protocol messages remain on low-latency, high-bandwidth networking within the enterprise.
  • Flexible coordination: Since the coordination within the enterprise is not visible to parties outside, the interposed coordinator can use whatever coordination protocol is most suitable for the type of application being executed within the enterprise. This may or may not be the same coordination protocol as that used at the top level, and so interposed coordinators can be used as a kind of "bridge" between coordination domains.

    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.

    Summary
    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.

  • More Stories By Mark Little

    Mark Little was Chief Architect, Transactions for Arjuna Technologies Ltd, a UK-based company specialising in the development of reliable middleware that was recently acquired by JBoss, Inc. Before Arjuna, Mark was a Distinguished Engineer/Architect within HP Arjuna Labs in Newcastle upon Tyne, England, where he led the HP-TS and HP-WST teams, developing J2EE and Web services transactions products respectively. He is one of the primary authors of the OMG Activity Service specification and is on the expert group for the same work in J2EE (JSR 95). He is also the specification lead for JSR 156: Java API for XML Transactions. He's on the OTS Revision Task Force and the OASIS Business Transactions Protocol specification. Before joining HP he was for over 10 years a member of the Arjuna team within the University of Newcastle upon Tyne (where he continues to have a Visiting Fellowship). His research within the Arjuna team included replication and transactions support, which include the construction of an OTS/JTS compliant transaction processing system. Mark has published extensively in the Web Services Journal, Java Developer's Journal and other journals and magazines. He is also the co-author of several books including “Java and Transactions for Systems Professionals” and “The J2EE 1.4 Bible.”

    More Stories By Jim Webber

    Dr. Jim Webber is a senior researcher from the University of Newcastle
    upon Tyne, currently working in the convergence of Web Services and Grid
    technologies at the University of Sydney, Australia. Jim was previously
    Web Services architect with Arjuna Technologies where he worked on Web
    Services transactioning technology, including being one of the original
    authors of the WS-CAF specification. Prior to Arjuna, Jim was the lead
    developer with Hewlett-Packard on the industry's first Web Services
    Transaction solution. Co-author of "Developing Enterprise Web Services -
    An Architect's Guide," Jim is an active speaker and author in the Web
    Services space. Jim's home on the web is http://jim.webber.name

    Comments (3) 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
    Sei ES 06/09/03 09:28:00 PM EDT

    We tend to equate Java = Sun. Today, my believe is not so. IBM & others are very deep into Java as well. Moreover, WS is not about Java. WS is independent of tools.

    Mark Little 05/07/03 04:54:00 AM EDT

    I think Microsoft might have a few things to say about "Java is the thread ..." since their offerings won't be Java based ;-) I don't have any insights I can share as to what Sun is doing in this area, but there's obviously a lot going on in the Java space, what with J2EE and JCP, and there has been a lot of effort over the last year on Web Services in J2EE. So, maybe it's just a matter of timing?

    Mark.

    Donald Hsu 05/06/03 06:13:00 AM EDT

    It seems great that BEA, Microsoft and IBM are all making millions $$$ on WS-coordination effort to make their platform, software compatible. But what about Sun? What kind of role it plays? After all, Java is the thread for all of these efforts. Sun should play more active role in Web Server and Web Services market by jumping onto the bandwaggon!

    @MicroservicesExpo Stories
    SYS-CON Events announced today that MangoApps 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., and the 17th International Cloud Expo®, which will take place on November 3–5, 2015, at the Santa Clara Convention Center in Santa Clara, CA. MangoApps provides private all-in-one social intranets allowing workers to securely collaborate from anywhere in the world and from any device. Social, mobile, and eas...
    SYS-CON Events announced today that Solgenia 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, and the 17th International Cloud Expo®, which will take place on November 3–5, 2015, at the Santa Clara Convention Center in Santa Clara, CA. Solgenia is the global market leader in Cloud Collaboration and Cloud Infrastructure software solutions. Designed to “Bridge the Gap” between Personal and Professional S...
    When it comes to microservices there are myths and uncertainty about the journey ahead. Deploying a “Hello World” app on Docker is a long way from making microservices work in real enterprises with large applications, complex environments and existing organizational structures. February 19, 2015 10:00am PT / 1:00pm ET → 45 Minutes Join our four experts: Special host Gene Kim, Gary Gruver, Randy Shoup and XebiaLabs’ Andrew Phillips as they explore the realities of microservices in today’s IT worl...
    OmniTI has expanded its services to help customers automate their processes to deliver high quality applications to market faster. Consistent with its focus on IT agility and quality, OmniTI operates under DevOps principles, exploring the flow of value through the IT delivery process, identifying opportunities to eliminate waste, realign misaligned incentives, and open bottlenecks. OmniTI takes a unique, value-centric approach by plotting each opportunity in an effort-payoff quadrant, then work...
    Cloud computing is changing the way we look at IT costs, according to industry experts on a recent Cloud Luminary Fireside Chat panel discussion. Enterprise IT, traditionally viewed as a cost center, now plays a central role in the delivery of software-driven goods and services. Therefore, companies need to understand their cloud utilization and resulting costs in order to ensure profitability on their business offerings. Led by Bernard Golden, this fireside chat offers valuable insights on ho...
    Hosted PaaS providers have given independent developers and startups huge advantages in efficiency and reduced time-to-market over their more process-bound counterparts in enterprises. Software frameworks are now available that allow enterprise IT departments to provide these same advantages for developers in their own organization. In his workshop session at DevOps Summit, Troy Topnik, ActiveState’s Technical Product Manager, will show how on-prem or cloud-hosted Private PaaS can enable organ...
    The world's leading Cloud event, Cloud Expo has launched Microservices Journal on the SYS-CON.com portal, featuring over 19,000 original articles, news stories, features, and blog entries. DevOps Journal is focused on this critical enterprise IT topic in the world of cloud computing. Microservices Journal offers top articles, news stories, and blog posts from the world's well-known experts and guarantees better exposure for its authors than any other publication. Follow new article posts on T...
    For those of us that have been practicing SOA for over a decade, it's surprising that there's so much interest in microservices. In fairness microservices don't look like the vendor play that was early SOA in the early noughties. But experienced SOA practitioners everywhere will be wondering if microservices is actually a good thing. You see microservices is basically an SOA pattern that inherits all the well-known SOA principles and adds characteristics that address the use of SOA for distribut...
    Microservice architectures are the new hotness, even though they aren't really all that different (in principle) from the paradigm described by SOA (which is dead, or not dead, depending on whom you ask). One of the things this decompositional approach to application architecture does is encourage developers and operations (some might even say DevOps) to re-evaluate scaling strategies. In particular, the notion is forwarded that an application should be built to scale and then infrastructure sho...
    SYS-CON Events announced today the IoT Bootcamp – Jumpstart Your IoT Strategy, being held June 9–10, 2015, in conjunction with 16th Cloud Expo and Internet of @ThingsExpo at the Javits Center in New York City. This is your chance to jumpstart your IoT strategy. Combined with real-world scenarios and use cases, the IoT Bootcamp is not just based on presentations but includes hands-on demos and walkthroughs. We will introduce you to a variety of Do-It-Yourself IoT platforms including Arduino, Ras...
    Modern Systems announced completion of a successful project with its new Rapid Program Modernization (eavRPMa"c) software. The eavRPMa"c technology architecturally transforms legacy applications, enabling faster feature development and reducing time-to-market for critical software updates. Working with Modern Systems, the University of California at Santa Barbara (UCSB) leveraged eavRPMa"c to transform its Student Information System from Software AG's Natural syntax to a modern application lev...
    Our guest on the podcast this week is Jason Bloomberg, President at Intellyx. When we build services we want them to be lightweight, stateless and scalable while doing one thing really well. In today's cloud world, we're revisiting what to takes to make a good service in the first place. Listen in to learn why following "the book" doesn't necessarily mean that you're solving key business problems.
    Microservices are the result of decomposing applications. That may sound a lot like SOA, but SOA was based on an object-oriented (noun) premise; that is, services were built around an object - like a customer - with all the necessary operations (functions) that go along with it. SOA was also founded on a variety of standards (most of them coming out of OASIS) like SOAP, WSDL, XML and UDDI. Microservices have no standards (at least none deriving from a standards body or organization) and can be b...
    Right off the bat, Newman advises that we should "think of microservices as a specific approach for SOA in the same way that XP or Scrum are specific approaches for Agile Software development". These analogies are very interesting because my expectation was that microservices is a pattern. So I might infer that microservices is a set of process techniques as opposed to an architectural approach. Yet in the book, Newman clearly includes some elements of concept model and architecture as well as p...
    SYS-CON Events announced today the DevOps Foundation Certification Course, being held June ?, 2015, in conjunction with DevOps Summit and 16th Cloud Expo at the Javits Center in New York City, NY. This sixteen (16) hour course provides an introduction to DevOps – the cultural and professional movement that stresses communication, collaboration, integration and automation in order to improve the flow of work between software developers and IT operations professionals. Improved workflows will res...
    Microservices, for the uninitiated, are essentially the decomposition of applications into multiple services. This decomposition is often based on functional lines, with related functions being grouped together into a service. While this may sound a like SOA, it really isn't, especially given that SOA was an object-centered methodology that focused on creating services around "nouns" like customer and product. Microservices, while certainly capable of being noun-based, are just as likely to be v...
    An explosive combination of technology trends will be where ‘microservices’ and the IoT Internet of Things intersect, a concept we can describe by comparing it with a previous theme, the ‘X Internet.' The idea of using small self-contained application components has been popular since XML Web services began and a distributed computing future of smart fridges and kettles was imagined long back in the early Internet years.
    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 ...
    SOA Software has changed its name to Akana. With roots in Web Services and SOA Governance, Akana has established itself as a leader in API Management and is expanding into cloud integration as an alternative to the traditional heavyweight enterprise service bus (ESB). The company recently announced that it achieved more than 90% year-over-year growth. As Akana, the company now addresses the evolution and diversification of SOA, unifying security, management, and DevOps across SOA, APIs, microser...
    Exelon Corporation employs technology and process improvements to optimize their IT operations, manage a merger and acquisition transition, and to bring outsourced IT operations back in-house. To learn more about how this leading energy provider in the US, with a family of companies having $23.5 billion in annual revenue, accomplishes these goals we're joined by Jason Thomas, Manager of Service, Asset and Release Management at Exelon. The discussion is moderated by me, Dana Gardner, Principal A...