Estimación de los costos según el plan de consumo

Actualmente hay tres tipos de planes de hospedaje para una aplicación que se ejecuta en Azure Functions, donde cada plan tiene su propio modelo de precios:

Plan Descripción
Consumo Solo se le cobrará por el tiempo que se ejecute la aplicación de funciones. Este plan incluye una concesión gratuita por suscripción.
Premium Proporciona las mismas características y mecanismo de escalado que el plan de consumo, pero con un rendimiento mejorado y acceso a redes virtuales. El costo se basa en el plan de tarifa elegido. Para más información, consulte Plan Premium de Azure Functions.
Dedicado (App Service)
(nivel básico o superior)
Cuando necesite ejecutar en máquinas virtuales dedicadas o en aislamiento, utilice imágenes personalizadas o quiera usar el exceso de capacidad del plan de App Service. Usa la facturación del plan de App Service regular. El costo se basa en el plan de tarifa elegido.

Elija el plan que mejor se adapte a sus requisitos de rendimiento y costo de sus funciones. Para más información, consulte Escalado y hospedaje de Azure Functions.

En este artículo solo se trata el plan de consumo, ya que este plan da como resultado costos variables. Este artículo reemplaza al artículo Preguntas más frecuentes sobre la facturación de costos del plan de consumo.

Durable Functions también puede ejecutarse en un plan de consumo. Para más información sobre las consideraciones de costo al usar Durable Functions, consulte Facturación de Durable Functions.

Costos según el plan de consumo

El costo de ejecución de una única ejecución de función se mide en GB por segundo. El costo de ejecución se calcula mediante la combinación del uso de memoria con el tiempo de ejecución. Una función que se ejecuta durante más tiempo cuesta más, al igual que una función que consume más memoria.

Considere un caso en el que la cantidad de memoria que usa la función permanece constante. En este caso, el cálculo del costo es una multiplicación simple. Por ejemplo, suponga que la función ha consumido 0,5 GB durante tres segundos. Después, el costo de ejecución es 0.5GB * 3s = 1.5 GB-seconds.

Dado que el uso de la memoria cambia con el tiempo, el cálculo es esencialmente la parte integral del uso de la memoria a lo largo del tiempo. El sistema realiza este cálculo mediante el muestreo del uso de memoria del proceso (junto con procesos secundarios) a intervalos regulares. Como se mencionó en la página de precios, el uso de memoria se redondea al cubo de 128 MB más próximo. Cuando el proceso use 160 MB, se le cobrará por 256 MB. El cálculo tiene en cuenta la simultaneidad, que son varias ejecuciones de funciones simultáneas en el mismo proceso.

Nota

Aunque el uso de CPU no se considera directamente en el costo de la ejecución, puede tener un impacto en el costo cuando afecta al tiempo de ejecución de la función.

En el caso de una función desencadenada por HTTP, cuando se produce un error antes de que el código de la función empiece a ejecutarse, no se cobra por una ejecución. Esto significa que las respuestas 401 de la plataforma debidas a la validación de la clave de API o a la característica de autenticación o autorización de App Service no cuentan en el costo de ejecución. Del mismo modo, las respuestas de código de estado 5xx no cuentan cuando se producen en la plataforma antes de que una función procese la solicitud. Una respuesta 5xx generada por la plataforma después de que el código de función se haya empezado a ejecutar se cuenta como una ejecución, aunque el código de la función no genere el error.

Al calcular el costo general de la ejecución de las funciones en cualquier plan, recuerde que el entorno en tiempo de ejecución de Functions usa otros servicios de Azure, que se facturan por separado. Al calcular los precios de las aplicaciones de funciones, los desencadenadores y enlaces que tenga que se integren con otros servicios de Azure requieren que cree y pague por estos servicios adicionales.

En el caso de las funciones que se ejecutan en un plan de consumo, el costo total es el costo de ejecución de las funciones, más el costo del ancho de banda y servicios adicionales.

Al calcular los costos generales de la aplicación de funciones y los servicios relacionados, use la calculadora de precios de Azure.

Costo relacionado Descripción
Cuenta de almacenamiento Cada aplicación de funciones requiere que tenga una cuenta de almacenamiento de Azure de uso general asociada, que se factura por separado. El tiempo de ejecución de Functions usa esta cuenta internamente, pero también se puede usar para los desencadenadores y enlaces de almacenamiento. Si no tiene una cuenta de almacenamiento, se crea una automáticamente cuando se crea la aplicación de funciones. Para más información, consulte Requisitos de la cuenta de almacenamiento.
Application Insights Functions se basa en Application Insights para proporcionar una experiencia de supervisión de alto rendimiento para las aplicaciones de funciones. Aunque no es necesario, debe habilitar la integración de Application Insights. Cada mes se incluye una concesión gratuita de datos de telemetría. Para más información, consulte la página de precios de Azure Monitor.
Ancho de banda de la red Puede incurrir en costos de transferencia de datos en función de la dirección y del escenario del movimiento de datos. Para más información, consulte Detalles de precios de ancho de banda.

Comportamientos que afectan al tiempo de ejecución

Los siguientes comportamientos de las funciones pueden afectar al tiempo de ejecución:

  • Desencadenadores y enlaces: El tiempo necesario para leer la entrada y escribir la salida en los enlaces de funciones se cuenta como tiempo de ejecución. Por ejemplo, cuando la función usa un enlace de salida para escribir un mensaje en una cola de almacenamiento de Azure, el tiempo de ejecución incluye el tiempo necesario para escribir el mensaje en la cola, que se incluye en el cálculo del costo de la función.

  • Ejecución asincrónica:el tiempo que la función espera los resultados de una solicitud asincrónica (await en C#) se cuenta como tiempo de ejecución. El cálculo de GB por segundo se basa en la hora de inicio y finalización de la función y el uso de memoria durante ese período. Lo que sucede durante ese tiempo en términos de actividad de la CPU no se factoriza en el cálculo. Es posible que pueda reducir los costos durante las operaciones asincrónicas mediante el uso de Durable Functions. No se le facturará por el tiempo de espera en las funciones del orquestador.

En la factura, puede ver los datos relacionados con los costos del total de ejecuciones: Funciones y el tiempo de ejecución: Funciones, junto con los costos facturados reales. Sin embargo, estos datos de factura son un agregado mensual para un período de facturación anterior.

Métricas del nivel de la aplicación de funciones

Para comprender mejor el impacto en el costo de las funciones, puede usar Azure Monitor para ver las métricas relacionadas con los costos que se están generando actualmente en las aplicaciones de funciones.

Use el explorador de métricas de Azure Monitor para ver los datos relacionados con los costos de las aplicaciones de funciones del plan de consumo en un formato gráfico.

  1. Vaya a la aplicación de funciones en Azure Portal.

  2. En el panel izquierdo, desplácese hacia abajo hasta Supervisión y elija Métricas.

  3. En Métrica, elija Recuento de la ejecución de la función y Suma en Agregación. Esto agrega al gráfico la suma de los recuentos de ejecución durante el período elegido.

    Define a functions app metric to add to the chart

  4. Seleccione Agregar métrica y repita los pasos 2 a 4 para agregar Unidades de ejecución de la función al gráfico.

El gráfico resultante contiene los totales de ambas métricas de ejecución en el intervalo de tiempo elegido, que en este caso es de dos horas.

Graph of function execution counts and execution units

Dado que el número de unidades de ejecución es mucho mayor que el recuento de ejecuciones, el gráfico simplemente muestra las unidades de ejecución.

En este gráfico se muestra un total de 1,11 mil millones de Function Execution Units consumidas en un período de dos horas, medido en MB por milisegundo. Para convertir a GB por segundo, divídalo por 1 024 000. En este ejemplo, la aplicación de funciones ha consumido 1110000000 / 1024000 = 1083.98 GB por segundo. Puede tomar este valor y multiplicar por el precio actual del tiempo de ejecución en la página de precios de Functions, que le proporciona el costo de estas dos horas, suponiendo que ya ha usado cualquier concesión gratuita de tiempo de ejecución.

Métricas de nivel de función

Las unidades de ejecución de la función son una combinación de tiempo de ejecución y de uso de memoria, lo que hace que sea una métrica difícil de entender. Los datos de memoria no son una métrica disponible actualmente en Azure Monitor. Sin embargo, si desea optimizar el uso de memoria de la aplicación, puede utilizar los datos del contador de rendimiento recopilados por Application Insights.

Si aún no lo ha hecho, habilite Application Insights en la aplicación de funciones. Con esta integración habilitada, puede consultar estos datos de telemetría en el portal.

Puede usar el explorador de métricas de Azure Monitor en Azure Portal o las API REST para obtener los datos de métricas de Monitor.

Determinación del uso de memoria

En Supervisión, seleccione Registros (Analytics) , copie la siguiente consulta de telemetría y péguela en la ventana de consulta y seleccione Ejecutar. Esta consulta devuelve el uso de memoria total en cada tiempo muestreado.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

Los resultados deben tener un aspecto similar al ejemplo siguiente:

marca de tiempo [UTC] name value
9/12/2019, 1:05:14.947 AM Bytes privados 209,932,288
9/12/2019, 1:06:14.994 AM Bytes privados 212 189 184
9/12/2019, 1:06:30.010 AM Bytes privados 231,714,816
9/12/2019, 1:07:15.040 AM Bytes privados 210,591,744
9/12/2019, 1:12:16.285 AM Bytes privados 216,285,184
9/12/2019, 1:12:31.376 AM Bytes privados 235,806,720

Determinación de la duración

Azure Monitor realiza un seguimiento de las métricas en el nivel de recursos, que para en el caso de Functions es la aplicación de funciones. La integración de Application Insights emite métricas por función. Esta es una consulta de análisis de ejemplo para obtener la duración media de una función:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
name averageDurationMilliseconds
QueueTrigger AvgDurationMs 16 087
QueueTrigger MaxDurationMs 90 249
QueueTrigger MinDurationMs 8522

Pasos siguientes