Distributed Workflow Orchestration Platform  ·  View 05 of 31  ·  Structure

Container & Component Architecture

Every deployable unit, its replica count, and the managed service it depends on.

Editable source SVG draw.io All views
AKS cluster — wfo-prod · Sweden Central · 3 zones
AKS cluster — wfo-prod · Sweden Central · 3 zones
namespace: control
namespace: control
execution-api
.NET 9 · 4 pods
execution-api...
workflow-api
.NET 9 · 3 pods
workflow-api...
operator-api
.NET 9 · 2 pods
operator-api...
orchestration-svc
6-24 pods
orchestration-svc...
scheduler-svc
3 pods · 1 leader
scheduler-svc...
trigger-svc
3 pods
trigger-svc...
retry-svc
3 pods
retry-svc...
outbox-relay
StatefulSet · 4 leases
outbox-relay...
namespace: workers
namespace: workers
worker-http
2-60 pods
worker-http...
worker-customer360
2-30 pods
worker-customer360...
worker-rag
0-20 pods
worker-rag...
worker-notify
2-15 pods
worker-notify...
namespace: platform
namespace: platform
KEDA operator
queue-depth scalers
KEDA operator...
OTel collector
DaemonSet
OTel collector...
Key Vault CSI driver
Key Vault CSI driver
Ingress controller
internal only
Ingress controller...
Azure managed services
Azure managed services
Messaging
Messaging
Service Bus Premium
4 messaging units
Service Bus Premium...
Event Grid
trigger topics
Event Grid...
State
State
Cosmos DB
autoscale 40K RU/s
Cosmos DB...
Managed Redis
concurrency leases
Managed Redis...
Blob Storage
payloads · artifacts
Blob Storage...
Azure SQL
reporting
Azure SQL...
Platform
Platform
API Management
Premium v2
API Management...
Key Vault
Key Vault
Azure Monitor
App Insights
Azure Monitor...
Container Registry
Container Registry
Microsoft Entra ID
Microsoft Entra ID
Downstream systems
HTTP · SaaS · LLM
Downstream systems...
mTLS
mTLS
batch write
batch write
publish
publish
peek-lock
peek-lock
queue depth
queue depth
task call
task call
claim-check
claim-check
Container & Component Architecture
Container & Component Architecture
Application we own
Application we own
Security / platform
Security / platform
Interface / broker
Interface / broker
Queue / topic
Queue / topic
Data store
Data store
External / third party
External / third party
synchronous
synchronous
event / async
event / async
Every pod authenticates with a workload identity federated to Entra ID. No connection string is stored in the cluster; view 28 shows the token path.
Every pod authenticates with a workload identity federated to Entra ID. No connection string is stored in the cluster; view 28 shows the token path.
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

Decisions

  • Three namespaces with different blast radii: control, workers and platform. Network policy denies east-west traffic between workers, so a compromised handler cannot reach another tenant's worker or the control plane directly.
  • One worker deployment per task type rather than one generic worker. It costs four deployments instead of one and buys independent scaling bounds, independent resource limits, independent rollout, and a circuit breaker that isolates by type (view 21).
  • The Outbox Relay is a StatefulSet with four change-feed leases rather than a Deployment. Change feed processing is partitioned and stateful; pretending otherwise produces duplicate dispatch under rescale.

Sizing rationale

  • Orchestration at 6 to 24 pods is driven by completion-message throughput, not by execution count: at 900 tasks per second each pod handles roughly 40 completions per second including the Cosmos write.
  • Service Bus Premium at 4 messaging units is chosen for predictable throughput, VNet integration and the 100 MB message ceiling the claim-check pattern makes unnecessary but useful as headroom.
  • Cosmos autoscale at 40,000 RU/s covers peak with roughly 30% headroom. The RU driver is the transactional batch per state change, not reads.

Deliberate omissions

  • Node pools, subnets and zone placement are on view 22; this view is about what is deployed, not where.
  • Sidecars other than the OTel collector are omitted. Service mesh was evaluated and rejected for V1 as cost without a current requirement.
  • The operations console is a separate front-end deployment outside this cluster and is not shown.