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 :-)
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
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.
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 :-))
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.
Orchestration is something you do while choreography is something that happens.
Orchestration is something you do while choreography is something that happens.
hi, i have a simple cuestions. What is the relasionship between choreography and web services composition? It´s necesary the composition for make choreography?
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.
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.