Azure Durable Functions extend Azure Functions with stateful capabilities, enabling you to orchestrate complex workflows in serverless environments. By abstracting away state management, checkpointing, and restarts, Durable Functions transform the chaos of distributed computing into ordered, reliable workflows.
This repository contains hands-on labs demonstrating four essential Durable Functions application patterns, each addressing different challenges in distributed systems:
- Async HTTP API: Transform long-running operations into manageable async workflows
- Function Chaining: Create order from complex sequential processes
- Fan-Out/Fan-In: Orchestrate parallel tasks with coordinated results
- Monitor: Maintain a persistent state for long-running monitoring scenarios
Browse the working implementations: src/
Build each pattern yourself with step-by-step guidance:
- Initialize Your Solution - Set up your development environment.
- Async HTTP API Pattern - Handle long-running operations elegantly.
- Function Chaining Pattern - Orchestrate sequential workflows.
- Fan-Out/Fan-In Pattern - Process tasks in parallel.
- Monitor Pattern - Implement stateful monitoring logic.
- Azure Functions Core Tools v4.x
- .NET 8.0 or later
- Download Visual Studio Code - Mac, Linux, Windows or Visual Studio 2022
- Azure Storage Emulator or Azurite
- Basic familiarity with C# and Azure Functions
Challenge: HTTP timeouts limit long-running operations
Solution: Return status endpoints for polling operation progress
Challenge: Complex workflows with dependent steps become unmanageable
Solution: Orchestrate sequential activities with automatic state management
Challenge: Coordinating parallel processing with result aggregation
Solution: Dynamically spawn parallel tasks and await collective completion
Challenge: Implementing recurring checks with state persistence
Solution: Durable timers and state for long-running monitoring scenarios
Each lab builds upon core concepts while introducing new patterns. Start with the initialization guide to set up your environment, then progress through the patterns in order. Each lab includes:
- Pattern overview and use cases
- Step-by-step implementation
- Testing guidance
- Challenge extensions
Ready to transform chaos into order? Start with Lab 00 →