Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Durable Task es la implementación de Microsoft de ejecución duradera, un enfoque a nivel industrial para hacer que el código ordinario sea tolerante a fallos, persistiendo automáticamente su progreso. Es un marco para construir flujos de trabajo y orquestaciones tolerantes a fallos como código ordinario. En lugar de gestionar lógica de reintento compleja, máquinas de estados o colas de mensajes, escribes tu lógica de negocio como funciones sencillas, y Durable Task se encarga de la persistencia de estado, la recuperación automática y la coordinación distribuida por ti.
Los flujos de trabajo de Durable Task se pueden ejecutar durante horas, días o incluso meses, reanudando de forma confiable desde el último paso completado después de cualquier bloqueo, reinicio o reimplementación. Entre los casos de uso comunes se incluyen transacciones distribuidas, orquestación de inteligencia artificial multiagente, canalizaciones de procesamiento de datos y administración de infraestructuras.
El resto de este artículo explica dónde encaja Durable Task, los lenguajes y modelos de alojamiento que soporta y cómo está estructurado, para que puedas decidir cómo construir aplicaciones tolerantes a fallos con él.
Qué incluye la tarea duradera
La tarea duradera incluye:
- Los SDK de Durable Task para aplicaciones autohospedadas.
- Las Durable Functions para alojamiento sin servidor en Azure Functions.
- El Programador de Tareas Duraderas, un servicio backend totalmente administrado diseñado para cargas de trabajo duraderas.
Casos de uso de Key Durable Task
Use Durable Task cuando la aplicación requiera una orquestación de flujo de trabajo confiable y de larga duración en los servicios distribuidos. Entre los escenarios habituales se incluyen los siguientes:
- Procesos de larga duración: Durable Task puede gestionar el estado y el progreso de procesos que se ejecutan durante períodos prolongados, a pesar de interrupciones o errores. Entre los ejemplos se incluyen el procesamiento de pedidos, las canalizaciones de datos, el entrenamiento del modelo de Machine Learning y las simulaciones de larga duración.
- Escenarios paralelos y de dispersión/ventilador: Durable Task puede coordinar trabajos que se dispersan entre varios trabajadores que se ejecutan en paralelo en diferentes máquinas y luego agregar los resultados. Algunos ejemplos son el procesamiento de imágenes, los trabajos de MapReduce y flujos de trabajo de ETL.
- Orquestación de microservicios y API: Durable Task puede coordinar el trabajo entre servicios distribuidos, API y máquinas con un flujo de control complejo y control de errores. Durable Task también soporta transacciones distribuidas que utilizan el patrón saga, donde cada paso tiene lógica compensatoria que se ejecuta automáticamente si falla un paso posterior.
- Automatización de procesos empresariales: Durable Task puede automatizar procesos empresariales complejos y deterministas que implican múltiples pasos, dependencias, gestión de personas en el bucle y errores durante largos periodos. Entre los ejemplos se incluyen la administración de la cadena de suministro, la revisión de documentos, la incorporación de clientes y la comprobación de identidades.
- Automatización de la infraestructura: Durable Task puede administrar el aprovisionamiento, la configuración y la implementación de infraestructuras con dependencias complejas y control de errores. Algunos ejemplos son la administración de recursos en la nube y las canalizaciones de CI/CD.
- Orquestación multiagente: Durable Task puede coordinar el trabajo de múltiples agentes de IA, asegurando la adhesión fiable a las tareas a largo plazo y un uso eficiente de tokens para procesos complejos de IA en varios pasos. Entre los ejemplos se incluyen agentes de inteligencia artificial para investigación profunda, codificación y soporte técnico al cliente.
Un tema común en estos escenarios es que implican trabajos demasiado complejos, demasiado largos o demasiado distribuidos para gestionarse de forma fiable con código ad hoc. Durable Task proporciona las garantías subyacentes—persistencia, tolerancia a fallos y coordinación con estado—para que puedas expresar ese trabajo como código sencillo.
Idiomas admitidos y modelos de hospedaje de Durable Task
Durable Task soporta múltiples lenguajes de programación en dos modelos de alojamiento: Azure Functions (a través de la extensión Durable Functions) y autoalojado (a través de los SDKs independientes de Durable Task). El modelo de alojamiento de Azure Functions proporciona un entorno de computación totalmente gestionado, sin servidor, con funciones integradas de escalado y orquestación, mientras que el modelo autoalojado soporta la ejecución de aplicaciones duraderas en cualquier plataforma de cómputo, como Azure Container Apps, Azure Kubernetes Service, Azure App Service, o virtual machines.
| Language | Azure Functions | Autohospedado |
|---|---|---|
| .NET (C#/F#) | Sí | Sí |
| JavaScript/TypeScript | Sí | Sí |
| Python | Sí | Sí |
| Java | Sí | Sí |
| PowerShell | Sí | No |
Nota:
Durable Task Go SDK también está disponible como una opción de código abierto apoyada por la comunidad para escenarios autoalojados, pero está en fase experimental y aún no se recomienda para uso en producción.
Para obtener instrucciones sobre cómo elegir entre Azure Functions y autohospedado, consulte Choose el modelo de hospedaje.
Arquitectura de tareas duraderas: SDK y backend de almacenamiento de estado
Durable Task tiene dos capas principales: un SDK que se usa en el código de la aplicación y un back-end de almacenamiento de estado que administra el estado.
SDK de tareas persistentes
Utilizas el SDK de Tareas Duraderas para crear orquestaciones, actividades y entidades en el código de tu aplicación. Gestiona internamente la mecánica de la ejecución duradera: reproducir funciones del orquestador, gestionar el contexto local de ejecución y comunicarse con el backend de almacenamiento de estados. Durable Task ofrece varias opciones de SDK entre los idiomas soportados y los dos modelos de alojamiento: Azure Functions y autoalojado.
Para obtener instrucciones sobre cómo elegir entre estas opciones, consulte Elegir el modelo de hospedaje.
Sistema de almacenamiento de estados
El backend de almacenamiento de estados mantiene el estado de orquestación, mantiene el historial de ejecución y coordina la escalabilidad distribuida entre instancias de cómputo.
La opción recomendada de almacenamiento de estado es el Durable Task Scheduler, un servicio de Azure totalmente gestionado, diseñado específicamente y altamente optimizado para cargas de trabajo de Durable Task. Funciona tanto con Durable Functions como con los SDK de Durable Task independientes y proporciona el conjunto más rico de características sin infraestructura de almacenamiento para administrar.
Como alternativa, Durable Functions admite varias opciones de almacenamiento bring-your-own (BYO). Estas opciones te dan más control sobre dónde almacenas el estado, pero requieren que aprovisiones y gestiones la infraestructura subyacente tú mismo. Los back-end de almacenamiento BYO solo están disponibles actualmente con Durable Functions.
Para más información sobre las opciones de almacenamiento, consulte Proveedores de almacenamiento.
Recursos adicionales de Durable Task
Publicaciones de investigación
Microsoft desarrolla Durable Task en colaboración con Microsoft Research. Como resultado, el equipo produce artículos de investigación y artefactos, incluyendo:
- Durable Functions: semántica para informática sin servidor con estado(OOPSLA'21)
- Flujos de trabajo sin servidor con Durable Functions y Netherite(preprint)
Resumen en vídeo
El siguiente vídeo destaca los beneficios de Durable Functions: