XML & Web services: Orchestration vs. Choreography
Most of the time Orchestration and Choreography are terms that seem to be used as synonyms. In order to have a clear understanding, can someone make a clear definition of Orchestration and Choreography and explain how they differ from each other?
Thanks in advance,
The terms have very different meaning, and are very well chosen IMO.
Orchestration: like in an orchestra, there's a man (the director) that says to all the musicians what to do. They're therefore synchronized by following the direction of one person.
In practice when orchestration is in place, a central system says to some remote systems what to do.
Choreografy: in this case, like in a dancing stage, every dancer knows exactly what to do, and looks to all the other dancers involved in the process, to synchronize his steps.
A single remote system knows what to do and also what other systems to call after he ends his processing.
I have just provided definition for them in a blog @ http://jaywantdesh.blogspot.com/ Orchestration "Behaviour resulting from a central controller co-ordinating the behaviours of individual entities performing tasks independent of each other" • Has a central conductor • Each performer performs tasks independently • Tasks produce real world effect • Performer is not aware of the orchestrating conductor(s) using it Choreography "Behaviour resulting from a group of interacting individual entities with no central authority." • Entities interacts with each other • No central conductor, no overall responsibility • Each entity carry part of responsibility
In orchestration, which is usually used in private business processes, a central process (which can be another Web service) takes control of the involved Web services and coordinates the execution of different operations on the Web services involved in the operation. The involved Web services do not "know" (and do not need to know) that they are involved in a composition process and that they are taking part in a higher-level business process. Only the central coordinator of the orchestration is aware of this goal, so the orchestration is centralized with explicit definitions of operations and the order of invocation of Web services. Choreography, in contrast, does not rely on a central coordinator. Rather, each Web service involved in the choreography knows exactly when to execute its operations and with whom to interact. Choreography is a collaborative effort focusing on the exchange of messages in public business processes. All participants in the choreography need to be aware of the business process, operations to execute, messages to exchange, and the timing of message exchanges. From the perspective of composing Web services to execute business processes, orchestration is a more flexible paradigm and has the following advantages over choreography: * The coordination of component processes is centrally managed by a known coordinator. * Web services can be incorporated without their being aware that they are taking part in a larger business process. * Alternative scenarios can be put in place in case faults occur.