Orchestration Vs Choreography


These words are like a googly in SOA field, There is no clear separation of definitions for these 2 terms, Debates & discussions are still going on to clarify the differences. In mid of all these discussions, we should have some knowledge about these terms; So here I am with some information about these terms. First I will give few examples & then jump into the definition.


Ex 1 : (Music & Dance)
In Orchestration (Orchestra), there’s someone the conductor (Director/Instructor/Manager) — who tells everybody in the orchestra what to do and makes sure they all play in sync.
In Choreography (Dance), every dancer follows a pre-defined plan — everyone independently of the others.


Ex 2 : (Our workplace : Office)
As in real organisation, we employ both these techniques – orchestration by means of formal hierarchy and choreography within small teams for effective team work. Using both these techniques, real organisations can achieve their goal.


Definition :
Suppose a WS(P) (Central Process) is calling another WS(C), WS(C) do not "know" (and do not need to know) that they are involved in a composition process to achieve a higher goal.Only the central coordinator {WS(P)} of the orchestration is aware of this goal;
So the orchestration is centralized with explicit definitions of operations and the order of invocation of WS(C1),WS(C2)..
Choreography, in contrast, does not rely on a central coordinator. Rather, each WS(C) 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. 


Orchestration
• 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
• Entities interact with each other to produce real world effect 
• No central conductor, no overall responsibility 
• Each entity carry part of responsibility 


Note : WS(P) -> Parent Webservice & WS(C) -> Child Webservice

No comments:

Post a Comment