Es probable que hayas oído hablar del SaaS, y puede que hayas oído hablar del PaaS y del IaaS, pero ¿has oído hablar de la Función como Servicio (FaaS)?

El mercado FaaS está creciendo rápidamente. Según Allied Market Research, el mercado tuvo un valor de 3.010 millones de dólares en 2018. Se espera que esta cifra aumente hasta los 24.000 millones de dólares en 2026, lo que significa que el sector crecerá a una tasa de crecimiento anual compuesta (CAGR) del 29,7% entre 2020 y 2026.

Teniendo en cuenta este crecimiento, es seguro decir que la FaaS es un negocio bastante grande.

Pero, ¿qué es la FaaS y cómo funciona? Para ayudarte a responder a esas preguntas, este artículo cubrirá los aspectos básicos de la FaaS, por qué la gente debería (y no debería) utilizar la FaaS, y el estado del mercado global de la FaaS a partir de 2022.

Vamos allá.

¿Qué es la Función como Servicio (FaaS)?

La función como servicio (FaaS) es una forma de computación en la nube que ayuda a los desarrolladores a trabajar mejor al eliminar la necesidad de que mantengan la infraestructura de las aplicaciones. Cuando los desarrolladores aprovechan la FaaS, utilizan una plataforma FaaS para construir, ejecutar y supervisar los paquetes de aplicaciones por ellos.

Llegados a este punto, puede que pienses que FaaS suena a computación sin servidor, y así es. La computación sin servidor permite a los desarrolladores externalizar la gestión de las bases de datos, las pasarelas API, el almacenamiento, la mensajería y otras infraestructuras a un proveedor externo. La FaaS es un tipo de informática sin servidor.

An image showing how serverless computing works
¿Cómo funciona la informática sin servidor? (Fuente: iviewlabs)

Aunque puede que sea la primera vez que lees sobre FaaS, es probable que lo hayas encontrado en la naturaleza. Muchos programas y aplicaciones populares utilizan FaaS, como Alexa de Amazon.

Si estás familiarizado con Alexa, sabrás que puedes ampliar las funciones de Alexa creando «habilidades» Al igual que las aplicaciones, las habilidades permiten a Alexa hacer cosas fuera de su configuración básica. Cosas como buscar notificaciones en su aplicación, iniciar un nuevo chat o reproducir audio personalizado.

Amazon ejecuta todas las habilidades de Alexa a través de AWS Lambda. Cuando construyes una nueva habilidad, la creas como una función que despliegas a través de AWS Lambda. AWS Lambda ejecuta entonces la función por ti y se encarga de las cuestiones de infraestructura, como la seguridad y la gestión de la base de datos.

Entonces, ¿cómo funciona FaaS paso a paso? Vamos a cubrirlo a continuación.

¿Cómo funciona la FaaS?

Para entender la FaaS, necesitas conocer dos términos clave:

  1. «Arquitectura monolítica» = una aplicación autónoma que se ejecuta independientemente de otras aplicaciones. Estas aplicaciones gestionan internamente la interfaz de usuario, las funciones de negocio y la interfaz de datos. El código de la arquitectura monolítica depende de otras piezas de código.
  2. «Arquitectura de microservicios» = una pieza de código que gestiona unas pocas tareas pequeñas. Estos microservicios están separados (aunque forman una aplicación completa en conjunto).

Aquí tienes un diagrama que muestra en qué se diferencian la arquitectura monolítica y la arquitectura de microservicios:

Monolithic architecture vs. microservices architecture
Arquitectura monolítica vs. arquitectura de microservicios (Fuente: BMC)

La principal diferencia en la práctica entre las arquitecturas de microservicios y las monolíticas se observa al ejecutar o actualizar una función. Con una arquitectura monolítica, todo el programa ejecuta la función a la vez (como la actualización de una app, por ejemplo). Con una arquitectura de microservicios, puedes ejecutar la función del microservicio de forma independiente.

La FaaS es lo que ayuda a que las arquitecturas de microservicios funcionen.

Cuando ejecutas cada nueva función de microservicio, sólo tienes que crear la función. Luego, tu proveedor de FaaS toma la función, la ejecuta y se encarga de la gestión de la función a partir de ese momento.

Dado que el FaaS es una herramienta que funciona con tus aportaciones, es crucial tener en cuenta que cada función FaaS sólo debe ser responsable de una tarea. Esta tarea se ejecuta cuando se activa su activador. Por ejemplo, una función que produce una copia del recibo del usuario sólo funcionará si el usuario pulsa «descargar recibo»

FaaS utiliza el «modelo de ejecución basado en eventos», lo que significa que tus funciones sólo se activan cuando se activan. Del mismo modo, no se ejecutan en segundo plano.

Entonces, ¿qué más puede hacer FaaS?

¿Qué servicios incluye la FaaS?

Aunque todos los proveedores son diferentes, los proveedores de FaaS suelen ofrecer estos servicios:

  • Servicios de autenticación. Se encargan de los procesos de inicio de sesión y autenticación de los usuarios de tu programa.
  • Servicios de base de datos. Te ayudan a archivar la información en las bases de datos para que tu programa pueda utilizarla. Los proveedores de FaaS gestionan parte del mantenimiento de las bases de datos por ti.
  • Almacenamiento de archivos. Los proveedores de FaaS pueden almacenar datos y archivos para tu aplicación, para que no tengas que alojarlos en tu propio servidor.
  • Informes. Los proveedores de FaaS pueden vigilar los errores o las amenazas a la seguridad de tu programa y alertarte cuando encuentren algo raro.

En general, estos servicios ayudan a los desarrolladores a trabajar de forma más inteligente. A continuación veremos los pros de la FaaS.

Ventajas del modelo FaaS

Con la FaaS, los desarrolladores no tienen que preocuparse de la infraestructura ni del despliegue, sólo de escribir la lógica de la aplicación. Así, cuando se implementa actualmente, FaaS puede reducir en gran medida el tiempo que se tarda en construir y desplegar un programa.

La construcción y el despliegue también son más fáciles con FaaS. El tiempo de aprovisionamiento sólo lleva unos segundos en lugar de horas. Tampoco estás limitado a lenguajes o recursos concretos. Los proveedores de FaaS pueden ejecutar código en la mayoría de los idiomas, y puedes acelerar el proceso de construcción utilizando las cachés y las bases de datos que ofrece tu proveedor.

El modelo FaaS es muy escalable, y la planificación de la capacidad es mucho más fácil. Si necesitas más recursos, sólo tienes que consultar las instrucciones de tu proveedor de FaaS para ampliar su uso. Muchos proveedores de FaaS ofrecen un escalado horizontal, lo que significa que si tu uso se dispara, el proveedor simplemente te proporcionará recursos adicionales para hacer frente al pico.

Además, no tienes que preocuparte por el mantenimiento, la recuperación de desastres (DR) o la seguridad.

Por último, la FaaS es muy eficiente. Los proveedores sólo te cobran por los recursos que utilizas, así que probablemente pagarás mucho menos por FaaS que por tu propio hardware. Asimismo, sus funciones no se ejecutan en segundo plano, sino que permanecen inactivas. Tampoco tienes que pagar para que estén inactivas.

Entonces, ¿el FaaS es todo ventajas? No del todo.

Contras del modelo FaaS

El modelo FaaS elimina algunos de los mayores retos asociados al desarrollo de programas, pero también requiere que limites sustancialmente tu control. No puedes tomar muchas decisiones sobre el servidor, la seguridad o la base de datos que utiliza tu código. En su lugar, depende de tu proveedor.

De forma similar, la depuración suele ser un poco más difícil, ya que no tienes un control total sobre el sistema. Las pruebas también son difíciles, ya que el código FaaS no siempre se traslada sin problemas al entorno de pruebas.

Además, debes cumplir los estrictos requisitos de tu proveedor de FaaS. Las funciones FaaS sólo pueden completar una acción, así que si no estás acostumbrado a esto, tendrás que cambiar tu forma de escribir código y la de tu equipo. Del mismo modo, es posible que tengas que reescribir el código de las aplicaciones existentes para que se adapte a la implantación de FaaS, por lo que ésta suele ser más adecuada para los programas nuevos que para los antiguos.

Por último, elegir FaaS suele significar comprometerse con un único proveedor a largo plazo. Trabajas con el sistema y los requisitos de tu proveedor cuando construyes tus programas. Naturalmente, cambiar de proveedor puede obligarte a rehacer parte de tu trabajo y a interrumpir potencialmente tus funciones.

Ventajas e inconvenientes

Pros Contras
Despliega el código más rápido

El aprovisionamiento tarda milisegundos

Código en cualquier lenguaje

Recuperación de desastres (DR) automatizada

Rentabilidad

Escalable

Pierde el control sobre el servidor

La depuración es más difícil

Las pruebas duran más tiempo

Estás encerrado en tu proveedor

Debes escribir código apto para FaaS

FaaS vs SaaS, PaaS e IaaS

Ahora que sabes más sobre la FaaS, puede que te preguntes cómo se relaciona con otras opciones de Todo como Servicio (XaaS) como IaaS, SaaS y PaaS.

Los servicios IaaS, PaaS y FaaS tienen propósitos similares: ayudan a las empresas a gestionar las aplicaciones de forma más barata y eficaz. Sin embargo, cada opción ofrece algo diferente.

La infraestructura como servicio (IaaS) te permite alquilar potencia informática (como RAM y CPU). Con IaaS, sigues teniendo que gestionar internamente algunas funciones de la aplicación (como la seguridad).

La Plataforma como Servicio (PaaS) te permite alquilar hardware y herramientas de software para construir tu aplicación. Un ejemplo común es AWS Elastic Beanstalk.

A diferencia de IaaS y PaaS, FaaS te permite alquilar espacio para ejecutar funciones de forma independiente. Esta característica la hace más escalable.

Aquí tienes un breve resumen de cómo funcionan los tres de forma diferente:

An image showing how How FaaS differs from IaaS and PaaS
En qué se diferencia la FaaS de la IaaS y la PaaS (Fuente: thenewstack.io)

El software como servicio (SaaS) no está orientado a la creación de aplicaciones o programas. En cambio, te permite alquilar aplicaciones para que no tengas que construirlas internamente. Hay miles de opciones de SaaS disponibles, desde herramientas de análisis de datos hasta plugins de SEO para WordPress.

Tamaño del mercado, cuota y principales proveedores

El crecimiento del FaaS refleja un cambio general en la forma en que las organizaciones desarrollan nuevos programas.

En décadas anteriores, los desarrolladores creaban grandes sistemas como proyectos de varios años. Hoy, muchas organizaciones favorecen un enfoque de desarrollo de operaciones (DevOps). DevOps prioriza el desarrollo continuo y la mejora de un programa poco a poco.

An image showing how DevOps works
Cómo funciona DevOps (Fuente: Atlassian)

Del mismo modo, las organizaciones utilizan cada vez más los servicios en la nube para hacer las cosas más seguras y eficientes. Según Oracle, las organizaciones pronto almacenarán 600 veces más datos sensibles en la nube.

Puedes ver esta tendencia en los datos recogidos de 7.164 ejecutivos de la alta dirección de Statista. De 2019 a 2021, se redujo el uso de un único servicio de nube pública o privada, y la mayoría de las organizaciones adoptaron varias soluciones en la nube.

A diagram showing the Use of Cloud Technology
Uso de la tecnología en la nube (Fuente: Statista)

Las inversiones en computación en la nube también están creciendo. Otro estudio de Statista sobre cientos de grandes empresas de todo el mundo mostró que el 83% de las empresas encuestadas invirtieron más de 1,2 millones de dólares en computación en la nube pública al año. Esta cifra es superior al 50% de 2019.

La gente está recurriendo a la FaaS porque está preparada para el futuro y es escalable. Asimismo, proporciona una mayor productividad y rendimiento, un tiempo de comercialización más rápido para las aplicaciones y una forma más rentable de producir nuevos programas.

Estas ventajas atraen a muchos sectores, como las organizaciones de la banca (u organizaciones «BFSI»), los bienes de consumo y el comercio minorista, el entretenimiento, las telecomunicaciones, los servicios habilitados para la información y la tecnología (ITES), la sanidad y la fabricación. A continuación, te explicamos cuánto aporta cada industria al mercado de la FaaS:

An image showing what industries use Faas
Qué sectores utilizan la FaaS (Fuente: MarketsandMarkets)

A diferencia del SaaS, no hay miles de proveedores de FaaS entre los que las organizaciones puedan elegir. La gran mayoría de FaaS utiliza soluciones ofrecidas por los principales actores, como AWS Lambda, Azure Functions, IBM Cloud Functions, Google Cloud Functions, Alibaba Cloud y Cloudflare Workers.

Ahora cubriremos cada uno de estos proveedores.

AWS Lambda

Lanzado por Amazon en noviembre de 2014, AWS Lambda es una herramienta FaaS extremadamente popular. En el cuarto trimestre de 2021, el 33% de los usuarios de la nube utilizaban un servicio de AWS.

AWS Lambda homepage
AWS Lambda

AWS Lambda ofrece soporte nativo para muchos lenguajes de programación, como Node.js, C#, Python, Ruby, Go, Java y Powershell. Como mencionamos en «¿Qué es la función como servicio (FaaS)?» Alexa utiliza AWS Lambda para las habilidades.

Características y funciones:

  • Conecta con otras herramientas de AWS
  • Monitoriza el rendimiento de tu programa con Amazon CloudWatch
  • Más de 200 integraciones con herramientas SaaS
  • Puedes desplegar contenedores Docker (AWS introdujo esta función en diciembre de 2020)

Ventajas:

  • Puedes construir tu propio backend utilizando la API Lambda o la puerta de enlace de la API de Amazon
  • Puedes desplegar funciones como imágenes de contenedor
  • Puedes conectarte a bases de datos relacionales con Amazon RDS Proxy
  • Puedes elegir cuánta memoria dedicar a cada función

Contras:

  • Si no usas ya AWS, configurarlo te llevará mucho tiempo y esfuerzo

Funciones de Microsoft Azure

Microsoft Azure Functions es una capacidad de Microsoft Azure, que Microsoft lanzó por primera vez como «Windows Azure» en febrero de 2010. Azure Functions te permite ejecutar código basado en eventos a través de FaaS. En el cuarto trimestre de 2021, el 21% de los usuarios de la nube utilizaban Azure.

Microsoft Azure Functions homepage
Microsoft Azure Functions

Características y funciones:

  • Puedes conectar tus funciones a más de 250 conectores en Azure Logic Apps
  • Admite JavaScript, C#, F#, Powershell, PHP, Python y Java
  • Ofrece muchos tutoriales para los nuevos usuarios
  • Te ayuda a analizar tu programa a través de Azure Application Insights

Ventajas:

  • Azure Functions utiliza un modelo de programación integrado
  • Muy adecuado para los equipos que utilizan DevOps
  • Hay varios planes disponibles

Contras:

  • Azure Functions no es compatible con Node.js o Ruby

Funciones de Google Cloud

Google Cloud es la tercera solución de computación en la nube más popular, por detrás de AWS y Azure. Actualmente tiene una cuota de mercado del 10%. Google Cloud Functions es una función FaaS de Google Cloud, un servicio que ofrece más de 100 productos para una amplia gama de usos.

Google Cloud functions
Google Cloud

Características y funciones:

  • La depuración y el registro están integrados en Google Cloud Functions (a través de CloudTrace y CloudDebugger)
  • Puedes utilizar disparadores desde Google Assistant, Google Cloud, Firebase o cualquier aplicación que utilice HTTP
  • Google Cloud Functions se integra con muchos socios de Google

Ventajas:

  • Los que quieran capacidades multi-nube o híbridas pueden utilizarlo
  • Es de código abierto, por lo que puedes pasar fácilmente a otra plataforma FaaS si lo prefieres
  • Es muy fácil de usar
  • Google proporciona muchos recursos gratuitos a los nuevos usuarios

Contras:

  • Los servicios basados en contenedores de Google Cloud Function son menos avanzados que los de otros proveedores de FaaS

IBM Cloud

IBM Cloud procede de SoftLayer, una plataforma de nube pública que IBM compró en junio de 2013. IBM convirtió la plataforma en Bluemix y la lanzó como herramienta PaaS en julio de 2014. Desde entonces, IBM ha rebautizado el servicio como IBM Cloud y ha ampliado sus funciones a FaaS.

IBM Cloud homepage
IBM Cloud

En el cuarto trimestre de 2021, el 4% de los usuarios de la nube han utilizado IBM Cloud. Se ejecuta en el ecosistema Apache OpenWhisk.

Características y funciones:

  • Puedes buscar contenidos de vídeo
  • Puedes conectar tu programa con otros programas a través de las API de IBM Watson
  • IBM ofrece funciones preconstruidas para algunas tareas comunes
  • Es compatible con Node.js, Python, Swift, PHP, Go, Ruby, Java y .NET Core

Ventajas:

  • Ideal para crear aplicaciones móviles
  • Fácil de aprender a usar
  • Supervisa tu aplicación a través de IBM Cloud Monitoring

Contras:

  • Limita el tiempo de memoria de tu función a diez minutos o 2048 MB

Nube de Alibaba

Alibaba Cloud no es tan conocida como otras opciones de computación en la nube, pero sigue teniendo una cuota de mercado decente del 6%. Lanzada por Alibaba en 2008, Alibaba Cloud está orientada a los negocios en línea y a quienes utilizan otros servicios de Alibaba.

Alibaba Cloud homepage
Alibaba Cloud

FaaS es una de las ofertas de Alibaba Cloud, junto con una Red de Entrega de Contenidos (CDN), almacenamiento de datos y procesamiento de big data.

Características y funciones:

  • Se integra con otros servicios informáticos de Alibaba
  • A prueba de catástrofes, ya que Alibaba aloja las funciones en clusters en múltiples áreas
  • Transcodificación de vídeo
  • Razonamiento de IA
  • Admite Node.js, Python, Java, PHP y C#

Ventajas:

  • Ofrece una opción gratuita para quienes no necesitan ejecutar mucho código
  • Altamente escalable
  • Puedes utilizar muchos tipos de activadores

Contras:

  • Puede ser difícil trasladar las funciones de Alibaba a otro proveedor de FaaS

Cloudflare Workers

Dirigido por Cloudflare, Cloudflare Workers es un sistema FaaS adecuado para los nuevos desarrolladores y para los que buscan ejecutar código casi al instante. Cloudflare Workers ofrece un plan gratuito y precios escalables.

Cloudflare Workers homepage
Cloudflare Workers

Características y funciones:

  • Soporta JavaScript, C++, Rust y C
  • Puedes almacenar imágenes, PDFs y otros archivos en Cloudflare Workers para desplegarlos como activos estáticos
  • A prueba de desastres, ya que Cloudflare Workers utiliza una red global de servidores
  • Se integra con otros productos de Cloudflare

Pros:

  • Es más barato que muchas otras opciones de FaaS
  • Es fácil de aprender a usar para los desarrolladores más nuevos
  • Puedes empezar a trabajar muy rápidamente
  • Cloudflare ofrece tutoriales y recursos detallados que pueden ayudarte a crear tu aplicación

Contras:

  • Cloudflare Workers es menos robusto que otras opciones y se adapta mejor a quienes tienen proyectos a pequeña escala

Las mejores prácticas de Faas

Sí, FaaS es una tecnología, pero también es una mentalidad que los desarrolladores deben adoptar hacia el desarrollo de programas y aplicaciones.

Para sacar el máximo partido a la FaaS, sigue estas buenas prácticas:

  • Recuerda las limitaciones de FaaS. FaaS no es adecuado para todos los programas, y si intentas crear un programa no compatible con FaaS con FaaS, te costará tiempo, esfuerzo y dinero.
  • Ejecuta sólo funciones de una sola acción en FaaS. Si ejecutas funciones con múltiples acciones, interrumpes el entorno aislado en el que las funciones FaaS funcionan mejor. Esta interrupción ralentizará tu aplicación y reducirá su eficiencia.
  • No ejecutes funciones con dependencias. Las dependencias crearán errores y un problema de escalabilidad más adelante.
  • Vigila tu tiempo de carga cuidadosamente. Tu tiempo de carga proviene de tus bibliotecas o funciones que requieren mucha memoria. Un tiempo de carga elevado ralentizará tu programa y acabará frustrando a los usuarios.
  • Reduce el número de conexiones del sistema de gestión de bases de datos relacionales (RDBMS) que utilizas. Estas conexiones aumentarán el tiempo que tardan las funciones en funcionar e introducirán un punto de fallo en tu programa.

¿Necesitas FaaS?

La FaaS es una tecnología innovadora y que cambia las reglas del juego para algunos, pero no funcionará para todos.

Las organizaciones que más aprovechan la FaaS están dispuestas a construir programas con arquitecturas de microservicios en los que cada función sólo hace una cosa. Estas funciones deben trabajar de forma independiente; si son dependientes, tendrás problemas de escalabilidad.

Si quieres construir una aplicación con una arquitectura monolítica o con funciones que se basan unas en otras, el FaaS puede no funcionar bien. Del mismo modo, si no quieres comprometerte con un único proveedor a largo plazo, la FaaS podría ser una opción poco acertada.

Por supuesto, puedes seguir aprovechando la tecnología de la nube sin FaaS. Podrías, por ejemplo, invertir en PaaS o IaaS para externalizar algunas de las funciones de tu aplicación a la nube. Esta opción te proporcionaría algunas de las ventajas de coste y eficiencia de la computación en nube, pero no tendrías que construir tu programa dentro de las restricciones del modelo FaaS.

Alternativamente, si no necesitas construir un programa que haga algo muy nicho o especializado, considera invertir en una herramienta SaaS. Algunas herramientas SaaS son incluso de código abierto, por lo que puedes adaptar una herramienta existente a tus necesidades.

Resumen

La FaaS no es una jerga tecnológica ni una nueva tendencia. Es una tecnología escalable que deberías esperar ver más en la próxima década.

Explicar la FaaS puede parecer a veces difícil, pero la FaaS no es más que un servicio que permite a los desarrolladores escribir y ejecutar código utilizando una infraestructura mantenida por otra persona. Muchos servicios que utilizas habitualmente, como Alexa, utilizan FaaS. Entre los proveedores habituales de FaaS están IBM Cloud Functions, AWS Lambda, Alibaba Cloud, Google Cloud Functions y Microsoft Azure Functions.

Aunque la FaaS es muy eficaz para algunas empresas, no se adapta a todo el mundo. FaaS funciona mejor para ejecutar código aislado y sin estado que realiza una única función.

Nos gustaría cederte el micrófono (o el teclado). ¿Cómo utilizas la FaaS en tu empresa, y tienes algún consejo para otros que exploren la tecnología por primera vez? Cuéntanoslo en los comentarios de abajo.

Matteo Duò Kinsta

Editor en jefe de Kinsta y consultor de marketing de contenidos para desarrolladores de plugins de WordPress. Conéctese con Matteo en Twitter.