Stefan Tilkov's Random Stuff

Choreography vs. Orchestration

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

Comments

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.