# azure-samples/cloud-design-patterns architecture

> Architecture diagram of the GitHub repository azure-samples/cloud-design-patterns, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/azure-samples/cloud-design-patterns
- Repository: https://github.com/azure-samples/cloud-design-patterns

## Overview

This repository is a collection of Azure cloud design-pattern samples, not one end-to-end application. The graph emphasizes the demonstrated request/reply, claim-check, leader-election, image-pipeline, priority-queue, and valet-key workflows. Several source files are represented by their tree names only, so uncertain internal wiring is omitted. README-listed choreography, sharding, and static-content samples are not present in the supplied tree.

Main entry points: [`valet-key/ValetKey.Client/Program.cs`](https://github.com/azure-samples/cloud-design-patterns/blob/main/valet-key/ValetKey.Client/Program.cs) (Valet-key client), [`claim-check/code-samples/sample-4/ClientProducer4/Program.cs`](https://github.com/azure-samples/cloud-design-patterns/blob/main/claim-check/code-samples/sample-4/ClientProducer4/Program.cs) (Sample producer), [`priority-queue/PriorityQueueSender/PriorityQueueSenderFn.cs`](https://github.com/azure-samples/cloud-design-patterns/blob/main/priority-queue/PriorityQueueSender/PriorityQueueSenderFn.cs) (Priority sender), [`async-request-reply/src/AsyncProcessingWorkAcceptor.cs`](https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/AsyncProcessingWorkAcceptor.cs) (Work acceptor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_async["Async request-reply"]
  node_acceptor["Work acceptor"]
  node_worker["Background worker"]
  node_status["Status checker"]
  node_asyncblob["Blob extensions"]
  node_customer["Customer data<br/>[CustomerPOCO.cs]"]
end

subgraph group_claim["Claim check"]
  node_producer["Sample producer<br/>[Program.cs]"]
  node_blobmover["Payload mover"]
  node_kafkaprod["Kafka producer"]
  node_consumer["Event consumer"]
  node_functionconsumers["Function consumers"]
end

subgraph group_leader["Leader election"]
  node_mutexworker["Leader worker<br/>[Program.cs]"]
  node_mutex["Distributed mutex"]
  node_leasemgr["Blob lease manager"]
end

subgraph group_pipeline["Image pipeline"]
  node_resize["Resize filter<br/>[Resize.cs]"]
  node_watermark["Watermark filter<br/>[Watermark.cs]"]
  node_publish["Publish final<br/>[PublishFinal.cs]"]
end

subgraph group_messaging["Queue and valet"]
  node_highsender["Priority sender"]
  node_priority["Priority data<br/>[Priority.cs]"]
  node_highconsumer["High-priority consumer"]
  node_lowconsumer["Low-priority consumer"]
  node_valetclient["Valet-key client<br/>[Program.cs]"]
  node_valetweb["Valet-key service<br/>[FileServices.cs]"]
end

node_client(("Requesting client"))
node_blobstore[("Azure Blob Storage")]
node_eventhub["Event Hubs"]
node_leaseblob[("Lease blob")]
node_imageinput(("Image input"))
node_servicebus["Azure Service Bus"]
node_uploadclient(("Upload client"))

node_client -->|"submits work"| node_acceptor
node_acceptor -->|"queues work"| node_worker
node_client -->|"checks status"| node_status
node_producer -->|"uploads payload"| node_blobmover
node_blobmover -->|"writes payload"| node_blobstore
node_producer -->|"sends claim"| node_kafkaprod
node_kafkaprod -->|"publishes message"| node_eventhub
node_eventhub -->|"delivers message"| node_consumer
node_eventhub -.->|"triggers consumers"| node_functionconsumers
node_mutexworker -->|"runs lease task"| node_mutex
node_mutex -->|"acquires lease"| node_leasemgr
node_leasemgr -->|"renews lease"| node_leaseblob
node_imageinput -->|"starts processing"| node_resize
node_resize -->|"passes image"| node_watermark
node_watermark -->|"passes image"| node_publish
node_highsender -->|"sets priority"| node_priority
node_highsender -->|"sends message"| node_servicebus
node_servicebus -->|"dispatches high"| node_highconsumer
node_servicebus -->|"dispatches low"| node_lowconsumer
node_uploadclient -->|"requests upload"| node_valetclient
node_valetclient -->|"requests SAS"| node_valetweb
node_valetclient -->|"uploads directly"| node_blobstore

click node_acceptor "https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/AsyncProcessingWorkAcceptor.cs"
click node_worker "https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/AsyncProcessingBackgroundWorker.cs"
click node_status "https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/AsyncOperationStatusChecker.cs"
click node_asyncblob "https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/CloudBlockBlobExtensions.cs"
click node_customer "https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/CustomerPOCO.cs"
click node_producer "https://github.com/azure-samples/cloud-design-patterns/blob/main/claim-check/code-samples/sample-4/ClientProducer4/Program.cs"
click node_blobmover "https://github.com/azure-samples/cloud-design-patterns/blob/main/claim-check/code-samples/sample-4/ClientProducer4/SampleBlobDataMover.cs"
click node_kafkaprod "https://github.com/azure-samples/cloud-design-patterns/blob/main/claim-check/code-samples/sample-4/ClientProducer4/SampleKafkaProducer.cs"
click node_consumer "https://github.com/azure-samples/cloud-design-patterns/blob/main/claim-check/code-samples/sample-2/ClientConsumer2/EventHubsConsumer.cs"
click node_functionconsumers "https://github.com/azure-samples/cloud-design-patterns/tree/main/claim-check/code-samples"
click node_mutexworker "https://github.com/azure-samples/cloud-design-patterns/blob/main/leader-election/LeaderElectionConsoleWorker/Program.cs"
click node_mutex "https://github.com/azure-samples/cloud-design-patterns/blob/main/leader-election/DistributedMutex/BlobDistributedMutex.cs"
click node_leasemgr "https://github.com/azure-samples/cloud-design-patterns/blob/main/leader-election/DistributedMutex/BlobLeaseManager.cs"
click node_resize "https://github.com/azure-samples/cloud-design-patterns/blob/main/pipes-and-filters/ImageProcessingPipeline/Resize.cs"
click node_watermark "https://github.com/azure-samples/cloud-design-patterns/blob/main/pipes-and-filters/ImageProcessingPipeline/Watermark.cs"
click node_publish "https://github.com/azure-samples/cloud-design-patterns/blob/main/pipes-and-filters/ImageProcessingPipeline/PublishFinal.cs"
click node_highsender "https://github.com/azure-samples/cloud-design-patterns/blob/main/priority-queue/PriorityQueueSender/PriorityQueueSenderFn.cs"
click node_priority "https://github.com/azure-samples/cloud-design-patterns/blob/main/priority-queue/PriorityQueueSender/Priority.cs"
click node_highconsumer "https://github.com/azure-samples/cloud-design-patterns/blob/main/priority-queue/PriorityQueueConsumerHigh/PriorityQueueConsumerHighFn.cs"
click node_lowconsumer "https://github.com/azure-samples/cloud-design-patterns/blob/main/priority-queue/PriorityQueueConsumerLow/PriorityQueueConsumerLowFn.cs"
click node_valetclient "https://github.com/azure-samples/cloud-design-patterns/blob/main/valet-key/ValetKey.Client/Program.cs"
click node_valetweb "https://github.com/azure-samples/cloud-design-patterns/blob/main/valet-key/ValetKey.Web/FileServices.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_acceptor,node_worker,node_status,node_asyncblob,node_customer,node_client,node_uploadclient toneBlue
class node_producer,node_blobmover,node_kafkaprod,node_consumer,node_functionconsumers,node_blobstore,node_leaseblob toneAmber
class node_mutexworker,node_mutex,node_leasemgr toneMint
class node_resize,node_watermark,node_publish toneRose
class node_highsender,node_priority,node_highconsumer,node_lowconsumer,node_valetclient,node_valetweb,node_eventhub,node_imageinput,node_servicebus toneIndigo
```

## Components

### Async request-reply

- [Work acceptor](https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/AsyncProcessingWorkAcceptor.cs): `async-request-reply/src/AsyncProcessingWorkAcceptor.cs`
- [Background worker](https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/AsyncProcessingBackgroundWorker.cs): `async-request-reply/src/AsyncProcessingBackgroundWorker.cs`
- [Status checker](https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/AsyncOperationStatusChecker.cs): `async-request-reply/src/AsyncOperationStatusChecker.cs`
- [Blob extensions](https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/CloudBlockBlobExtensions.cs): `async-request-reply/src/CloudBlockBlobExtensions.cs`
- [Customer data](https://github.com/azure-samples/cloud-design-patterns/blob/main/async-request-reply/src/CustomerPOCO.cs): `async-request-reply/src/CustomerPOCO.cs`

### Claim check

- [Sample producer](https://github.com/azure-samples/cloud-design-patterns/blob/main/claim-check/code-samples/sample-4/ClientProducer4/Program.cs): `claim-check/code-samples/sample-4/ClientProducer4/Program.cs`
- [Payload mover](https://github.com/azure-samples/cloud-design-patterns/blob/main/claim-check/code-samples/sample-4/ClientProducer4/SampleBlobDataMover.cs): `claim-check/code-samples/sample-4/ClientProducer4/SampleBlobDataMover.cs`
- [Kafka producer](https://github.com/azure-samples/cloud-design-patterns/blob/main/claim-check/code-samples/sample-4/ClientProducer4/SampleKafkaProducer.cs): `claim-check/code-samples/sample-4/ClientProducer4/SampleKafkaProducer.cs`
- [Event consumer](https://github.com/azure-samples/cloud-design-patterns/blob/main/claim-check/code-samples/sample-2/ClientConsumer2/EventHubsConsumer.cs): `claim-check/code-samples/sample-2/ClientConsumer2/EventHubsConsumer.cs`
- [Function consumers](https://github.com/azure-samples/cloud-design-patterns/tree/main/claim-check/code-samples): `claim-check/code-samples`

### Leader election

- [Leader worker](https://github.com/azure-samples/cloud-design-patterns/blob/main/leader-election/LeaderElectionConsoleWorker/Program.cs): `leader-election/LeaderElectionConsoleWorker/Program.cs`
- [Distributed mutex](https://github.com/azure-samples/cloud-design-patterns/blob/main/leader-election/DistributedMutex/BlobDistributedMutex.cs): `leader-election/DistributedMutex/BlobDistributedMutex.cs`
- [Blob lease manager](https://github.com/azure-samples/cloud-design-patterns/blob/main/leader-election/DistributedMutex/BlobLeaseManager.cs): `leader-election/DistributedMutex/BlobLeaseManager.cs`

### Image pipeline

- [Resize filter](https://github.com/azure-samples/cloud-design-patterns/blob/main/pipes-and-filters/ImageProcessingPipeline/Resize.cs): `pipes-and-filters/ImageProcessingPipeline/Resize.cs`
- [Watermark filter](https://github.com/azure-samples/cloud-design-patterns/blob/main/pipes-and-filters/ImageProcessingPipeline/Watermark.cs): `pipes-and-filters/ImageProcessingPipeline/Watermark.cs`
- [Publish final](https://github.com/azure-samples/cloud-design-patterns/blob/main/pipes-and-filters/ImageProcessingPipeline/PublishFinal.cs): `pipes-and-filters/ImageProcessingPipeline/PublishFinal.cs`

### Queue and valet

- [Priority sender](https://github.com/azure-samples/cloud-design-patterns/blob/main/priority-queue/PriorityQueueSender/PriorityQueueSenderFn.cs): `priority-queue/PriorityQueueSender/PriorityQueueSenderFn.cs`
- [Priority data](https://github.com/azure-samples/cloud-design-patterns/blob/main/priority-queue/PriorityQueueSender/Priority.cs): `priority-queue/PriorityQueueSender/Priority.cs`
- [High-priority consumer](https://github.com/azure-samples/cloud-design-patterns/blob/main/priority-queue/PriorityQueueConsumerHigh/PriorityQueueConsumerHighFn.cs): `priority-queue/PriorityQueueConsumerHigh/PriorityQueueConsumerHighFn.cs`
- [Low-priority consumer](https://github.com/azure-samples/cloud-design-patterns/blob/main/priority-queue/PriorityQueueConsumerLow/PriorityQueueConsumerLowFn.cs): `priority-queue/PriorityQueueConsumerLow/PriorityQueueConsumerLowFn.cs`
- [Valet-key client](https://github.com/azure-samples/cloud-design-patterns/blob/main/valet-key/ValetKey.Client/Program.cs): `valet-key/ValetKey.Client/Program.cs`
- [Valet-key service](https://github.com/azure-samples/cloud-design-patterns/blob/main/valet-key/ValetKey.Web/FileServices.cs): `valet-key/ValetKey.Web/FileServices.cs`

### Other components

- **Requesting client**
- **Azure Blob Storage**
- **Event Hubs**
- **Lease blob**
- **Image input**
- **Azure Service Bus**
- **Upload client**

## Connections

- Requesting client → Work acceptor: submits work
- Work acceptor → Background worker: queues work
- Requesting client → Status checker: checks status
- Sample producer → Payload mover: uploads payload
- Payload mover → Azure Blob Storage: writes payload
- Sample producer → Kafka producer: sends claim
- Kafka producer → Event Hubs: publishes message
- Event Hubs → Event consumer: delivers message
- Event Hubs → Function consumers: triggers consumers
- Leader worker → Distributed mutex: runs lease task
- Distributed mutex → Blob lease manager: acquires lease
- Blob lease manager → Lease blob: renews lease
- Image input → Resize filter: starts processing
- Resize filter → Watermark filter: passes image
- Watermark filter → Publish final: passes image
- Priority sender → Priority data: sets priority
- Priority sender → Azure Service Bus: sends message
- Azure Service Bus → High-priority consumer: dispatches high
- Azure Service Bus → Low-priority consumer: dispatches low
- Upload client → Valet-key client: requests upload
- Valet-key client → Valet-key service: requests SAS
- Valet-key client → Azure Blob Storage: uploads directly
