Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Durable Task est la mise en œuvre de l'exécution durable par Microsoft, une approche à l'échelle de l'industrie visant à rendre le code ordinaire tolérant aux pannes en perpétuant automatiquement sa progression. C’est un cadre pour construire des flux de travail et des orchestrations tolérants aux pannes comme du code ordinaire. Au lieu de gérer une logique de retentabilité complexe, des machines à états ou des files de messages, vous écrivez votre logique métier comme des fonctions simples, et Durable Task gère la persistance de l’état, la récupération automatique et la coordination distribuée pour vous.
Les flux de travail des tâches durables peuvent s’exécuter pendant des heures, des jours ou même des mois, et reprendre de manière fiable à partir de la dernière étape terminée après un incident, un redémarrage ou un redéploiement. Les cas d’usage courants incluent les opérations distribuées, l’orchestration IA multi-agents, le traitement des données et la gestion de l’infrastructure.
Le reste de cet article explique où s’intègre Durable Task, les langages et modèles d’hébergement qu’il supporte, et comment il est structuré, afin que vous puissiez décider comment construire des applications tolérantes aux pannes avec lui.
Ce que comprend une tâche durable
Les tâches durables comprennent :
- Kits de développement logiciel (SDK) Durable Task pour les applications auto-hébergées.
- Les Durable Functions pour l’hébergement sans serveur sur Azure Functions.
- Le planificateur de tâches durables, un service back-end entièrement managé conçu pour les charges de travail durables.
Cas d’utilisation de Key Durable Task
Utilisez Durable Task lorsque votre application nécessite une orchestration de flux de travail fiable et longue durée sur les services distribués. Les scénarios courants sont les suivants :
- Processus de longue durée : Durable Task peut gérer l’état et la progression pour des processus qui s’exécutent sur de longues périodes, malgré les interruptions ou erreurs. Les exemples incluent le traitement des commandes, les pipelines de données, l’entraînement du modèle Machine Learning et les simulations longues.
- Scénarios parallèles et de dispersion/ouverture : Durable Task peut coordonner un travail qui s’étale sur plusieurs travailleurs fonctionnant en parallèle sur différentes machines, puis agréger les résultats. Les exemples incluent le traitement d’images, les travaux de réduction de carte et les flux de travail ETL.
- Orchestration de microservices et d’API : Une tâche durable peut coordonner le travail entre les services distribués, les API et les machines avec un flux de contrôle et une gestion des erreurs complexes. Durable Task prend également en charge les transactions distribuées utilisant le motif saga, où chaque étape dispose d’une logique compensatoire qui s’exécute automatiquement si une étape ultérieure échoue.
- Automatisation des processus métier : Durable Task peut automatiser des processus métier complexes et déterministes impliquant plusieurs étapes, dépendances, l’ingestion humaine et la gestion des erreurs sur de longues périodes. Par exemple, la gestion de la chaîne logistique, la révision des documents, l’intégration des clients et la vérification des identités.
- Automatisation de l’infrastructure : Durable Task peut gérer l’approvisionnement, la configuration et le déploiement d’infrastructure avec des dépendances complexes et une gestion des erreurs. Les exemples incluent la gestion des ressources cloud et les pipelines CI/CD.
- Orchestration multi-agents : Durable Task peut coordonner le travail de plusieurs agents IA, garantissant une adhésion fiable aux tâches sur de longues périodes et une utilisation efficace des jetons pour des processus d’IA complexes en plusieurs étapes. Par exemple, les agents d’IA pour la recherche approfondie, le codage et le support client.
Un thème récurrent dans ces scénarios est qu’ils impliquent un travail trop complexe, trop long ou trop distribué pour être géré de manière fiable avec du code ad hoc. Durable Task fournit les garanties sous-jacentes — persistance, tolérance aux pannes et coordination avec états — afin que vous puissiez exprimer ce travail comme un code simple.
Langages pris en charge et modèles d’hébergement de tâches durables
Durable Task prend en charge plusieurs langages de programmation répartis sur deux modèles d’hébergement : Azure Functions (via l’extension Durable Functions) et auto-hébergé (via les SDK autonomes Durable Task). Le modèle d’hébergement Azure Functions offre un environnement de calcul entièrement géré et sans serveur avec des fonctionnalités intégrées de mise à l’échelle et d’orchestration, tandis que le modèle auto-hébergé prend en charge l’exécution d’applications durables sur n’importe quelle plateforme de calcul, telles que Azure Container Apps, Azure Kubernetes Service, Azure App Service, ou machines virtuelles.
| Language | Azure Functions | Self-hosted |
|---|---|---|
| .NET (C#/F#) | Oui | Oui |
| JavaScript/TypeScript | Oui | Oui |
| Python | Oui | Oui |
| Java | Oui | Oui |
| PowerShell | Oui | Non |
Note
Durable Task Go SDK est également disponible en tant qu’option open source soutenue par la communauté pour les scénarios auto-hébergés, mais il en est à des stades expérimentaux et n’est pas encore recommandé pour une utilisation en production.
Pour obtenir des conseils sur le choix entre Azure Functions et auto-hébergé, consultez Choose votre modèle d’hébergement.
Architecture Durable Task : SDK et backend de stockage d’état
Durable Task a deux couches principales : un SDK que vous utilisez dans votre code d’application et un back-end de stockage d’état qui gère l’état.
Kit de développement logiciel de Durable Task
Vous utilisez le SDK Durable Task pour créer des orchestrations, activités et entités dans votre code d’application. Il gère en interne les mécanismes d’exécution durable — relecture des fonctions d’orchestrateur, gestion du contexte d’exécution local et communication avec le backend de stockage d’état. Durable Task propose plusieurs options de SDK à travers les langages pris en charge et les deux modèles d’hébergement : Azure Functions et auto-hébergé.
Pour obtenir des conseils sur le choix entre ces options, consultez Choisir votre modèle d’hébergement.
Back-end de stockage d’état
Le backend de stockage d’état persiste l’état d’orchestration, maintient l’historique d’exécution et coordonne la mise à l’échelle distribuée entre les instances de calcul.
L'option recommandée de stockage d'état est le Durable Task Scheduler — un service Azure entièrement géré, conçu spécialement et hautement optimisé pour les charges de travail Durable Task. Il fonctionne à la fois avec Durable Functions et les kits SDK Durable Task autonomes, et fournit l’ensemble plus riche de fonctionnalités sans infrastructure de stockage à gérer.
Durable Functions prend également en charge plusieurs options de stockage bring-your-own (BYO). Ces options vous donnent plus de contrôle sur l’emplacement de votre stockage, mais vous obligent à provisionner et gérer vous-même l’infrastructure sous-jacente. Les back-ends de stockage BYO sont actuellement disponibles uniquement avec Durable Functions.
Pour plus d’informations sur les options de stockage, consultez Fournisseurs de stockage.
Ressources supplémentaires de tâches durables
Publications de recherche
Microsoft développe Durable Task en collaboration avec Microsoft Research. En conséquence, l’équipe produit des articles de recherche et des artefacts, notamment :
- Durable Functions : sémantique pour les systèmes sans serveur avec état(OOPSLA'21)
- Flux de travail sans serveur avec Durable Functions et Netherite(préprint)
Présentation vidéo
La vidéo suivante met en avant les avantages de Durable Functions :