Mas sobre Azure Functions: tipos de Planes y caracteristicas
Autor | Javier Caparo |
Version | 1.0 |
Fecha | 02/08/2022 |
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.
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.
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.
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)"}.
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!