Mas sobre Azure Functions: tipos de Planes y caracteristicas

1. CONTROL DE VERSIONES DEL DOCUMENTO

Autor Javier Caparo
Version 1.0
Fecha 02/08/2022

2. Azure Functions - Que Plan Usar? Tipos , Caracteristicas

Introduccion

Cuando apareció el plan Consumption para Azure Functions muchos clientes comenzaron a utilizarlo de forma predeterminada. El motivo principal es que este plan, a diferencia del modo App Service, solo te cobra por el tiempo de ejecución y la memoria utilizada. Sin embargo, es importante valorar si este modelo es el adecuado para tus funciones, ya que tiene algunas diferencias importantes respecto al resto de planes. En este artículo quiero contarte dos puntos que deberías de tener en cuenta para tener una buena experiencia con Azure Functions y el modo por consumo.

Controla cuánto tarda tu función en ejecutarse

Muchas veces se utiliza este servicio para llevar a cabo tareas que pueden durar un periodo largo de tiempo. Dependiendo del tipo de plan que hayas elegido el timeout por defecto varía y es importante que conozcas este dato:

Plan default maximum
Consumption plan 5 10
Premium plan 30 Ilimitado
Dedicated plan 30 Ilimitado

Como ves, el plan Consumption tiene por defecto 5 minutos y como máximo hasta 10. Ocurre a veces, en procesos muy largos, que este tiempo no es suficiente y es necesario cambiar de tipo de plan. Para saber cuánto duran tus funciones puedes verlo en el apartado Monitor de cada una de ellas:

Si quisieras modificar el valor por defecto, puedes hacerlo a través del archivo host.json{rel="noreferrer noopener" aria-label=" (opens in a new tab)" target="_blank"}, a través de la propiedad functionTimeout. Sin embargo, es preferible que las funciones se ejecuten en el menor tiempo posible. Si estás muy cerca de los 10 minutos, quizás el modo Consumption no sea el idóneo para tu función.

¿Puedes usar EventGrid Trigger en lugar de Blob Trigger?

Parece lógico que cuando empiezas con Azure Functions utilices el trigger de tipo blob si lo que quieres es detectar nuevos archivos a procesar. Aquí, debes tener en cuenta que cuando haces uso del mismo este carga en la memoria de tu Azure Function el contenido del archivo.

En el modo Consumption esto puede causar comportamientos inesperados (como una excepción del tipo OutOfMemory), ya que este plan utiliza máquinas virtuales con 1.5GB de RAM y un único core, por lo que si el archivo que tiene que manipular tu Azure Function es muy grande puede hacer que tu función se quede sin memoria y el proceso falle.

En este enlace{target="_blank" rel="noreferrer noopener" aria-label="este enlace (opens in a new tab)"} puedes ver los limites de cada uno de los planes.

Dependiendo del tipo de tarea que quieras llevar a cabo en tu función será necesario cambiar el plan o bien hacer uso del trigger para Event Grid, ya que este solamente se trae la información relativa al blob pero no carga en memoria el arhivo en sí, por lo que podrías seguir disfrutando del plan Consumption, el cual es mucho más económico.

Premium Plan

Por último, cabe mencionar que hace no mucho se lanzó un nuevo plan llamado Premium, el cual es un mix entre el modo Consumption y el App Service. Además de traer consigo características adicionales{rel="noreferrer noopener" aria-label="características adicionales (opens in a new tab)" target="_blank"}, en lugar de facturar por ejecución y memoria consumida, el plan Premium se basa en la cantidad de segundos por core y la memoria utilizada en las instancias utilizadas, además de las precalentadas. [Al menos una instancia debe estar levantada en todo momento]{style="text-decoration: underline;"} en este plan. Esto significa que hay un coste mínimo mensual, independientemente del número de ejecuciones, pero las capacidades de las máquinas y el tiempo de ejecución es mayor.\ Esta también puede ser una buena opción intermedia entre Consumption y App Service. Más información aquí{target="_blank" rel="noreferrer noopener" aria-label="aquí (opens in a new tab)"}.

Scale

Plan Escalabilidad Max # Instancias
Consumo Controlado por eventos. Escale horizontalmente de forma automática, incluso durante períodos de gran carga. La infraestructura de Azure Functions escala los recursos de CPU y memoria mediante la incorporación de instancias adicionales del host de Functions, según el número de eventos de desencadenador entrantes. Windows: 200, Linux: 1001
Premium Controlado por eventos. Escale horizontalmente de forma automática, incluso durante períodos de gran carga. La infraestructura de Azure Functions escala automáticamente los recursos de CPU y la memoria mediante la incorporación de instancias del host de Functions, según el número de eventos desencadenados por las funciones. Windows: 100, Linux: 20-402
Dedicado Automatica o manual 10-20

¡Saludos!