¿Qué es la función como servicio (FaaS)?

La función como servicio (FaaS) es un modelo de cloud computing en el que desarrollas pequeños fragmentos de código modular llamados funciones, y un proveedor de servicios en la nube los ejecuta en respuesta a eventos específicos. En este modelo, te centras por completo en la lógica del código, mientras que el tiempo de ejecución sin servidor gestiona la infraestructura. El proveedor de servicios en la nube se encarga del hardware físico, el sistema operativo y el software del servidor web.

Esto difiere de las aplicaciones tradicionales basadas en servidores o las arquitecturas monolíticas. En esos modelos antiguos, normalmente se gestiona un servidor que se ejecuta de forma continua, incluso cuando nadie usa la aplicación. Con FaaS, la plataforma ejecuta tu código solo cuando un evento específico lo activa. Esto permite crear aplicaciones de forma eficiente, ya que solo se consumen recursos cuando es necesario.

Comparación de FaaS, PaaS e IaaS

Es útil entender cómo se compara FaaS con otros modelos de servicios en la nube, como plataforma como servicio (PaaS) e infraestructura como servicio (IaaS). Aunque FaaS pertenece a la categoría más amplia de "sin servidor", en la que el proveedor gestiona los servidores, ofrece un nivel de abstracción distinto. La computación sin servidor abarca cualquier servicio (como bases de datos, almacenamiento o computación) en el que el proveedor gestiona los servidores. FaaS es específicamente la parte de computación sin servidor que ejecuta código en respuesta a eventos.

  • FaaS se centra en el código basado en eventos. Implementas una sola función que realiza una tarea específica en respuesta a un evento, como la subida de un archivo. La plataforma se encarga de escalar automáticamente, a menudo hasta cero cuando está inactiva.
  • PaaS proporciona una plataforma para crear y ejecutar aplicaciones completas. Aunque la PaaS también elimina la necesidad de gestionar hardware y sistemas operativos, normalmente mantiene tu aplicación en funcionamiento continuo, a la espera de las peticiones de los usuarios. Es más adecuado para aplicaciones web completas que para activadores de eventos individuales.
  • IaaS ofrece el máximo control, pero requiere la mayor gestión. Alquilas máquinas virtuales y almacenamiento, pero tienes la responsabilidad de gestionar el sistema operativo, los entornos de ejecución y el middleware.

Comparación de modelos de servicios en la nube

Función

FaaS (función como servicio)

PaaS (plataforma como servicio)

IaaS (infraestructura como servicio)

Unidad principal

Una sola función (fragmento de código pequeño)

Una aplicación completa

Máquinas virtuales (VM)

Escalabilidad

Escalado instantáneo por solicitud (incluso a cero)

Más lento, se escala en función de las reglas configuradas

Autoescalado manual o preconfigurado

Modelo de precios

Pago por tiempo de ejecución (milisegundos)

Paga por los recursos en ejecución (tiempo de funcionamiento)

Paga por los recursos asignados (tamaño o tiempo)

Mantenimiento

Ninguna (el proveedor se encarga de todo)

Inferior (el proveedor gestiona el SO o el entorno de ejecución)

Mayor (tú gestionas el SO, las actualizaciones y los parches)

Usos recomendados

Tareas basadas en eventos, código de pegamento, procesamiento de datos

Aplicaciones web y servicios de larga duración

Aplicaciones antiguas e infraestructuras personalizadas complejas

Función

FaaS (función como servicio)

PaaS (plataforma como servicio)

IaaS (infraestructura como servicio)

Unidad principal

Una sola función (fragmento de código pequeño)

Una aplicación completa

Máquinas virtuales (VM)

Escalabilidad

Escalado instantáneo por solicitud (incluso a cero)

Más lento, se escala en función de las reglas configuradas

Autoescalado manual o preconfigurado

Modelo de precios

Pago por tiempo de ejecución (milisegundos)

Paga por los recursos en ejecución (tiempo de funcionamiento)

Paga por los recursos asignados (tamaño o tiempo)

Mantenimiento

Ninguna (el proveedor se encarga de todo)

Inferior (el proveedor gestiona el SO o el entorno de ejecución)

Mayor (tú gestionas el SO, las actualizaciones y los parches)

Usos recomendados

Tareas basadas en eventos, código de pegamento, procesamiento de datos

Aplicaciones web y servicios de larga duración

Aplicaciones antiguas e infraestructuras personalizadas complejas

Cómo funcionan las funciones como servicio

El flujo de trabajo de FaaS puede ser sencillo y eficiente. A menudo, se basa en un modelo basado en eventos en el que las acciones activan tu código.

  1. Despliegue de código: escribes un pequeño fragmento de código o una función que realiza una sola tarea y lo subes a tu proveedor de servicios en la nube.
  2. Activación de eventos: se produce un evento, como que un usuario haga clic en un botón, que se suba un archivo al almacenamiento o que llegue un mensaje a una cola.
  3. Asignación de recursos: el proveedor de servicios en la nube reconoce el evento y aprovisiona al instante el entorno de ejecución necesario.
  4. Ejecución de la función: tu código se ejecuta, realiza su tarea y produce un resultado, como procesar datos o enviar una notificación.
  5. Desactivación y facturación: una vez que se completa la tarea, los recursos se liberan de inmediato y solo se te factura por los milisegundos que se ha ejecutado tu código.

Casos prácticos habituales de FaaS

FaaS es versátil y se adapta bien a muchas arquitecturas de aplicaciones modernas.

Puedes dividir las aplicaciones complejas en partes pequeñas e independientes que se comunican mediante eventos.

FaaS es una buena opción para tareas como cambiar el tamaño de una imagen inmediatamente después de que un usuario la suba o limpiar los datos a medida que llegan.

Puedes usar funciones para implementar la lógica de las aplicaciones móviles o procesar datos de dispositivos del Internet de las cosas (IoT).

Las tareas que se pueden dividir en muchos trabajos pequeños y simultáneos, como la codificación de vídeo, se ejecutan de forma muy eficiente en FaaS.

Puedes sustituir las tareas programadas tradicionales por funciones que se ejecuten en momentos concretos para realizar tareas de mantenimiento o generar informes.

Ventajas clave de adoptar FaaS

Adoptar la tecnología en la nube FaaS ofrece varias ventajas para los desarrolladores y las empresas.

Escalado automático e instantáneo

Tu aplicación puede gestionar un aumento repentino del tráfico, desde un usuario hasta miles, sin que tengas que configurar nada manualmente.

Control de costes superior (pago por uso)

Solo pagas cuando se ejecuta tu código, lo que puede suponer un ahorro de costes significativo en comparación con el pago de servidores inactivos.

Mayor velocidad de desarrollo

Los desarrolladores pueden escribir código y desplegarlo rápidamente sin tener que dedicar tiempo a la gestión de servidores ni a la configuración de la infraestructura.

Céntrate en el código de la aplicación, no en la gestión de la infraestructura

Los equipos pueden dedicar sus esfuerzos a crear valor para los clientes en lugar de parchear servidores o gestionar sistemas operativos.

Alta disponibilidad y resiliencia

Las plataformas FaaS suelen ejecutar tu código en varias zonas, por lo que, si falla una zona, tu aplicación sigue funcionando.

Problema común de los desarrolladores: "arranque en frío"

Uno de los problemas más comunes a los que se enfrentan los desarrolladores con FaaS es el arranque en frío. Cuando tu función no se ha ejecutado durante un tiempo, el proveedor de servicios en la nube desactiva el entorno para ahorrar recursos. La próxima vez que un evento active esa función, habrá un pequeño retraso mientras el sistema configura el entorno y carga tu código. Este retraso, denominado "arranque en frío", puede ralentizar tu aplicación.

Cómo reducir los arranques en frío

Si tu aplicación requiere respuestas instantáneas, puedes seguir estos pasos para minimizar la latencia.

  1. Reduce el tamaño de tu código: revisa tu código y elimina las bibliotecas o dependencias grandes que no sean estrictamente necesarias. Cuanto más pequeña sea la función, más rápido se cargará.
  2. Usa la carga diferida: estructura tu código de forma que solo cargue las variables o conexiones pesadas cuando realmente se necesiten en la lógica de la función, en lugar de cargarlas inmediatamente cuando se inicia la función.
  3. Configura un número mínimo de instancias: la mayoría de los principales proveedores de servicios en la nube te permiten definir un número mínimo de instancias. De esta forma, siempre habrá al menos una instancia de tu función activa y lista para usarse, lo que elimina el retraso de inicio.
  4. Elige un entorno de ejecución más rápido: algunos lenguajes de programación, como Go o Python, suelen iniciarse más rápido que otros, como Java. Si la velocidad es fundamental, considera la posibilidad de escribir las funciones sensibles a la latencia en un lenguaje más ligero.

Soluciona los retos empresariales que se te presenten con Google Cloud

Los nuevos clientes reciben 300 USD en crédito sin coste para invertirlos en Google Cloud.

FaaS y Cloud Run Functions

La función como servicio describe un modelo de cloud computing, y Cloud Run functions es el producto de Google Cloud que hace realidad este concepto. Es una solución de FaaS escalable y de pago por uso que te permite ejecutar código sin necesidad de gestionar servidores.

Si eliges las funciones de Cloud Run, adoptas un enfoque sin servidor en el que Google Cloud se encarga de la infraestructura subyacente. Tú proporcionas el código y la plataforma se encarga del entorno de ejecución, las actualizaciones del sistema operativo y las funciones de escalado automático. Esta integración te permite desplegar funciones de un solo propósito que responden a eventos, como solicitudes HTTP o cambios en los datos, sin aprovisionar una sola máquina virtual.

Este servicio combina la sencillez de la implementación de funciones con la potencia de la tecnología de Cloud Run. Los desarrolladores pueden crear aplicaciones basadas en eventos con lenguajes como Python, Node.js, Go, Java, .NET y Ruby. Como se ejecuta en la sólida infraestructura de Google, tus funciones pueden escalar de 0 a miles de instancias automáticamente para satisfacer la demanda.

Recursos adicionales

Para obtener más información sobre la función como servicio y la computación sin servidor, puedes consultar estos recursos.

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito sin coste y más de 20 productos Always Free.

Google Cloud