¿Verdad que nadie ha escuchado el término Serverless? Y por supuesto Azure Functions es un auténtico desconocido ¿verdad? 😉 Sarcasmo aparte, el año pasado fue el año del Serverless y en concreto de Azure Functions, pero ésta tiene algunas limitaciones, la más importante el timeout máximo de 10 minutos y cómo concatenar diferentes ejecuciones de functions.
Para solucionar estos problemas Microsoft ha sacado la versión preliminar de Durable Azure Functions, que como su nombre indica, sirve para crear funciones que duren en el tiempo. En este artículo veremos una breve introducción de qué son y para qué sirven.
Las Durable Azure Functions, a partir de ahora DAF, nos permitirán crear workflows de trabajo en functions mediante código, sin cajitas ni configuraciones. Ésto nos permitirá orquestar diferentes llamadas a functions que bien tengan relación entre sí, o bien relación con el flujo de negocio.
Las DAF se basan en el patrón event sourcing, que consiste que va guardando los diferentes estados en los que se encuentra. Así, en el momento en que se suspende el flujo, al reanudarlo puede continuar donde estaba, a la vez que nos permite ir consultando este estado mediante llamadas a su API.
Los tres conceptos básicos a la hora de desarrollar una DAF son:
En la siguiente URL podéis ver algunos patrones de cómo utilizarlas:
https://docs.microsoft.com/en-US/azure/azure-functions/durable-functions-overview
Podemos ver el siguiente ejemplo, como muestra muy básica de que lo que hace es llamar tres veces a una función y escribimos el resultado.
Primero tenemos la function que nos permitirá ejecutar la functions que orquestará las llamadas:
Como podemos ver esta function para ejecutarse espera que pongamos un elemento en una cola con el nombre de la function a ejecutar.
Por otro lado, tenemos la function que es invocada por la anterior que, a su vez, es la que realizará la orquestación:
Como podemos ver, se llaman tres functions (llamadas RodolfoExecute) mediante el método CallActivityAsync. En este caso, cada vez que se llama a la function, la function RodolfoSay entra en stand by hasta que llega el resultado y continua.
Por último, la function RodolfoExectue:
En las siguientes imágenes se puede ver cómo añadimos un mensaje en la cola y el resultado:
Todo el stack trace de los eventos se guarda en una table, en la cual podemos ver los estados por los que han pasado las functions:
Esto es sólo una visión muy preliminar, pero si os interesa el tema podéis mirar más documentación:
https://docs.microsoft.com/en-US/azure/azure-functions/durable-functions-overview
El código lo podéis ver en: https://github.com/bermejoblasco/DurableFunctions/tree/master
Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)