Hi Gilles,
Thanks for sharing your thoughts.
1- Reg. the coupling aspect -
Orchestration has it's benefits in terms of simplicity and the control on the actions to be performed.
This also makes the orchestrator vulnerable to being a single point of failure which is not the case in Event Driven systems.
2- EventDriven systems demonstrate immense flexibility in scenarios where interactions between multiple services is needed. The output of one service could be input to multiple other services.
If we employed the Orchestrator here, then we would have to modify this Orchestrator every time we need to add a new service to the system. Hence tightly coupled.
3- Whereas, in an Event Driven system the new service can be added by just making it listen to the right topic. Hence non intrusive.
4- Observability remains a challenge in Event Driven systems, hence a robust observability mechanism is a must here. Typically this is mitigated by employing ELK/Graphana/Distributed Tracing.
4- reg. the steps 4 to 7 -
The "Entity Mgt Msvc" in this figure, already demonstrates the usefulness of Orchestration.
Further in the flow, I wanted to show how Choreography can be implemented. Steps 4-7-9 depict a hypothetical multi-step transactional scenario where the steps need to happen one after another and how this impacts the system when one of the steps fail, affecting the process atomicity.