This is a single archived entry from Stefan Tilkov’s blog. For more up-to-date content, check out my author page at INNOQ, which has more information about me and also contains a list of published talks, podcasts, and articles. Or you can check out the full archive.

Choreography vs. Orchestration

Stefan Tilkov,

Some people use the terms Choreography and Orchestration as synonyms, some claim they describe different concepts. A few days ago, I heard a very convincing reasoning. I’m not sure where it comes from:

In orchestration, there’s someone — the conductor — who tells everybody in the orchestra what to do and makes sure they all play in sync.

In choreography, every dancer follows a pre-defined plan — everyone independently of the others.

You may question the result. But the explanation is great :-)

On February 17, 2005 10:50 AM, Ashley McNeile said:

I distinguish them as follows:

Orchestration defines procedure and Choreography defines protocol.

This fits with the conductor/dance analogy as a procedure is executed by a single party, whereas a protocol defines the rules whereby one party interacts with others.

I also think that “procedure” and “protocol” can be given formal meanings, and can therefore be formally distinguished. This might be a route to eliminating the confusion on this subject for good.

Rgds Ashley

On February 17, 2005 10:57 AM, Jacek said:

Hi Stefan, I don’t like this particular comparison because the choreography plan is in effect the same as the the conductor, since the conductor can be expected to be a program and the choreography plan is also a program.

I like to think that orchestration is when a service uses other services to do its job (and it can be scripted using an orchestration language), whereas choreography only describes a limited set of constraints regarding how a service (or a set of services) can be composed into a bigger situation. The difference would be that an orchestration description is complete, whereas a choreography description is not, intentionally so.

On February 17, 2005 10:34 PM, Stefan Tilkov said:

Ashley, I agree with your points; what I like about the analogy is the easy mental link created (thinking of an orchestra and a conductor, and a ballet and its choreography).

Jacek: While all of this may be a rather philosophical discussion, I believe that something you’ve left out is that in the choreography (ballet) analogy, all of the participants execute the plan independently of each other. (OK, I admit that the orchestration analogy has the same problem. But anyway :-))

On March 20, 2005 10:27 PM, Steve Ross-Talbot said:

When you have but 3 minutes to make a point it is difficult to do so without stretching analogies. My apologies for doing so.

Orchestration is generally a full-on execution mechanism for recursive composition of services (aka WS-BPEL). Choreography describes the observable behavior that makes up a contract between a set of peers. It doesn’t say how it is to be achieved just what can be observed. Orchestration is much imperative and choreography declarative. They can work hand-in-hand. For my money declarative is always a good news because we have rather a lot of imperative languages and I’d rather not see another one for some time.

On August 19, 2005 4:04 PM, Todd Brunia said:

Orchestration is something you do while choreography is something that happens.

On August 19, 2005 4:16 PM, Todd Brunia said:

Orchestration is something you do while choreography is something that happens.

On May 16, 2006 12:10 AM, jorge said:

hi, i have a simple cuestions. What is the relasionship between choreography and web services composition? It´s necesary the composition for make choreography?

On May 16, 2006 4:49 PM, Stefan Tilkov said:

I think the boundaries are not exactly clear. When you build a composite service, you use some programming language to build a service that invokes other services. Arguably, this is in no way different from drawing a diagram, generating a BPEL script, deploying it to some engine, and expose the result a new service.

On August 24, 2006 2:37 PM, Antoon Prins said:

Jorge, I’m currently working on a glossery of composite services terms and I came across your question about composite services. So here’s my explanation: A composite service is a system that arranges existing services in a workflow of some sort (or process if you want) and deploys this arrangement as a service of it’s own. The added value of this system therefore is a previously non-existing functional construct. The key point is that the composite service is indeed a composition and not a simple collection of existing services and that within the composition the service invocations must! be coordinated, e.g. through choreography where the control is centralized. So choreography is a mechanisme for coordination (control) in a composite service.