Distributed Workflow Orchestration Platform  ·  View 04 of 31  ·  Structure

Layered Architecture

What depends on what, and the one dependency that points the wrong way.

Editable source SVG draw.io All views
Experience
Experience
Operations console
React · SSE timeline
Operations console...
Authoring CLI
workflow lint · publish
Authoring CLI...
Client SDKs
.NET · Python · Java
Client SDKs...
API
API
API Management
OAuth2 · quota
API Management...
Workflow API
Workflow API
Execution API
Execution API
Operator API
Operator API
Orchestration
Orchestration
Orchestration Service
DAG advance
Orchestration Service...
Scheduler Service
cron · leader
Scheduler Service...
Trigger Service
event subscriptions
Trigger Service...
Retry Service
backoff · circuit
Retry Service...
Outbox Relay
change feed
Outbox Relay...
Execution
Execution
Worker Runtime
lease · idempotency
Worker Runtime...
Task Handler SDK
execute(context)
Task Handler SDK...
Handler plugins
7 task types
Handler plugins...
Messaging
Messaging
Azure Service Bus
queues · sessions · DLQ
Azure Service Bus...
Azure Event Grid
trigger ingress
Azure Event Grid...
State
State
Azure Cosmos DB
definitions · state · events
Azure Cosmos DB...
Azure Managed Redis
concurrency leases
Azure Managed Redis...
Azure Blob Storage
payloads · artifacts
Azure Blob Storage...
Azure SQL
reporting replica
Azure SQL...
Platform
Platform
AKS
zone redundant
AKS...
Microsoft Entra ID
Microsoft Entra ID
Azure Key Vault
Azure Key Vault
Azure Monitor
OTel · App Insights
Azure Monitor...
Container Registry
Container Registry
HTTPS
HTTPS
enqueue submit
enqueue submit
state + outbox
state + outbox
dispatch
dispatch
lease message
lease message
definition fetch
definition fetch
circuit state
circuit state
Layered Architecture — What Depends on What
Layered Architecture — What Depends on What
Application we own
Application we own
Interface / broker
Interface / broker
Queue / topic
Queue / topic
Data store
Data store
Security / platform
Security / platform
synchronous
synchronous
event / async
event / async
failure / alternate
failure / alternate
One dependency points the wrong way and is drawn in red: workers read task definitions from the Workflow API. It is cached, read-only and version-pinned, and it is tracked as debt rather than hidden.
One dependency points the wrong way and is drawn in red: workers read task definitions from the Workflow API. It is cached, read-only and version-pinned, and it is tracked as debt rather than hidden.
v 1.0 · owner Data & AI Global Practice · date 2026-08
v 1.0 · owner Data & AI Global Practice · date 2026-08
Text is not SVG - cannot display

The layering rule

  • Dependencies point downward only. The orchestration layer knows the messaging and state layers exist; neither of those knows anything about orchestration, which is what allows Service Bus to be replaced by another broker without touching the DAG logic.
  • Execution is a peer of orchestration, not a child of it. Workers are reached only through the messaging layer, so a worker deployment can be restarted, replaced or scaled with no control-plane coordination.
  • The Task Handler SDK is a deliberate seam. A new task type is a plugin implementing execute(context), registered by configuration — the promise made in the requirement that new task types do not change the orchestrator.

The red arrow

  • Workers fetch task definitions from the Workflow API, which is the execution layer calling the API layer. It is drawn rather than hidden.
  • It is contained: read-only, version-pinned to the execution's bound version, cached for the pod's lifetime, and served from a read replica. A Workflow API outage degrades new task types, not running tasks.
  • The clean fix is to inline the resolved task definition into the dispatch message, at the cost of message size. It is tracked as debt with a decision point at the 500-task workflow ceiling.

Assumptions

  • Azure SQL is present for reporting only. No runtime path reads it, so it can be down without affecting execution.
  • Redis is a cache and a coordination aid, never a system of record. View 31 states that concurrency leases fail open at a reduced limit when it is unavailable.
  • Seven task types are assumed at launch. The plugin model is what makes that number uninteresting.