Todos los que nos dedicamos a la informática, tomamos algún curso o estudiamos una carrera relacionada con programación, en algún momento escribimos código y en algún momento nos hablaron de «funciones» en programación estructurada, y si fuimos más allá nos presentaron el paradigma de Programación Orientada a Objetos, y ahí nos dijeron ya no se les dice funciones, ahora se llaman «métodos».
Para fines prácticos la definición de una función es la siguiente:
«Una función es un conjunto de líneas de código que realizan una tarea específica,
puede o no recibir parámetros al igual que retornar un valor.»
¿Y por que hablar de eso es interesante en este blog? Pues bien, la nube de Microsoft Azure tiene un servicio llamado «Azure Functions» y como su nombre atinadamente lo indica tiene que ver con funciones.
¿Qué es Azure Functions?
Azure Functions es el servicio de la nube de Microsoft Azure que ofrece ejecución de cómputo sobre demanda por fragmentos de código. Se basa en el concepto de ServerLess que implica pensar menos en servidores «Think less on servers» y ponerle más foco en la lógica del negocio, estas son algunas características de ServerLess:
- Abstracción del servidor.
- Auto escalable.
- Costo por ejecución.
- Exposición de funciones como servicio (Function as a Service). Donde lo importante es que las «funciones» se ejecuten y no realmente sobre el servidor donde sucederá esto.
Con Azure Functions, se escriben funciones que realicen una determinada tarea en la nube de Azure, estas funciones estarán sobre demanda y pueden ser escritas en una variedad de lenguajes de programación como: C#, Python, PHP, PowerShell, Node.js entre otros mas. Estas funciones reaccionan a eventos dentro y fuera de la nube de Azure, por lo que las hace muy interesantes.
Los 3 componentes de una Azure Function
- Function Code: Tal cual como su nombre lo indica, es el código que nosotros escribimos dentro de la función con un fin específico.
- Binding: Se refiere a los datos de entrada o salida.
- Input: Parámetros que podrá recibir la función para empezar a trabajar.
- Output: Valor de retorno de la función.
- Trigger: El elemento desencadenará la ejecución de la función.
Al momento de escribir este blog post tanto bindings como triggers soportados son:
Con el tiempo esta relación puede cambiar, en cualquier momento podremos echar un vistazo a Microsoft Docs para ver las actualizaciones futuras.
Escenarios de uso y plantillas de inicio
Azure Functions parte de tres escenarios principales:
- Timer based processing: Son funciones que corren en intervalos definidos en formato CRON.
- Data Processing: Son funciones que reaccionan ante eventos de datos, tienen parámetros de entrada y salida.
- Webhook / API: Son funciones que reaccionan ante eventos de servicios externos tanto de la nube de Microsoft como de externos.
Y por cada escenario mencionado arriba tenemos plantillas predefinidas que nos guiarán para construir nuestras propias funciones:
Blob Trigger | EventHub Trigger | Generic Webhook |
GitHub Webhook | HTTPTrigger | QueueTrigger |
ServiceBusQueueTrigger | ServiceBusTopicTrigger | TimerTrigger |
Blank & Experimental |
Arquitectura de Azure Functions
La arquitectura de Azure Functions esta basada en un servicio con más antigüedad llamado Azure WebJobs, si acoplamos por capas las características de Azure Functions desde lo bajo hasta el alto nivel quedaría como el diagrama siguiente:
Mas a detalle podemos decir que una Azure Function está formada de los siguientes archivos:
- Run file: Es el archivo que contiene el código que escribimos.
- Function file: Es el archivo que contiene la configuración de los building, triggers y parámetros, todo en formato JSON.
- Project file: Es el archivo que contiene las referencias a los ensamblados que necesitemos para el código de nuestra función.
Depuración de Azure Functions
Las Azure Functions pueden ser testeadas de diversas maneras:
- Llamadas directas por URL usando un navegador.
- Con Visual Studio:
- Cloud Explorer
- Azure Storage Explorer.
- Línea de comandos.
- Productos de terceros como Postman.
Si quieres probar Azure Functions puedes empezar a hacerlo desde aquí: Azure Functions
Ahora bien, entendiendo de que trata esto de Azure Functions vamos a hacer una demostración de como podemos crear algunas de ellas e iniciarlas para que realicen una tarea determinada.
Sígueme en Twitter @vmorenoz
¿Te gustó este artículo? Únete a Facebook en MicrosoftLand