Extension Azure Functions pour workflows stateful avec orchestration code-first.
Azure Durable Functions est une extension d'Azure Functions permettant d'écrire des workflows stateful (long-running, durables, retryables) en code (C#, JavaScript, Python, F#, PowerShell, Java). Combine la puissance Functions serverless avec le pattern d'orchestration explicite — alternative "code-first" à Logic Apps visuel ou Step Functions JSON.
Concepts : (1) Orchestrator Function — code définissant le workflow comme une fonction "séquentielle" avec await sur des Activity Functions et timers ; le framework gère la persistance d'état entre awaits via event sourcing ; (2) Activity Function — work unit (équivalent step), exécute une opération (call API, write DB, send email), idempotent recommandé ; (3) Client Function — démarre orchestrations (HTTP trigger, queue trigger, timer) ; (4) Entity Function — actor model, stateful entity avec ID unique persistant pour scenarios long-running stateful (compteurs, agrégateurs, state machines).
Patterns supportés out-of-the-box : (1) Function chaining — séquence d'activities ; (2) Fan-out/fan-in — parallel activities puis aggregate (Task.WhenAll) ; (3) Async HTTP API — long-running API avec polling pattern automatique (CheckStatusResponse) ; (4) Monitor — workflow surveillant un endpoint indéfiniment ; (5) Human interaction — wait for external event (approval, file upload) avec timeout ; (6) Aggregator — entity collectant events over time.
Fonctionnalités avancées : (1) Sub-orchestrations ; (2) Versioning et migration d'orchestrations en cours ; (3) Continue-as-new pour orchestrations infinies sans memory leak ; (4) Custom serializers ; (5) Retry policies declarative ; (6) Distributed tracing via Application Insights ; (7) Storage backends — Azure Storage (default), Netherite (high-perf alternative), MSSQL (depuis 2022, idéal compliance, no public cloud storage).
Storage Azure Storage : tables + queues + blobs derrière, durabilité par event sourcing, chaque orchestration replay son code from scratch à chaque restart en utilisant l'history table pour fournir les résultats des activities déjà exécutées ("replay-based execution"). Implication : code orchestrator doit être deterministic (no random/datetime/IO direct, utiliser context.CurrentUtcDateTime, context.NewGuid, context.CallActivityAsync).
Use cases : (1) Saga patterns microservices ; (2) Order processing avec multiple steps + compensation rollback ; (3) ETL pipelines avec retry granulaire ; (4) Approval workflows ; (5) Long-running data processing batch ; (6) IoT device commissioning ; (7) Subscription billing recurrent ; (8) Distributed transactions ; (9) Stateful chatbots.
Durable Functions vs Logic Apps vs Step Functions : Durable Functions = code-first developers preferred (C#/JS/Python natural), version control, unit testable ; Logic Apps = visual low-code business analysts ; Step Functions = AWS-native JSON, plus de service integrations directes. Pricing : pay-per-execution Azure Functions + small Storage Tables/Queues operations. Compétences AZ-204, AZ-305.
200+ certifications, 400 000+ questions, examens blancs chronométrés.
Voir le catalogue →