Azure: Expresiones CRON en Functions

Hoy quiero compartir el concepto CRON, extraído de la guía de Microsoft para entender que son las expresiones CRON y como se utilizan en los triggers de las functions cuando diseñamos nuestras arquitecturas serverless en cloud.

El concepto CRON,  existe desde hace años en los sistemas Linux que podéis consultar en la Wikipedia: https://es.wikipedia.org/wiki/Cron_(Unix) y se utiliza para ejecutar procesos en segundo plano en periodos de tiempos regulares.

Formato expresiones CRON en Azure

Una expresión CRON es una cadena que consta de seis campos que representan un conjunto de horas y en Azure tiene esta forma:

 {second} {minute} {hour} {day} {month} {day of the week}

Por ejemplo, una expresión CRON para crear un trigger que se ejecuta cada cinco minutos sería: 0 */5 * * * *

A primera vista, esta cadena puede parecer confusa. Para comprender una expresión CRON, debe tener conocimientos básicos de algunos de los caracteres especiales.

Carácter especial Significado Ejemplo
* Selecciona todos los valores de un campo Un asterisco «*» en el campo de día de la semana significa cada día.
, Separa los elementos de una lista. Una coma «1,3» en el capo de día de la semana significa solo los lunes (día 1) y los miércoles (día 3).
Especifica un intervalo. Un guion «10-12» en el campo de hora significa un intervalo que incluya las horas, 10, 11 y 12.
/ Especifica un incremento. Una barra diagonal «*/10» en el campo de minutos significa un incremento de cada 10 minutos.

Ejemplos de expresiones CRON

Expresión CRON Descripción
0 0 12 * * ? Ejecutar a las 12:00 cada día
0 15 10 * * ? Ejecutar a las 10:15 todos los días
0 15 10 ? * LU-VI Ejecutar a las 10:15 cada día laborable
0 15 10 ? * 6L Ejecutar a las 10:15 el último viernes de cada mes

Si queréis saber más: https://azure.microsoft.com/es-es/services/functions

Azure: Empezando con Serverless y Functions

Si queremos entender Serverless en Azure, tenemos que ver diferentes alternativas que voy a resumir en este articulo de forma conceptual sin entrar en apartados técnicos.

Dentro de Azure existen 2 modalidades de Serverless en función del propósito a cubrir, las orientadas al diseño de workflows y orientadas a programación.

Orientadas al diseño de workflows: Para analistas de negocios que planifican, automatizan tareas y  procesos de negocio mediante diagramas de flujos, integrando y relacionando diferentes componentes y conectores.

  • Microsoft Flow en Office365 ofrece plantillas para los tipos comunes de flujo de trabajo. Esta diseñado para aquellos usuarios que conozcan bien el proceso de negocio, pero que no tienen conocimientos de programación.
  • Azure Logic Apps incluye un diseñador GUI en el que se puede dibujar el flujo de trabajo y permite editar el código fuente de un flujo de trabajo. Esta diseñada para usuarios con conocimientos de desarrollo.

En esta tabla de Microsoft podemos ver cual es la mejor opcion para cada caso.

Microsoft Flow Logic Apps
Usuarios previstos Trabajadores de oficina y analistas de negocios Desarrolladores y profesionales de TI
Escenarios previstos Creación de flujos de trabajo de autoservicio Proyectos de integración avanzados
Herramientas de diseño Solo GUI. Explorador y aplicación móvil Explorador y diseñador de Visual Studio. Es posible editar el código
Administración del ciclo de vida de las aplicaciones Flow incluye entornos de producción y pruebas El código fuente de Logic Apps se puede incluir en Azure DevOps y sistemas de administración de código fuente

Orientadas a la programación: Para desarrolladores escribiendo código fuente en diferentes lenguajes soportados como C#, Node y otros para tener más control y personalizar aquellos procesos de negocio de forma más optima.

En esta tabla de Microsoft podemos ver cual es la mejor opcion para cada caso.

Azure WebJobs Azure Functions
Lenguajes admitidos C# (con SDK de WebJobs) C#, F#, Node, Java, etc
Escalado automático No
Desarrollo y pruebas en un explorador No
Precios de pago por uso No
Integración con Logic Apps No
Administradores de paquetes NuGet (con SDK de WebJobs) NuGet y NPM
Puede formar parte de una aplicación de App Service No
Proporciona un control detallado de JobHost No

Como el mundo de Serverless es bastante grande, comparto una serie de enlaces que son útiles para entender y trabajar con este nuevo modelo de diseño de aplicaciones sin preocuparnos de servidores y la infraestructura subyacente.

Próximamente iré añadiendo nuevos recursos.