Existe mucha confusión en torno al concepto de “computación sin servidor”. Esto podría deberse a que su nombre es erróneo. No se trata ni de servidores ni de informática. Al menos no en el sentido tradicional de la palabra en que la utilizan la mayoría de los profesionales de TI.
Es mucho más adecuado denominarlo "sin servidor" como "funciones como servicio" (FaaS) porque eso es lo que ofrece. En el mismo sentido que FaaS no tiene servidor, también lo es SaaS y, se podría concluir correctamente, PaaS. Esto se debe a que el servidor (el cómputo) queda fuera de la ecuación desde la perspectiva de su consumidor, quien generalmente es un desarrollador. Los recursos computacionales (servidor, red) están ocultos, se aprovisionan, administran y escalan automáticamente a través de una red de automatización y orquestación gobernada en última instancia por el proveedor del servicio. Lo pagas, pero nunca tienes que verlo.
FaaS sin servidor no reemplaza a SaaS, ni a PaaS, ni a la nube en general. Es otra opción que se suma a los modelos existentes y que ofrece a los desarrolladores la interesante capacidad de invocar funciones a pedido. Está impulsado por eventos, lo que significa que la función se activa mediante un evento. Ese evento suele ser la invocación de una llamada a la API, que se presenta en forma de una solicitud HTTP con una URI muy específica. Sí, una llamada a la API.
El caso de uso más citado para FaaS es el procesamiento de imágenes o vídeos. Esto se debe a que los recursos necesarios son a menudo impredecibles, pero en frecuencia y capacidad. FaaS proporciona un medio asequible y eficiente para procesar dichos medios llamada por llamada. Otro ejemplo podría estar relacionado con el espacio de IoT, donde las acciones se activan por eventos que ocurren ya sea a través de una aplicación de controlador o desde el objeto en sí. Y siempre está el caso de uso del backend de API , que a menudo tiene más sentido para la mayoría de las personas que cualquier otro caso de uso porque las API a menudo se describen como URI que invocan funciones. Independientemente de lo que esté haciendo la función, se ejecuta solo cuando la activa un evento específico y se espera que sea una función única y aislada.
Ésta no es una nube como estamos acostumbrados a verla o a hablar de ella. Esto se debe a que la nube (IaaS) tiene que ver con infraestructura y operaciones, mientras que FaaS (y PaaS y SaaS) tienen que ver con aplicações. Están pensados como un entorno de desarrollo en el que los desarrolladores pueden implementar código para realizar algunas tareas como parte de una iniciativa de aplicação más grande. ¿Es posible crear una aplicación a partir de múltiples implementaciones de FaaS? Absolutamente. De hecho, en este sentido, FaaS es a SaaS lo que los microservicios son a los monolitos.
Pero ese es exactamente el punto. FaaS se trata de aplicações, no de servidores. No se puede implementar una nube con FaaS, pero sí se puede desarrollar una aplicação. No es posible trasladar una aplicación a un entorno “sin servidor”. Hay que deconstruirlo y luego reconstruirlo, es decir, rediseñarlo como una colección de FaaS.
Las combinaciones (¿o son permutaciones?) son extensas. Se podría incorporar FaaS junto con PaaS desde una aplicación implementada en IaaS. El IaaS y el PaaS pueden ser locales, mientras que el FaaS es público.
El problema con SaaS, PaaS y FaaS es que nunca ves los "servidores". Esto no es cierto en IaaS, donde llamamos a los servidores “instancias” y estamos obligados a administrarlos y mantenerlos. Esto se debe a que IaaS, ya sea local o público, tiene como objetivo la entrega de infraestructura y operaciones, no de aplicações. Eso siempre ha sido cierto, pero hemos podido ignorarlo durante la última década porque “servidor == aplicação” ha sido la norma durante mucho tiempo.
Pero con el auge de los microservicios y las API, y ahora FaaS, ya no podemos operar en un modo donde “servidor == aplicação” porque simplemente ya no es cierto.
Al final del día, FaaS no se trata de servidores, ni siquiera de la nube (en el sentido en que la entendemos hoy en día). Pero es un cambio significativo en cómo podemos diseñar y desarrollar aplicações.