What is the Orchestrator Pattern?
Adam Bellemare defines it in his book “Building Event-Driven Microservices” as a “pattern where a central Microservice, issues commands to and awaits responses from subordinate worker Microservices”.
Pros of using the Orchestrator Pattern with Golang
■ It’s relatively easy to implement and maintain because all coordination is in one place.
■ Workflow is easier to define because of the nature of centralized orchestration.
Cons of using the Orchestrator Pattern with Golang
■ There’s coupling between the orchestrator and services, any upstream changes require changes in the orchestrator.
■ Single point of failure, because the orchestrator is in charge of the workflow, if it fails everything fails even the if the other services are working correctly.
== Relevant links
■ Building Event-Driven Microservices (affiliate link): https://amzn.to/3zuMWer
■ Example code: https://github.com/MarioCarrion/video…
■ Software Architecture in Go/Golang: https://www.youtube.com/playlist?list…
■ Learning Golang: Concurrency Patterns using errgroup package: https://youtu.be/KGOgEr7tFKE
■ Learning Golang: Context package: Cancellations, Deadlines and Request-scoped values https://youtu.be/mgJMIZsWfB4