Crear y desplegar Azure Functions con Visual Studio

Azure Functions

Hacia tiempo que quería escribir sobre Azure Functions, y aprovechando que estos días he estado automatizando un despliegue me he animado a hacerlo.

Vamos allá!

Que es Azure Functions y Serverless

Serverless

Lo primero que tenemos que entender para saber como funciona Functions es el termino Serverless, tambien llamado Faas (Function As A Service) que al contrario de lo que pueda parecer por su nombre, no quiere decir que no exista un servidor, si no que nos abstraemos totalmente de este, por lo que no nos hemos de preocupar por la gestión de este.

Alguna de las ventajas de usar una arquitectura serverless pueden ser:

  • No tienes que administrar la infraestructura.
  • Pagas solo por la ejecución de la función. A diferencia de tener por ejemplo una “Web App” instanciada, por la que pagas por cada hora que la tienes levantada (si quieres dar servicio todo el tiempo, serán 24 horas). Esto en contextos cloud, es muy importante para rebajar costes.
  • Sencillas de escalar.

Azure Functions

Azure functions es el servicio que ofrece Microsoft para el proceso Serverless. Podemos crear pequeñas funciones, que se ejecutarán a petición de un desencadenador (http, temporizador, storage…) que se encargarán de realizar las tareas necesarias. Veamos como funciona esto con un ejemplo.

Crear Azure Functions y desplegar desde Visual Studio

Antes de empezar, asegúrate que tienes instalado todo lo necesario para poder desarrollar con Functions desde Visual Studio:

Visual Studio 2017, por supuesto. Si tienes la última versión ya tendrás todo lo necesario, pero si tienes la versión 15.3 o anterior, asegúrate de tener instaladas las extensiones de desarrollo de Azure.

Asegúrate también de tener instaladas y actualizadas las extensiones para Azure Functions en “Herramientas > Extensiones y actualizaciones“.

Con esto ya estamos listos para empezar, vamos a realizar un ejemplo muy sencillo de como crear una función, la probaremos en local y finalmente la publicaremos con Visual Studio.

Crear una Azure Function desde Visual Studio

1- Crear un nuevo proyecto de tipo “Azure Functions“.

2- Seleccionar la versión que vamos a usar. Por defecto la V2 que esta con .Net Standard. Luego cuando vayamos a desplegar veremos que es importante tener esto en cuenta.

3- Seleccionar el tipo de desencadenador que queremos usar. En este caso vamos a usar HTTP y lo llamaremos desde la URL. Dependiendo de la versión aparecen mas o menos. La V2 que esta en preview de momento solo implementa Http y Timer.

4- Podrás comprobar que el código generado en la plantilla es muy sencillo. En este caso, recoge el parametro name del querystring y te saluda.

5- Para probar el código en local, ejecuta el proyecto con F5, verás que se levanta una ventana que hace de servidor de la funcion y que además utiliza el storage emulator. Cuando publiquemos, indicaremos los valores correctos para el storage.

6- Podemos ejecutar la funcion llamando a la URL que nos indica:

Hasta aquí todo sencillo, se ha creado un proyecto del tipo Azure Function desde la plantilla de VS, que escucha una URL y la procesa, dando como resultado un saludo.

Como podrás comprobar, la estructura del proyecto es muy sencilla:

Podemos destacar el archivo local.settings.json donde se indica la configuración cuando trabajemos en local, por defecto asigna el storage para que se use el emulador. Podríamos poner una cadena de conexión para usar el que tengamos definido en Azure si lo necesitamos.

Crear el servicio en Azure

Ahora que tenemos una función hemos de publicarla para hacerla accesible. Para ello primero hemos de crear el servicio en Azure.

Abre el portal de Azure con tu cuenta. Si no tienes una, puedes crearla con un mes con 170€ de crédito para probar (Como usar servicios Azure sin pagar por ello).

Lo primero es crear un grupo de recursos donde tener todos los servicios que vayamos a necesitar, en este caso solo será uno, pero mas adelante añadiremos más. Para ello hay que ir a la sección de grupos de recursos y añadir uno nuevo. Yo suelo seleccionar como región Europa Oeste, por temas de latencia.

add resource group

Una vez creado el grupo de recursos, lo siguiente es crear el servicio para las funciones. Esto se puede hacer desde la sección “Crear recursos” y selecciona Function App.

Nos pedirá una serie de datos para crear el servicio:

  1. Selecciona el nombre que quieras.
  2. Selecciona el grupo de recursos que hemos creado previamente.
  3. Selecciona el plan. Yo en el ejemplo he seleccionado plan por consumo, que es donde esta la gracia.
  4. Como localización, como he dicho antes, yo selecciono Europa Oeste por temas de latencia.
  5. Las funciones necesitan un storage para funcionar (recuerda que cuando probábamos las funciones el local, usábamos el emulador de storage), puedes hacer que se cree automáticamente una o seleccionar una existente si quieres.
  6. Por último, siempre es recomendable saber que es lo que pasa en todo momento, por lo que recomiendo activar Insights para monitorizar

Una vez creado el servicio podemos ver el Dashboard, que de momento esta vació.

Una vez creado el servicio, y antes de crear funciones sobre este, es muy importante que selecciones adecuadamente la versión del runtime sobre el que funcionará. Recuerda cuando creabamos la funcion en Visual Studio que podiamos seleccionar entre la V1 que funciona con .Net Framework y la V2 que ya funciona con .Net Standard. Ahora tenemos que configurar el servicio para que funcione con la misma versión, si no, fallará.

En el Dashboard, haz clic sobre la sección de configuración y selecciona el Runtime adecuado, en nuestro caso para la V2 hay que seleccionar “beta”.

 

Desplegar desde Visual Studio

Una vez tenemos el código listo y el servicio Azure crear, lo que nos queda es desplegar para poder hacer accesible a todo el mundo nuestra creación. Primero vamos a desplegar desde el propio Visual Studio, y luego lo haremos un poco mas interesante automatizando la cosa con VSTS.

Lo primero que tenemos que hacer es acceder al Dashboar de la funcion creada. En el grupo de recursos podemos ver todos los servicios que se han creado, tanto el de la función, como los relacionados y desde ahí puedes navegar a las funciones.

Siempre podremos navegar a cada uno de los servicios desde el grupo de recursos, o desde el punto de menú del portal dedicado a cada uno de los recursos.

Una vez estes en la sección de functions, has de pulsar sobre “Descargar perfil de publicación”. Esto es un fichero con los datos pre-configurados para un despliegue desde Visual Studio. Como ves, Azure ha hecho mucho trabajo por nosotros.

Ahora en Visual Studio, sitúate sobre la el proyecto de funciones que quieres desplegar y haz clic derecho y selecciona publicar.

Aparecerá la ventana de asistente de publicación. Desde ahí, selecciona “Importar perfil” y selecciona el perfil que acabas de descargar.

Mágicamente aparecen todos los datos de publicación ya configurados. Solo has de pulsar sobre publicar y dejar que Visual Studio se ocupe de todo el trabajo.

Una vez termina la publicación, puedes acceder al Dashboard de Functions y comprobar que se ha desplegado correctamente e incluso probar su funcionamiento desde ahí mismo.

También puedes obtener la URL para llamar a la función desde donde quieras clicando sobre Obtener la URL.

Ya tenemos una Azure Function creada y desplegada, en proximas entradas extendere un poco mas el tema, automatizando el despliegue con Visual Studio Team Services e integrando API Management para potenciar un poco todo esto.

!Nos leemos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *