Implementación de Azure Functions

Resumen de desencadenadores/enlaces de Functions, patrones de Durable Functions y comparación de planes de hospedaje.

Para el examen AZ-204, debes distinguir claramente entre los conceptos de triggers y bindings en Azure Functions, las diferencias entre planes de hospedaje y los patrones de Durable Functions.

 

Que es Azure Functions?

Imagina una maquina expendedora. Una bebida sale solo cuando insertas una moneda (un evento), y nada funciona mientras simplemente esperas. Azure Functions funciona igual. El codigo se ejecuta solo cuando ocurre un evento, y no se incurre en costos el resto del tiempo. Este enfoque se llama sin servidor (serverless).

Sin servidor no significa que no haya servidores. Significa que los desarrolladores no necesitan administrar servidores directamente. Azure prepara, ejecuta y administra los servidores en tu nombre.

 

Triggers

Un trigger es un evento que hace que una funcion se ejecute. Cada funcion debe tener exactamente un trigger. Piensa en un timbre. Alguien debe presionar el timbre (trigger) para que suene dentro de la casa (ejecucion de la funcion). Al igual que dos timbres no pueden estar conectados a una casa al mismo tiempo, solo se permite un trigger por funcion.

| Trigger | Descripcion | Ejemplo de uso | |---------|-------------|----------------| | HTTP | Se activa cuando llega una solicitud HTTP | API REST, manejo de webhooks | | Timer | Se activa segun un horario definido (expresion cron) | Generar informes a medianoche cada dia | | Blob Storage | Se activa cuando se sube o modifica un archivo Blob | Redimensionar imagen despues de subir | | Queue Storage | Se activa cuando llega un mensaje a la cola | Procesar elementos de trabajo asincronos | | Event Grid | Se activa cuando ocurre un evento de Event Grid | Responder a varios eventos de Azure | | Service Bus | Se activa cuando llega un mensaje de Service Bus | Procesamiento de mensajes empresariales | | Cosmos DB | Se activa en el feed de cambios de Cosmos DB | Procesar cambios de DB en tiempo real |

Regla clave: Solo un trigger por funcion.

 

Bindings

Los bindings son como una funcion lee o escribe en otros servicios sin escribir codigo SDK o de biblioteca de cliente. Como un cargador USB, no necesitas entender circuitos electricos complejos — simplemente lo conectas y funciona.

Binding de entrada (Input Binding): Lee automaticamente datos externos cuando la funcion comienza Binding de salida (Output Binding): Escribe automaticamente el resultado de la funcion en un servicio externo

Ejemplo: Recibir una solicitud a traves del trigger HTTP, leer datos con un binding de entrada de Cosmos DB, enviar resultados a una cola con un binding de salida de Queue Storage. En ningun momento necesitas inicializar un SDK o administrar conexiones manualmente.

| Tipo | Descripcion | Ejemplo | |------|-------------|---------| | Trigger | Que hace que la funcion se ejecute (exactamente uno requerido) | Solicitud HTTP, llegada de mensaje a la cola | | Binding de entrada | Leer datos durante la ejecucion de la funcion (multiples permitidos) | Leer archivo Blob, consultar documento Cosmos DB | | Binding de salida | Escribir datos despues de la ejecucion de la funcion (multiples permitidos) | Enviar mensaje a la cola, guardar archivo Blob |

 

Planes de Hospedaje (Hosting Plans)

Esto determina como se ejecuta tu funcion. Debes elegir una de tres opciones.

Plan de Consumo (Consumption Plan)

La opcion sin servidor mas basica. Es como una tarjeta de transporte de prepago donde solo pagas cuando viajas — no sale dinero mientras esperas, solo cuando subes al autobus (cuando se ejecuta la funcion).

Facturado por numero de ejecuciones y duracion de ejecucion Escalado automatico: Escala instancias automaticamente a medida que aumenta el trafico Puede ocurrir inicio en frio (cold start): Si una funcion no se usa por un tiempo, la primera ejecucion puede tener un retraso Tiempo de espera de ejecucion: Maximo 10 minutos (predeterminado 5 minutos)

Plan Premium (Premium Plan)

Una version mejorada del Plan de Consumo que elimina los inicios en frio. Las instancias precalentadas siempre estan en espera, lo que permite la ejecucion inmediata.

Sin inicio en frio: Las instancias precalentadas siempre estan listas Integracion VNet: Acceder a recursos en redes privadas Duracion de ejecucion ilimitada Opciones de CPU y memoria mas potentes

Plan Dedicado (Dedicated Plan / App Service Plan)

Ejecuta funciones sobre un App Service Plan existente. Util cuando ya tienes un App Service Plan y quieres ejecutar funciones sin costo adicional.

Siempre en ejecucion: Las instancias siempre estan activas Puede aprovechar el App Service Plan existente Costos predecibles

| Plan | Inicio en frio | Modelo de facturacion | Soporte VNet | |------|---------------|----------------------|-------------| | Consumption | Si | Basado en ejecucion | No | | Premium | No | Siempre activo + basado en ejecucion | Si | | Dedicated | No | Tarifa de App Service Plan | Si |

!3 planes de hospedaje de Azure Functions

Durable Functions

Las Functions regulares son ideales para tareas de una sola vez. Pero que pasa si necesitas ejecutar varios pasos en secuencia, o ejecutar varias tareas en paralelo y esperar hasta que todas terminen? Durable Functions maneja estos flujos de trabajo complejos manteniendo el estado.

Patrones de Durable Functions

Encadenamiento de funciones (Function Chaining)

Ejecuta multiples funciones en secuencia. Como una receta de cocina con paso 1, paso 2, paso 3 en orden — el resultado de cada paso se pasa al siguiente.

Ejemplo de uso: Subida de archivo, analisis de virus, conversion de imagen, guardado

Distribucion y recoleccion (Fan-out / Fan-in)

Ejecuta multiples tareas en paralelo, espera a que todas terminen y luego agrega los resultados. Como contactar a multiples personas simultaneamente al preparar una reunion y esperar a que todos respondan.

Ejemplo de uso: Consultar datos meteorologicos de multiples regiones simultaneamente y luego agregar resultados

API HTTP asincrona (Async HTTP API)

Inicia una tarea de larga duracion y permite al cliente verificar el estado mas tarde. Similar al seguimiento de paquetes — no esperas en la puerta inmediatamente despues de que comienza el envio, sino que verificas el estado mas tarde con el numero de seguimiento.

Monitor

Verifica repetidamente hasta que se cumpla una determinada condicion. Como verificar repetidamente el panel de salidas en un aeropuerto mientras esperas tu vuelo.

Interaccion humana (Human Interaction)

Un flujo de trabajo que espera la aprobacion de una persona. Como una cadena de aprobacion, una persona debe aprobar manualmente antes de que el flujo de trabajo avance al siguiente paso. Si no llega aprobacion dentro de un limite de tiempo, automaticamente procede un proceso alternativo (escalada).

| Patron | Caracteristica clave | Ejemplo de uso | |--------|---------------------|----------------| | Encadenamiento | Ejecucion secuencial, pasar resultado previo al siguiente paso | Pipeline de datos | | Fan-out / Fan-in | Ejecucion paralela y luego agregar | Llamar multiples APIs simultaneamente | | API HTTP asincrona | Rastrear progreso de tarea de larga duracion | Procesamiento de archivos grandes | | Monitor | Verificar repetidamente hasta cumplir condicion | Sondeo de estado | | Interaccion humana | Esperar aprobacion humana | Flujo de trabajo de aprobacion |

 

Puntos clave del examen

"El evento que hace que una funcion se ejecute, exactamente uno permitido" -- Trigger

"Leer datos sin escribir codigo SDK" -- Binding de entrada (Input Binding)

"Escribir datos sin escribir codigo SDK" -- Binding de salida (Output Binding)

"Pagar solo cuando se ejecuta, posibles inicios en frio" -- Plan de Consumo (Consumption Plan)

"Sin inicio en frio, instancias siempre listas" -- Plan Premium (Premium Plan)

"Ejecutar sobre App Service Plan existente" -- Plan Dedicado (Dedicated Plan)

"Ejecutar multiples funciones en secuencia" -- Durable Functions Encadenamiento

"Ejecutar tareas en paralelo y esperar a que todas completen" -- Durable Functions Fan-out / Fan-in

"Rastrear el estado de una tarea de larga duracion" -- Durable Functions API HTTP asincrona

"Flujo de trabajo que espera la aprobacion de una persona" -- Durable Functions Interaccion humana

"Trigger que se activa en un tiempo programado" -- Trigger de temporizador (expresion cron)

"Se activa automaticamente cuando se sube un Blob" -- Trigger de Blob Storage

Volver a la lista del blog