Choreography vs. Orchestration
February 16, 2005
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 :-)
About
This page contains a single entry from Stefan Tilkov's Random Stuff posted on February 16, 2005 10:55 PM. The previous post in this blog was The Real Meaning of Social Software. The next post in this blog is And Now for Something Completely Different: REST vs. WS-*. Many more can be found on the main index page or by looking through the archives.
Comments
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
Posted by: Ashley McNeile at February 17, 2005 10:50 AM | link
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.
Posted by: Jacek at February 17, 2005 10:57 AM | link
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 :-))
Posted by: Stefan Tilkov at February 17, 2005 10:34 PM | link
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.
Posted by: Steve Ross-Talbot at March 20, 2005 10:27 PM | link
Orchestration is something you do while choreography is something that happens.
Posted by: Todd Brunia at August 19, 2005 4:04 PM | link
Orchestration is something you do while choreography is something that happens.
Posted by: Todd Brunia at August 19, 2005 4:16 PM | link
hi, i have a simple cuestions. What is the relasionship between choreography and web services composition? Itīs necesary the composition for make choreography?
Posted by: jorge at May 16, 2006 12:10 AM | link
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.
Posted by: Stefan Tilkov at May 16, 2006 4:49 PM | link
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.
Posted by: Antoon Prins at August 24, 2006 2:37 PM | link
