Dentro del trepidante mundo del desarrollo en Azure, continuamente se están sacando nuevas utilidades que las podemos incluir en nuestros desarrollos. En este artículo, te quiero hablar de Azure Functions: qué son, en qué escenarios las podemos utilizar y su comparación con los WebJobs.
¿Qué son las Azure Functions?
Las podemos definir como un «pequeño trozo de código» o «funciones» en la nube. Esto hace que solamente nos tengamos que preocupar por desarrollar la funcionalidad que necesitamos, sin importarnos de toda una aplicación o la infraestructura para ejecutarlo. Por ejemplo, queremos enviar una notificación una vez se haya insertado un elemento en una base de datos.
Para que los desarrolladores tengan una adopción mucho más sencilla, es posible utilizar casi cualquier lenguaje de desarrollo como: C #, Node.js, Python o PHP.
Otras Características
- Modelo de pago por uso. Solamente se factura el tiempo que el código esta en ejecución
- Seguridad integrada. Con otros OAuth como los AAD, Facebook, Google, Twitter o Microsoft Account
- Fácil de integrar con otros servicios
- Desarrollo flexible e integrado con herramientas como Visual Studio Team Services, Jenkins o GitHub
- Open Source. Hay muchas funciones disponibles en GitHub
¿Cuándo utilizarlo?
Azure Functions es una gran solución para el procesamiento de datos, sistemas de integración, el trabajo con IOT, y la construcción de APIs y microservicios simples.
Por ejemplo, tenemos tareas como procesamiento de pedidos, mantenimiento de archivos o tareas de larga duración que se tienen que ejecutar en background sin necesidad de tener una planificación previa. Por defecto, ya tenemos Azure Functions integradas con los siguientes escenarios:
- BlobTrigger. Procesa blobs en Azure Storage cuando se añaden en contenedores.
- EventHubTrigger. Responde eventos que ocurren en los dispositivos IoT.
- Generic webhook. Procesa peticiones de respuesta webhook HTTP a cualquier dispositivo que soporta webhooks.
- GitHub webhook. Responde a eventos que ocurren en nuestros repositorios GitHub.
- HTTPTrigger. Desencadena la ejecución del código usando una petición HTTP.
- QueueTrigger. Responder a mensajes que llevan a la cola de un Azure Storage.
- ServiceBusQueueTrigger. Conecta la función con otros servicios de Azure o servicios on-premise que se quedan escuchando la cola de mensajes.
- ServiceBusTopicTrigger. Conecta la función con otros servicios de Azure o servicios on-premise mediante la subscripción.
- TimerTrigger. Ejecuta una serie de funciones o tareas en una hora predefinida.
Comparación con WebJobs
En principio puede parecer que las Azure Functions solapan la funcionalidad que podemos utilizar con los WebJobs, pero solamente en parte.
Los WebJobs están enfocados para realizar tareas en Background de nuestra Web App, por ejemplo enviar un email a un determinado usuario,etc. Mientras que las Azure Functions pueden ejecutarse en modo Job, pero también pueden responder a eventos del entorno (vía WebHook). Además, no tienen porqué estar vinculadas con una Web App.
Azure Functions es una solución para poder integrar un pequeño desarrollo con eventos/sucesos de otros sistemas y que respondan a ellos de una forma muy simple. Tiene una fácil integración con Logic App o con otros productos disponibles en Azure.
Creando nuestra primera Azure Function
Vamos a implementar un WebHook que su funcionalidad será un simple «Hello World». Para ello, tenemos que seguir los siguientes pasos:
- Ir al Portal de Azure Functions y logarse con nuestras credenciales
- Escribir el nombre de la función, seleccionar la región donde va a estar desplegada el código y pulsar sobre el botón Crear.
- Una vez este aprovisionada la infraestructura, seleccionar el template de WebHook en C#
- A continuación, se mostrará en la pantalla la url del WebHook, así cómo el código de la misma.
Test de la Función
Para ver el correcto funcionamiento de nuestra Función, vamos a realizar una petición Http mediante un Post a la url del WebHook (lo podemos hacer haciendo uso bien de Fiddler o PostMan) y en el cuerpo de dicha petición tenemos que añadirle un Json con la siguiente estructura:
{
"first": "Encamina",
"last": "Bloggers"
}
Resumen
Azure nos ofrece cada vez más soluciones útiles en nuestro día a día. Un amplio conocimiento sobre las novedades que salen, hace posible que podamos ofrecer soluciones técnicas muy potentes, simples de utilizar y no tener que estar construyendo soluciones prácticamente desde cero. Genial, ¿verdad?
Azure Functions es una solución que ofrece una gran variedad de posibilidades al developer independientemente de su tecnología preferida. La principal característica es que nos permite integrar aplicaciones/servicios con nuestros desarrollos aprovechando todos los beneficios del Cloud (pago por uso, escalabilidad, etc.) 😉