/ Microsoft Azure

Serverless con Azure Functions

¡Hola de nuevo a todos!

En este post les hablaré de conceptos base a la hora de trabajar con Azure Functions y que creo que les serán de utilidad si es que aún no los conocen, dicho esto iniciemos por la siguiente pregunta.

¿Qué es Serverless?

Suena bastante espectacular, sin servidor, pero sí existe un servidor, solo que para ti son transparentes las tareas que se realizan en él, es decir delegas la administración de los servidores que soportan las tareas que tú quieres, actualizaciones de SO y de framework, auto escalado, etc. ya no las tienes que realizar.
Bajo el modelo de ejecución Serverless se debería utilizar PaaS tanto como sea posible preocupándote únicamente por las tareas que cumplen con el objetivo de tu proyecto.

Azure Functions

Microsoft nos permite utilizar el enfoque Serverless al correr nuestro código personalizado en Azure Functions respondiendo a eventos algo que también es conocido como Functions as a Service.

Azure functions esta basado en los web jobs y ofrece dos sistemas de pagos:

  • Servicio dedicado
  • Plan de consumo (pagar por lo que usas).

En el caso del servicio dedicado la facturación es igual a la de un App service y el sistema de cobro por consumo es por número de ejecuciones tomando en cuenta la siguiente formula:

Tiempo de CPU x RAM(GB)

Bajo el sistema de cobro por consumo se tiene la restricción de que una ejecución no puede durar más de 5 minutos (algo que ante un fallo seguro agradecerás), también puedes definir una cuota diaria de ejecución en GB, además de contar con una cuota gratuita (te dejo el siguiente link donde lo puedes consultar.

¿Cuáles son los beneficios?

  • Centrarte en las necesidades de tu proyecto.
  • Evita código repetido.
  • Desarrollo más rápido.
  • Están basados en Azure web apps y te da acceso a muchas de sus características.
  • Escalado automático.
  • Bajo el plan de consumo tienes un costo más eficiente.
  • Tiene soporte para múltiples lenguajes.
  • Puedes compartir recursos y configuraciones entre funciones.

Las desventajas

  • Aumenta la complejidad en
  • La curva de aprendizaje.
  • Manejo de versiones.
  • Seguimiento.
  • Etc.
  • Compartir código entre diferentes funciones.
  • Es difícil hacer debug del código.

Las Azure Functions son útiles no solo cuándo quieres descomponer aplicaciones que son monolíticas o cuando quieres extender su funcionalidad si no también cuando quieres realizar prototipos de una manera mucho más rápida.

Las funciones se agrupan en Function Apps lo que te permite compartir recursos y configuraciones además de darle un orden a los pipelines con los que trabajes.

La siguiente imagen seguro te resulta familiar si trabajas con App Service y es que como lo mencionaba anteriormente se basan en App Service.

Triggers y bindings

Dentro del contexto de Azure Functions existen dos elementos principales, los triggers y los bindings.
Los trigger como el nombre lo dice son los disparadores de la funcionalidad dentro de nuestra Azure Function pueden ser de diferentes tipo timers, HTTP request, mensajes en una cola, etc., por otro lado los bindings de entrada/salida proporcionan una forma declarativa de conectarse a los datos desde dentro del código, los bindings son opcionales y las funciones pueden tener varios en su declaración pero siempre debe existir un trigger.

Si deseas conocer los tipos de bindings ve al siguiente link y revisa la documentación de cada uno para utilizarlos.

Desarrollo

Cuando trabajas con azure functions tienes tres formas de trabajar.

  • Portal de azure
  • Las herramientas de línea de comandos
  • Visual Studio (¡Claro!)

Azure functions es open source

Así es, el código de Azure Functions está en github incluso el del portal, así que siempre podemos ir a revisar qué hay de nuevo, te dejo la lista de los proyectos a continuación.

Portal Azure Functions

Azure Functions runtime

Plantillas

Documentación

SDK

Otro bindings

Con esto finalizo este post y te invito a probar el modelo Serverless para que tengas más opciones al momento de desarrollar tu proyecto de una forma más eficiente, escalable y a un menor costo.

Antes de despedirme te dejo la liga del repositorio de una práctica que hemos desarrollado Humberto Jaimes y yo para el evento reconnect que se realizó en la ciudad de México, espero que te resulte útil.

¡Saludos!
@SaturPimentel

Referencias

https://azure.microsoft.com/en-us/services/functions/
https://github.com/humbertojaimes/ReConnectWorkShop/blob/master/Lab-ReConnect.pdf
https://www.pluralsight.com/courses/azure-functions-fundamentals
https://github.com/Azure/azure-functions

Saturnino Pimentel

Saturnino Pimentel

Microsoft MVP, consultor, blogger y conferencista. Saturnino es el cofundador de la comunidad de programadores c# y el meetup de c# de la ciudad de México además de participar con otras comunidades.

Read More

Suscríbete a la lista de correos :)

* indicates required