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

La función como servicio (FaaS) es un modelo de computación en la nube en el que desarrollas pequeños fragmentos de código modular llamados funciones, y un proveedor de la nube los ejecuta en respuesta a eventos específicos. En este modelo, te enfocas por completo en la lógica del código, mientras que el entorno de ejecución sin servidores administra la infraestructura. El proveedor de 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 más antiguos, por lo general, administras un servidor que se ejecuta de forma continua, incluso cuando nadie usa tu aplicación. Con FaaS, la plataforma ejecuta tu código solo cuando un evento específico lo activa. Esto permite una forma eficiente de crear aplicaciones, ya que solo consumes recursos cuando es necesario.

Comparación de FaaS, PaaS y IaaS

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

  • FaaS se enfoca 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 carga de un archivo. La plataforma controla el escalamiento automáticamente, a menudo hasta cero cuando está inactiva.
  • La PaaS proporciona una plataforma para crear y ejecutar aplicaciones completas. Si bien PaaS también quita la necesidad de administrar hardware y sistemas operativos, normalmente mantiene tu aplicación en ejecución continua, esperando solicitudes de los usuarios. Es más adecuado para aplicaciones web completas que para activadores de eventos individuales.
  • La IaaS ofrece el mayor control, pero requiere la mayor administración. Alquilas máquinas virtuales (VMs) y almacenamiento, pero eres responsable de administrar el sistema operativo, los entornos de ejecución y el middleware.

Comparación de modelos de servicio 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 (VMs)

Escalabilidad

Escalamiento instantáneo por solicitud (incluido a cero)

Más lento, se escala según las reglas configuradas

Ajuste de escalamiento automático manual o preconfigurado

Modelo de precios

Pago por tiempo de ejecución (milisegundos)

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

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

Mantenimiento

Ninguna (el proveedor administra todo)

Menor (el proveedor administra el SO y el entorno de ejecución)

Mayor (administras el SO, las actualizaciones y los parches)

Ideal para

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

Apps web, servicios de larga duración

Apps heredadas, infraestructura personalizada compleja

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 (VMs)

Escalabilidad

Escalamiento instantáneo por solicitud (incluido a cero)

Más lento, se escala según las reglas configuradas

Ajuste de escalamiento automático manual o preconfigurado

Modelo de precios

Pago por tiempo de ejecución (milisegundos)

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

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

Mantenimiento

Ninguna (el proveedor administra todo)

Menor (el proveedor administra el SO y el entorno de ejecución)

Mayor (administras el SO, las actualizaciones y los parches)

Ideal para

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

Apps web, servicios de larga duración

Apps heredadas, infraestructura personalizada compleja

Cómo trabaja la función como servicio

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

  1. Implementación 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 un usuario que hace clic en un botón, un archivo que se sube al almacenamiento o un mensaje que llega a una cola.
  3. Asignación de recursos: El proveedor de servicios en la nube reconoce el evento y aprovisiona de inmediato 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 se te factura solo por los milisegundos que se ejecutó tu código.

Casos de uso comunes de FaaS

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

Puedes dividir las aplicaciones complejas en piezas pequeñas e independientes que se comunican a través de eventos.

FaaS funciona bien para tareas como cambiar el tamaño de una imagen inmediatamente después de que un usuario la sube o limpiar los datos a medida que llegan.

Puedes usar funciones para potenciar la lógica detrás de las apps para dispositivos móviles o procesar datos de dispositivos de Internet de las cosas (IoT).

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

Puedes reemplazar las tareas programadas tradicionales por funciones que se ejecutan en momentos específicos para realizar tareas de mantenimiento o generar informes.

Ventajas clave de adoptar FaaS

Adoptar la tecnología de nube FaaS ofrece varios beneficios para los desarrolladores y las empresas.

Escalamiento automático e instantáneo

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

Control de costos superior (pago por uso)

Solo pagas cuando se ejecuta tu código, lo que puede generar ahorros de costos significativos en comparación con el pago de servidores inactivos.

Aumento de la velocidad de los desarrolladores

Los desarrolladores pueden escribir código y, luego, implementarlo rápidamente sin perder tiempo en la administración de servidores o la configuración de la infraestructura.

Enfócate en el código de la aplicación, no en la administración de la infraestructura

Los equipos pueden dedicar su energía a crear valor para los clientes en lugar de aplicar parches a los servidores o administrar sistemas operativos.

Alta disponibilidad y resiliencia

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

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

Uno de los problemas más comunes que enfrentan los desarrolladores con FaaS es el "inicio en frío". Cuando tu función no se ejecuta por un tiempo, el proveedor de 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, llamado inicio en frío, puede ralentizar tu aplicación.

Cómo reducir los inicios 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 quita las bibliotecas o dependencias grandes que no sean estrictamente necesarias. Cuanto más pequeña sea tu función, más rápido se cargará.
  2. Usa carga diferida: Estructura tu código de manera que solo cargue 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 instancias mínimas: La mayoría de los principales proveedores de servicios en la nube te permiten establecer un recuento de “instancias mínimas”. Esto mantiene al menos una instancia de tu función en espera y lista para funcionar en todo momento, 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 escribir funciones sensibles a la latencia en un lenguaje más ligero.

Resuelve tus desafíos más difíciles con Google Cloud

Los clientes nuevos obtienen $300 en créditos gratuitos que pueden usar en Google Cloud.

FaaS y Cloud Run Functions

Función como servicio describe un modelo de computación en la nube, y Cloud Run Functions es el producto de Google Cloud que da vida a este concepto. Funciona como una solución FaaS escalable y con pago por uso que te permite ejecutar código sin tener que administrar servidores.

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

Este servicio combina la simplicidad 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 servidores, puedes explorar estos recursos.

Da el siguiente paso

Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.

Google Cloud