Software Architecture in Golang: Orchestrator Pattern

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):

■ Example code:…

■ Software Architecture in Go/Golang:…

■ Learning Golang: Concurrency Patterns using errgroup package:

■ Learning Golang: Context package: Cancellations, Deadlines and Request-scoped values