¿Qué es Durable Functions?
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.
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.
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.
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.
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.
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 |