Buscar
Cerrar este cuadro de búsqueda.

Por qué necesitas saber qué es FaaS y el Serverless Computing

Picture of Andrea Martín
Andrea Martín
| 7 junio, 2023

¿Qué es un FaaS?

FaaS (Function as a Service) es un nuevo paradigma de desarrollo software que se apoya en la computación sin servidor (Serverless computing), es decir, para ejecutar o crear una aplicación no es necesario aprovisionar y administrar la infraestructura, lo que nos permite centrarnos solamente en el código de la aplicación, de manera que tu aplicación quedaría dividida en funciones que son desencadenadas por eventos específicos y que están ligadas a un plan de consumo que determinará los recursos a los que estas tienen acceso, como alojamiento, almacenamiento o conexión con otras herramientas.

Ventajas del FaaS

Este paradigma supone ventajas como:

  • Un rápido time-to-market al soportar un desarrollo iterativo
  • Latencias reducidas al ahorrar el transporte de los datos y solicitudes servidores lejanos
  • Escalabilidad
  • Reducción de costes

Pero también supone retos al quedar las aplicaciones muy ligadas y dependientes de los proveedores del servicio y difíciles de probar.

¿Cómo funciona una función de FaaS?

Las FaaS son pedazos de código que son funcionales por sí mismas y no necesitan de la infraestructura completa de una app para realizar su trabajo. Necesitan una serie de recursos para poder existir: recursos de almacenamiento y un plan de consumo.

Uno de los retos que afecta en entornos de producción IoT son los Cold starts. Para entenderlo trataremos de visualizar el sistema de encendido de un coche. Para que el motor arranque, primero debe haber un flujo de corriente accionado por la llave o el botón de encendido que “prepararía” los componentes necesarios que hacen posible el arranque del motor. Pues bien, en nuestro entorno FaaS, las funciones serían el motor y el plan de consumo al que están subscritas serían los componentes.

El plan de consumo es el tipo de hosting que eliges para proveer tus funciones y con él los recursos que asocias a ellas. Existen planes de consumo en los que el servidor no mantiene ninguna instancia corriendo que mantenga los recursos activos y se producen estos Cold starts que son retrasos en el “despertar” de estas funciones. Estos retrasos se deben a un aumento de la latencia en la respuesta del servidor, es decir, cuando una function es invocada, lo primero que hace es buscar si los recursos a los que está asociada están disponibles para ser usados y poder ejecutarse.

Por ejemplo, si tuviésemos varias funciones asociadas a un espacio de memoria limitado y hubiese varias funciones ejecutándose en ese momento, si otra función necesitase ejecutarse y la memoria asociada no fuese suficiente porque está ocupada por el resto de  funciones, entonces esos recursos no están preparados porque no han sido requeridos por ninguna función en un tiempo, así que tienen que arrancar desde 0 por lo que, habría un período de tiempo en el que, para poder ajustarse, la función estaría esperando la respuesta de esos recursos.

Este sería el proceso hasta la ejecución de una función con un arranque en frío:

Y este con un arranque templado, es decir, existe un agente encargado de realizar todas las tareas preparatorias para que sea posible la ejecución de la función y esto precisamente es lo que caracteriza al entorno FaaS de Azure.

Azure Functions

Azure Functions cuenta con diversas formas de conexión con servicios de Azure como Azure Cosmos DB, HTTP, Blob, etc. Además de poder conectarse con Azure IoT Hub mediante Azure Event Hubs

Una Azure Function está compuesta por dos partes: triggers y bindings.

Los triggers son los desencadenadores de la función, activados mediante datos que son pasados a esta, mientras que los bindings las conectan con los recursos como pueden ser recursos de almacenamiento.

Este enfoque podría ser útil en entornos de Edge Computing ya que podríamos alojar las funciones en los propios dispositivos fronterizos – si esto no te suena puedes visitar el artículo en el que hablamos de Edge Computing – y que, por ejemplo, hiciesen un cribado de los datos que llegan de los sensores periféricos para saber cuáles son de interés para los recursos asociados a las funciones. Como desarrollador puedes escribir las funciones en C#, Java, JavaScript, PowerShell o Python.

Un concepto importante en los entornos que manejan funciones de Azure es el estado. Azure Functions se creó inicialmente para dar respuesta a la aparición de eventos a escala y sin estado, es decir, procesos aislados como los de una máquina expendedora, cada solicitud tiene su respuesta y no se guarda el estado de operaciones anteriores. Para dar solución a este problema se creó Durable Functions o funciones duraderas que son funciones capaces de albergar estado y que dan solución a patrones típicos de aplicación como:

  • Encadenamiento de funciones
  • Distribución ramificada de salida y de entrada
  • API de HTTP asincrónico
  • Supervisión
  • Interacción humana
  • Agregador (entidades con estado)

Dentro de estos patrones encontramos diferentes tipos de funciones que hacen posible su funcionamiento:

  • Orquestadoras: organizan el orden y el cómo de la ejecución de las funciones de la orquestación.
  • De actividad: aquellas que son orquestadas, es decir, las tareas más pequeñas en las que se divide una actividad para ser completada.
  • Entidades duraderas: encargadas de administrar el estado.
  • De cliente: aquellas que usan el enlace de cliente duradero.

Los enlaces dentro de los flujos de ejecución son los encargados de desencadenar los diferentes tipos de funciones y además son customizables.

Comparativa de Azure Functions con otros servicios en la nube de Microsoft

Existen otros servicios de Azure como Power Automate, Logic Apps o App Service Webjobs que están orientados a la integración y automatización de procesos que pueden ser alternativas a las funciones.

Dependiendo de las necesidades de nuestro proyecto, elegiremos un servicio u otro, pero lo que hace destacar a Azure Functions respecto del resto de servicios es:

  • La posibilidad de desarrollo y pruebas en el propio explorador
  • El desarrollo de aplicaciones con modelo serverless
  • El precio
  • La amplia oferta de desencadenadores de eventos respecto de las alternativas

Aunque no siempre es necesario elegir, estas tecnologías también pueden trabajar juntas también, podemos crear funciones que se integren con las demás alternativas y además Microsoft continúa introduciendo mejoras para que hacer trabajar a estas herramientas de forma conjunta sea más sencillo.

Fuente: FreeCodeCamp.org

FaaS y Serverless computing en desarrollos IoT

El uso de FaaS en desarrollos IoT cada vez es mayor. FaaS también te permite crear programas para dispositivos muy pequeños – hablamos de dispositivos tanto basados en Linux como microcontroladores no-Linux con memorias RAM de 64KB y FLASH de 512KB – de forma que el código no queda construyendo una aplicación monolítica tradicional si no que está dividido en funciones responsables cada una del funcionamiento de una tarea u operación concreta.

Uno de los retos al que se enfrenta el FaaS con IoT es que al ser la mayoría de los dispositivos conectados sistemas basados en microcontroladores, debe afrontar la gran heterogeneidad de arquitecturas y los recursos computacionales limitados inherentes a estos, lo que genera dificultad a la hora de escribir el código de la solución ya que debemos hacerlo a muy bajo nivel.

Con FaaS somos capaces de atajar este problema ya que nos ofrece una amplia variedad de lenguajes de alto nivel para escribir nuestras soluciones.

Este paradigma también nos trae muchos beneficios, aportando escalabilidad, flexibilidad y estabilidad a nuestras soluciones. Usar infraestructuras serverless con FaaS en soluciones IoT de miles de dispositivos conectados y con un gran tráfico de datos con los que operar, almacenar y manejar supone un alto coste por la gran demanda de recursos necesarios. Delegar operaciones a las FaaS y solo utilizar los recursos que necesitas en cada momento, como ofrecen proveedores de servicios en la nube como Azure, reduce drásticamente las necesidades de recursos de tus soluciones, ahorrando en consumo, ancho de banda (claves para el buen funcionamiento de soluciones IoT y por lo tanto también los costes. También se evita que haya pérdidas en la recepción de datos que pueden ser clave, ya que, al estar los recursos más despejados, pueden aceptar mayor cantidad de peticiones, aportando eficacia a las soluciones.

Otra cobertura ventajosa de implantar una arquitectura serverless con FaaS sería la eliminación de la gestión de proveedores Cloud en soluciones compuestas por millones de dispositivos conectados en distintas zonas geográficas en soluciones donde el backend está basado en Cloud.

Escenarios aplicables a arquitecturas serverless con FaaS

  • Smart Cities o smart buildings: necesitan un gran aprovisionamiento IoT y a la vez persiguen la sostenibilidad, por lo que necesitan ser lo más eficientes posible, lo que podemos conseguir mediante una monitorización constante y precisa de la información generada por todos los dispositivos y sistemas conectados que a la vez sea muy exigente con la configuración de la infraestructura y la demanda de recursos.

 

  • IIoT o IoT Industrial: la llaman la industria 4.0 y se refiere a los despliegues IoT en industrias logísticas, petroleras, de transporte, energía, etc. Se encuentra en una etapa bastante temprana y supone muchos desafíos para desarrollos IoT por la complejidad de los aprovisionamientos y conexiones, así como por las dificultades que representan las respuestas en tiempo real y que son críticas en diversas industrias.

Conclusiones

FaaS es una forma accesible y que facilita la creación de soluciones y está orientada a automatizaciones de flujos de trabajo pero que tenemos que explotar más para conocer todo su potencial.

Vamos viendo que se están generando muchos aliados en el mundo IoT como los enfoques Edge, que encajan de forma evidente con el paradigma de computación sin servidor y con desarrollos basados en Cloud.

En definitiva, a día de hoy son enfoques y tecnologías disruptivos pero que van a suponer cambios en los modelos de negocio a medio y largo plazo y que seguramente se conviertan en un obligatorio para las empresas, que se verán una vez más en la necesidad de adaptarse y formar a profesionales capaces de manejar y desarrollar estas infraestructuras.

Lo que personalmente encuentro muy interesante de estos enfoques es el acercamiento que suponen a los datos y a los dispositivos, lo que creo que es muy beneficioso para los desarrolladores porque rompe poco a poco con la especialización, acercando cada vez más el software a la computación, lo que es una oportunidad para crear profesionales – a mi modo de ver – más completos y con más conocimientos.

Fuentes: iotforall.com

¿Quieres garantizar el buen funcionamiento de tu entorno IT? Contáctanos

¿Estas listo para dar el salto? 

Completa los campos y nos pondremos en contacto a la brevedad



    Andrea Martín

    Knowledge Seeker y amante de la cultura ‘Maker’. Consultant en Ingeniería de Software en Raona.

    Compartir en Redes Sociales

    ×