O'Reilly logo

SOA in Practice by Nicolai M. Josuttis

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Orchestration Versus Choreography

We have already explored the idea of designing higher services and processes by composing them out of existing services. This approach is called orchestration. Here are its characteristics:

  • There is one central controller that coordinates all the activities of the process.

  • You can apply the composite pattern, which means that the whole composition itself can be used as a service.

However, this is not the only way to design or execute processes. Another common approach involves collaboration between different parties, which are each responsible for one or more steps. In this scenario nobody controls the process as a whole, and it might even be the case that nobody knows about or understands the process as a whole. This approach is called choreography.

When you analyze processes in practice, you usually end up in a process based on choreography. Each person, department, or company involved can tell you what they do: "If I get the document I do the following . . . and then I pass it to XYZ." Their control and knowledge ends as soon as they give up control to the person, department, or company responsible for performing the next step.

Of course, you can also design processes in this way. In fact, because this kind of process design avoids centralized control, it might scale better. The drawback is that finding out the state of the process or the reason for misbehavior can become a nightmare (as anybody knows who's dealt with such processes in large companies ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required