Azure Functions es un servicio relativamente nuevo de Microsoft Azure (lanzado como Preview a fines de marzo de 2016) que nos permite ejecutar código en base a eventos, sin preocuparnos en absoluto por la infraestructura en donde corre, una corriente llamada arquitectura serverless (sin servidor).
Dos servicios con los que compite son AWS Lambda y Google Cloud Functions.
Características
Lenguajes
Tenemos una amplia variedad de lenguajes para programar una Azure Function: C#, JavaScript, F# (en preview), Python, PHP, Java, e incluso Bash, Batch o PowerShell.
Gran variedad de triggers
El servicio está basado en el SDK de WebJobs, por lo que si ya trabajamos con ellos, veremos muchas cosas en común, como los triggers (desencadenadores) y los bindings (enlaces):
Tipo | Servicio | Desencadenador | Entrada | Salida |
---|---|---|---|---|
Scheduler | Azure Functions | ✔ | ||
HTTP (REST o Webhook) | Azure Functions | ✔ | ✔* | |
Almacenamiento de blobs | Azure Storage | ✔ | ✔ | ✔ |
Eventos | Azure Event Hubs | ✔ | ✔ | |
Colas | Azure Storage | ✔ | ✔ | |
Tablas | Azure Storage | ✔ | ✔ | |
Tablas | Azure Mobile Apps | ✔ | ✔ | |
Base de datos no SQL | DocumentDB | ✔ | ✔ | |
Notificaciones de inserción | Azure Notification Hubs | ✔ |
(*- El enlace de salida HTTP requiere un desencadenador de HTTP)
Fuente: Enlaces
Modelo de ejecución «serverless»
Una de las propuestas de valor de PaaS (Platform-as-a-Service) es la abstracción de la capa de sistema operativo de nuestro código. La plataforma nos provee de imágenes del sistema operativo pre configuradas, que no requieren ningún tipo de mantenimiento y pueden ser escaladas de acuerdo a la carga de nuestro proceso. Azure Functions extiende este concepto PaaS proveyendo a los desarrolladores una abstracción completa de la infraestructura sobre la que corre el código, yendo a un modelo de pago por ejecución que escala automáticamente en base a las invocaciones de los triggers.
Esquema de costos
El servicio nos permite elegir si queremos correr nuestras Functions dentro de un entorno de Azure App Service que ya poseemos, por ejemplo si ya tenemos una Web o Mobile App, o si queremos optar por un esquema totalmente dinámico en el cual nos cobrarán por la cantidad de ejecuciones y por el tiempo y uso de memoria que haga nuestro código durante su ejecución. El precio del servicio puede verse aquí.
Modelo de código abierto que corre en todos lados
El entorno de ejecución, los templates, la UI y el SDK de WebJobs son todos de código abierto y se desarrollan de forma pública. El entorno de ejecución será portable, por lo que permitirá correr Functions en Azure, en nuestro propio datacenter o en otra nube.
Muy bueno, atento a la parte 2 del artículo con códigos de ejemplo 😎🐱👤