Curso
Azure Functions forman parte del servicio de computación sin servidor de Microsoft. En pocas palabras, te permiten ejecutar fragmentos de código como respuesta a eventos sin tener que gestionar tú los servidores.
Por ejemplo, una función puede ejecutarse cuando llega una solicitud HTTP, cuando se sube un archivo al almacenamiento o cuando se alcanza una hora programada.
“Sin servidor” no significa que no existan servidores, sino que Azure gestiona la infraestructura por ti. Azure se encarga del aprovisionamiento, el escalado y el mantenimiento en segundo plano.
En esta guía verás los bloques fundamentales: triggers, bindings, opciones de alojamiento y un ejemplo práctico para empezar.
¿Qué son las Azure Functions?
Una Azure Function es un pequeño trozo de código que se ejecuta cuando lo activa el evento que elijas. Tú escribes la lógica y Azure se ocupa del resto.
Este modelo se apoya en tres ideas:
- La ejecución basada en eventos hace que el código se ejecute solo cuando pasa algo, no todo el tiempo.
- El escalado automático permite que Azure añada o quite recursos de cómputo según la demanda.
- La tarificación por consumo, en algunos planes de alojamiento, te cobra solo por el tiempo en que tu código se ejecuta realmente.
Idealmente, una función realiza una tarea atómica, como redimensionar una imagen o procesar un mensaje. Una Function App es el contenedor que agrupa una o varias funciones. Gestiona ajustes compartidos, como configuración y despliegues, para todas las funciones que contiene.
Cómo funcionan las Azure Functions
El ciclo de vida de una función sigue un patrón sencillo:
- Ocurre un evento, como una subida de archivo o una llamada HTTP.
- Un trigger detecta el evento e inicia la función al instante.
- La función ejecuta su código.
- Los bindings conectan la función con otros servicios que leen la entrada o envían la salida necesaria.
- Azure gestiona los recursos de cómputo durante todo este proceso, según el plan de alojamiento que hayas elegido.
Este flujo es el mismo sin importar el lenguaje o la opción de alojamiento (para la mayoría de pasos). Solo cambian el trigger, el código y los bindings.
Triggers de Azure Functions
Cada función tiene exactamente un trigger. El trigger define cómo se inicia la función. Estos son los tipos más comunes que deberías conocer:
- HTTP trigger: Ejecuta una función al recibir una solicitud HTTP. Es habitual para crear APIs.
- Timer trigger: Ejecuta una función con una programación, por ejemplo, cada hora o una vez al día.
- Blob Storage trigger: Ejecuta una función cuando se añade o cambia un archivo en Azure Blob Storage.
- Queue trigger: Ejecuta una función cuando llega un mensaje nuevo a una cola.
- Event Hub trigger: Ejecuta una función en respuesta a un flujo de eventos. Muy útil para grandes volúmenes de datos.
Bindings de Azure Functions
A menudo se confunden triggers y bindings, pero aunque parezcan similares, cumplen funciones distintas. Un trigger inicia una función; un binding la conecta con datos para leerlos o enviarlos.
Bindings de entrada
Aquí proporcionas datos a tu función sin escribir código de integración a medida. Por ejemplo, una función puede leer un registro de una base de datos automáticamente con solo declarar el binding.
Bindings de salida
Permiten enviar el resultado de tu función a otro lugar. Por ejemplo, puedes usar bindings de salida para escribir un mensaje procesado en una cola.
Un ejemplo para verlo claro: un trigger de Blob Storage inicia una función cuando se sube una imagen. Un binding de salida guarda la imagen redimensionada en otro contenedor. De este modo no hace falta escribir código manual del cliente de almacenamiento.
Cómo crear tu primera Azure Function
Aquí tienes un ejemplo muy sencillo de una función con trigger HTTP que devuelve un saludo. El flujo sería:
- Crea una Function App. Será el contenedor de tu función en Azure.
- Elige un runtime y selecciona el lenguaje en el que quieres programar.
- Crea la función para añadir una nueva dentro de tu Function App.
- Selecciona el trigger HTTP para que la función responda a solicitudes web.
- Añade una funcionalidad simple, como leer un nombre de la solicitud y devolver “Hola, [nombre]”.
- Ejecuta y prueba la función con las herramientas integradas o enviando una solicitud desde tu navegador.
- Despliega en Azure para que quede activa y accesible.
He hecho el ejemplo a propósito muy pequeño para mostrarte el patrón y que tu creatividad haga el resto.
Lenguajes compatibles con Azure Functions
Azure Functions es compatible con varios lenguajes, como:
- C#
- JavaScript/TypeScript
- Python
- Java
- PowerShell
La compatibilidad y los modelos de desarrollo pueden variar según el lenguaje y la versión. Te recomiendo consultar la documentación de Azure actual antes de iniciar un proyecto nuevo, porque estos detalles cambian con frecuencia.
Opciones de alojamiento de Azure Functions
No todas las Azure Functions se ejecutan del mismo modo. Por eso Azure ofrece distintos planes de alojamiento, cada uno con compensaciones que deberás valorar según tu caso. Entre ellas:
- Escalado: algunos planes escalan de forma automática e inmediata; otros requieren más control manual.
- Comportamiento de inicio: algunos planes mantienen las funciones “calientes”, listas para ejecutarse al instante; otros las inician bajo demanda.
- Red y conectividad: ciertos planes admiten redes avanzadas, como conexión a una red virtual privada; otros no.
- Coste: los modelos de precios cambian mucho, desde pago por ejecución hasta costes mensuales fijos.
Escalado y cold starts en Azure Functions
Hay otros dos conceptos clave cuando tu función está en producción:
Escalado automático
Azure supervisa la carga de tu función y, cuando la demanda sube, añade más instancias de cómputo; cuando baja, las retira. No necesitas gestionarlo manualmente.
Cold starts
Si una función no se ha ejecutado recientemente, puede necesitar un momento para iniciarse antes de atender una nueva solicitud. Esa demora se llama cold start. Algunos planes de alojamiento la reducen o evitan manteniendo la instancia “caliente”, como hemos comentado.
Casos de uso comunes de Azure Functions
El modelo basado en eventos encaja con muchos problemas del día a día. En particular:
APIs y webhooks
Para gestionar solicitudes HTTP entrantes sin tener que mantener un servidor web activo 24/7.
Procesamiento de archivos e imágenes
Activa una función cuando un archivo llega al almacenamiento y luego redimensiónalo, conviértelo o simplemente escanéalo.
Tareas programadas
Ejecuta tareas de limpieza, informes o recordatorios con un temporizador sin necesidad de un servidor dedicado siempre activo.
Canalizaciones de procesamiento de datos
Procesa mensajes o eventos a medida que llegan, paso a paso.
IoT y procesamiento de eventos
Gestiona grandes volúmenes de datos de sensores o dispositivos a medida que se transmiten.
Tareas en segundo plano
Descarga trabajos lentos u ocasionales, como el envío de emails, para que no bloqueen tu aplicación principal.
Supervisión y resolución de problemas en Azure Functions
Una vez en producción, necesitas visibilidad sobre su rendimiento.
Puedes consultar los registros para ver qué ocurrió en cada ejecución, muy útil para depurar. También puedes usar Application Insights en Azure, que centraliza métricas de rendimiento, solicitudes y errores en un solo lugar.
Conviene monitorizar también los fallos de invocación para saber cuándo y por qué una función no terminó. La supervisión del rendimiento te ayuda a detectar funciones lentas antes de que den problemas y, por supuesto, puedes configurar reintentos automáticos para que las ejecuciones fallidas se vuelvan a intentar.
Conclusión
Azure Functions te permite ejecutar código como respuesta a eventos, sin tener que gestionar los servidores subyacentes. Los triggers deciden cuándo arranca una función. Los bindings, por su parte, facilitan conectarla con otros servicios sin código de integración adicional.
A medida que pases de una simple función de prueba a algo en producción, las decisiones de alojamiento y escalado pesan mucho más. El plan adecuado no solo afecta al coste, también a la velocidad y la fiabilidad.
Trabajo en sistemas de IA acelerados que permiten la inteligencia de vanguardia con canalizaciones de ML federadas en datos descentralizados y cargas de trabajo distribuidas. Mywork se centra en Grandes Modelos, Procesamiento del Habla, Visión por Ordenador, Aprendizaje por Refuerzo y Topologías ML avanzadas.
Preguntas frecuentes
¿Qué son las Azure Functions?
Un servicio sin servidor que ejecuta pequeños fragmentos de código como respuesta a eventos, sin que tengas que gestionar servidores.
¿Qué activa una Azure Function?
Eventos como solicitudes HTTP, temporizadores, subidas de archivos o mensajes en colas.
¿Cuál es la diferencia entre un trigger y un binding?
Un trigger inicia la función. Un binding la conecta con otros servicios para entrada o salida de datos.
¿Qué es un cold start?
Un breve retraso cuando una función arranca tras haber estado inactiva.
¿Qué lenguajes admite Azure Functions?
C#, JavaScript/TypeScript, Python, Java y PowerShell.
