¿Qué es Durable Functions?

Completado

Durable Functions le permite implementar funciones complejas con estado en un entorno sin servidor.

En el escenario de ejemplo, la empresa actualmente sigue un proceso de aprobación manual para las propuestas de diseño de proyectos. El proceso tiene varios pasos y cada uno puede tener una duración diferente. La implementación de un proceso automatizado interno es compleja y costosa. Coordinar cada paso requiere esfuerzo. Además, debe ser capaz de incorporar una lógica personalizada en el flujo de trabajo.

En esta unidad, conocerá las ventajas de Durable Functions. Obtendrá información sobre los distintos tipos de función y los conceptos clave asociados con Durable Functions.

Durable Functions

Durable Functions es una extensión de Azure Functions. Mientras que Azure Functions opera en un entorno sin estado, Durable Functions puede conservar el estado entre las llamadas de función. Este enfoque le permite simplificar las ejecuciones complejas con estado en un entorno sin servidor.

Durable Functions se escala según sea necesario y proporciona una forma rentable de implementar flujos de trabajo complejos en la nube. Estas son algunas de las ventajas de usar Durable Functions:

  • Permite escribir código controlado por eventos. Una función durable puede esperar de manera asincrónica uno o varios eventos externos y, luego, realizar una serie de tareas en respuesta a estos eventos.

  • Las funciones se pueden encadenar. Puede implementar patrones comunes como distribución ramificada de salida/entrada, que usa una función para invocar a otras en paralelo y, luego, acumular los resultados.

  • Puede organizar y coordinar funciones, y especificar el orden en que se deben ejecutar.

  • El estado se administra de manera automática. No es necesario que escriba su propio código para guardar información de estado para una función de larga duración.

Durable Functions le permite definir flujos de trabajo con estado mediante una función de orquestación. Una función de orquestación ofrece ventajas adicionales:

  • Puede definir los flujos de trabajo en el código. No es necesario que escriba una descripción JSON ni usar una herramienta de diseño flujo de trabajo.

  • Las funciones se pueden llamar de manera sincrónica y asincrónica. La salida de las funciones llamadas se guarda de manera local en variables y se usa en llamadas de función subsiguientes.

  • Azure controla el progreso de una función de manera automática cuando la función espera. Azure puede optar por deshidratar la función y guardar su estado mientras la función espera, para conservar así los recursos y disminuir los costos. Cuando la función empieza a ejecutarse nuevamente, Azure vuelve a hidratarla y restaura su estado.

Tipos de función

Puede usar tres tipos de instancias de Durable Functions: cliente, orquestador y actividad.

Las funciones de cliente son el punto de entrada para crear una instancia de una orquestación de Durable Functions. Se pueden ejecutar en respuesta a un evento de muchos orígenes, como una solicitud HTTP nueva que llega, un mensaje que se publica en una cola de mensajes, un evento que llega en una secuencia de eventos. Puede escribirlas en cualquiera de los lenguajes compatibles.

Las funciones de orquestador describen cómo se ejecutan las acciones y el orden en que se ejecutan. Puede escribir la lógica de orquestación en el código (C# o JavaScript).

Las funciones de actividad son las unidades de trabajo básicas de una orquestación de Durable Functions. Una función de actividad contiene el trabajo real realizado por las tareas que se están organizando.

Patrones de aplicación

Puede usar Durable Functions para implementar muchos patrones de flujos de trabajo comunes. Algunos de estos patrones son:

  • Encadenamiento de funciones: en este patrón, el flujo de trabajo ejecuta una secuencia de funciones en un orden especificado. La salida de una función se aplica a la entrada de la siguiente función en la secuencia. La salida de la función final se usa para generar un resultado.

    Diagram illustrating a function chaining pattern.

  • Distribución ramificada de entrada y salida: este patrón ejecuta varias funciones en paralelo y espera a que se completen todas. Puede agregar los resultados de las ejecuciones en paralelo o usarlos para calcular un resultado final.

    Diagram illustrating a fan out/fan in pattern.

  • API HTTP asincrónicas: este patrón aborda el problema de coordinar el estado de las operaciones de larga ejecución con clientes externos. Una llamada HTTP puede desencadenar la acción de ejecución prolongada y, a continuación, redirigir el cliente a un punto de conexión de estado. El cliente puede saber cuándo finaliza la operación si sondea este punto de conexión.

    Diagram illustrating an async HTTP API pattern.

  • Supervisión: este patrón implementa un proceso recurrente en un flujo de trabajo, posiblemente en busca de un cambio en el estado. Por ejemplo, podría usar este patrón para sondear hasta que se cumplan condiciones específicas.

    Diagram illustrating a monitor pattern.

  • Interacción humana: este patrón combina procesos automatizados que también implican cierta interacción humana. Un proceso manual dentro de un proceso automatizado es complicado, porque las personas no tienen la misma disponibilidad ni la misma capacidad de respuesta que la mayoría de los equipos. La interacción humana se puede incorporar mediante el uso de tiempos de espera y lógica de compensación que se ejecuta si el humano no puede interactuar correctamente dentro de un tiempo de respuesta especificado. Un proceso de aprobación es un ejemplo de un proceso que implica la interacción humana.

    Diagram illustrating a human interaction pattern.

Comparación con Logic Apps

Tanto Durable Functions como Logic Apps son servicios de Azure que posibilitan las cargas de trabajo sin servidor. Azure Durable Functions está pensado como una opción de proceso sin servidor eficaz para ejecutar una lógica personalizada. Azure Logic Apps es más adecuado para integrar componentes y servicios de Azure. Puede usar cualquiera de estas tecnologías para crear orquestaciones complejas. Con Azure Durable Functions, puede desarrollar orquestaciones si escribe código y usa la extensión Durable Functions. Con Logic Apps, puede crear orquestaciones si usa la superficie de diseño o editar los archivos de configuración.

En la tabla siguiente se enumeran algunas de las diferencias clave entre Azure Durable Functions y Azure Logic Apps:.

Tarea Azure Durable Functions Azure Logic Apps
Desarrollo Orientado al código (imperativo) Orientado al diseño (declarativo)
Conectividad Alrededor de una docena de tipos de enlaces integrados. Puede escribir código para enlaces personalizados. Gran colección de conectores. Enterprise Integration Pack para B2B. También puede crear conectores personalizados.
Acciones Cada actividad es una función de Azure. Puede escribir el código para las funciones de actividad. Gran colección de acciones listas para usar. Puede integrar una lógica personalizada a través de conectores personalizados.
Supervisión Azure Application Insights Azure Portal, registros de Azure Monitor
Administración API REST, PowerShell, Visual Studio Azure Portal, API REST, PowerShell, Visual Studio, extensión de Visual Studio Code

Comprobación de conocimientos

1.

¿Qué es Durable Functions?

2.

¿Cuál de las siguientes afirmaciones describe mejor el rol de la función de Orchestrator en un flujo de trabajo?

3.

¿Cuál de las siguientes afirmaciones explica mejor por qué el patrón de aplicación de interacción humana se beneficia de Durable Functions?