¿Qué es FaaS (Function-as-a-Service)?
FaaS facilita a los desarrolladores de aplicaciones en la nube ejecutar y gestionar aplicaciones de microservicios.
Suscríbase al boletín de IBM
Fondo negro y azul con formas geométricas interconectadas
¿Qué es FaaS?

FaaS, o Function-as-a-Service, es un servicio de computación en la nube que permite a los clientes ejecutar código en respuesta a eventos, sin gestionar la infraestructura compleja típicamente asociada con la creación y el lanzamiento de microservicios aplicaciones.

Alojar una aplicación de software en Internet normalmente requiere aprovisionar y gestionar un servidor físico o virtual, así como gestionar un sistema operativo y procesos de alojamiento de servidor web. Con FaaS, el proveedor de servicios en la nube maneja automáticamente el hardware físico, el sistema operativo de la máquina virtual y la gestión del software del servidor web. Esto permite a los desarrolladores centrarse únicamente en funciones individuales en el código de su aplicación.

 

FaaS vs. sin servidor

A menudo se confunde FaaS y sin servidor, pero lo cierto es que FaaS es en realidad un subconjunto de las funciones sin servidor.

Estas se centran en cualquier categoría de servicio, ya sea informática, almacenamiento, base de datos, mensajería, gateways de API, etc., donde la configuración, la gestión y la facturación de los servidores son invisibles para el usuario final.

Por otro lado, mientras que es la tecnología más central de las arquitecturas sin servidor, FaaS se centra en el paradigma informático basado en eventos, donde el código de aplicación o los contenedores solo se ejecutan en respuesta a eventos o solicitudes.

Beneficios de FaaS

FaaS es una herramienta valiosa si busca migrar aplicaciones a la nube de manera eficiente y rentable. Los siguientes son algunos beneficios que disfrutará:

  • Concéntrese más en el código, no en la infraestructura: con FaaS, puede dividir el servidor en funciones que se pueden escalar de forma automática e independiente para que no tenga que gestionar la infraestructura. Esto le permite concentrarse en el código de la aplicación y puede reducir drásticamente el tiempo de comercialización.

  • Pague solo por los recursos que utiliza, cuando los utiliza: con FaaS, solo paga cuando ocurre una acción. Cuando finaliza la acción, todo se detiene: no se ejecuta ningún código, no se inactiva el servidor ni se incurre en costos. Por lo tanto, FaaS es rentable, especialmente para cargas de trabajo dinámicas o tareas programadas. FaaS también ofrece un costo total de propiedad superior para escenarios de alta carga.

  • Escale hacia arriba o hacia abajo automáticamente: con FaaS, las funciones se escalan de forma automática, independiente e instantánea, según sea necesario. Cuando la demanda cae, FaaS se reduce automáticamente.

  • Obtenga todos los beneficios de una infraestructura robusta en la nube: FaaS ofrece una alta disponibilidad inherente, porque se distribuye en múltiples zonas de disponibilidad por región geográfica y se puede implementar en cualquier número de regiones sin costos incrementales.
Principios y mejores prácticas de FaaS

Existen varias prácticas recomendadas que puede seguir para que el uso de FaaS sea más fácil de desplegar y más efectivo:

  • Haga que cada función realice una sola acción: las funciones FaaS deben diseñarse para realizar una única tarea en respuesta a un evento. Haga que el alcance de su código sea limitado, eficiente y ligero para que las funciones se carguen y ejecuten rápidamente.

  • No haga que las funciones llamen a otras funciones: el valor de FaaS está en el aislamiento de las funciones. Demasiadas funciones aumentarán sus costos y eliminarán el valor del aislamiento de sus funciones.

  • Use la menor cantidad posible de bibliotecas en sus funciones: usar demasiadas bibliotecas puede ralentizar las funciones y dificultar su escalamiento.
Casos de uso de FaaS

Debido a que permite que las transacciones se aíslen y escalen fácilmente, FaAs es ideal para cargas de trabajo de gran volumen e increíblemente paralelas. También se puede utilizar para crear sistemas backend o para actividades, como procesamiento de datos, conversión de formato, codificación o agregación de datos.

FaaS también es una buena herramienta para aplicaciones web, backends, procesamiento de datos/flujos, o para crear chatbots en línea o backends para dispositivos IoT. FaaS puede ayudarle a gestionar y utilizar servicios de terceros. Si está considerando el desarrollo de aplicaciones de Android, por ejemplo, puede adoptar un enfoque FaaS para mantener sus costos bajo control. Debido a que solo se le cobra cuando su aplicación se conecta a la nube para una función específica, como el procesamiento por lotes, los costos pueden ser considerablemente más bajos que si se usara un enfoque tradicional.

FaaS también puede impulsar drásticamente el rendimiento informático. Por ejemplo, dos estudiantes recientemente trabajaron con ingenieros de IBM para explorar cómo aprovechar las funciones de IBM Cloud para simulaciones de Monte Carlo (métodos matemáticos utilizados para estimar los resultados futuros de ciertos eventos difíciles de predecir) para estimar los precios de las acciones. Las simulaciones de Monte Carlo se consideran una importante carga de trabajo informática de alto rendimiento. La combinación de las funciones de Monte Carlo e IBM Cloud permitió al equipo ejecutar cálculos a gran escala y enfocarse en la lógica empresarial. Con FaaS, el equipo completó toda una simulación de Monte Carlo en aproximadamente 90 segundos con 1000 invocaciones simultáneas. Comparativamente, ejecutar el mismo flujo en una computadora portátil con cuatro núcleos de CPU tomó 247 minutos y casi el 100 % de utilización de la CPU.

Para ver más ejemplos de casos de uso de FaaS, consulte "Un resumen de las ventajas clave que ofrece IBM Cloud Functions".

FaaS vs. PaaS, contenedores y MV

FaaS, PaaS (Platform-as-a-Service)contenedoresmáquinas virtuales (MV) desempeñan un papel fundamental en el ecosistema sin servidor. Debido a que FaaS es el elemento más central y definitivo de la pila sin servidor, vale la pena explorar cómo FaaS difiere de otros modelos comunes de cómputo en el mercado actual en todos los atributos clave:

  • Tiempo de aprovisionamiento: milisegundos, en comparación con minutos y horas para los otros modelos.

  • Administración continua: ninguna, en comparación con una escala por nivel de fácil a difícil para PaaS, contenedores y MV, respectivamente.

  • Escalado elástico: cada acción siempre se escala de manera instantánea e inherente, en comparación con los otros modelos que ofrecen escalado automático, pero lento, que requiere un ajuste cuidadoso de las reglas de escalado automático.

  • Planificación de capacidad: ninguna, en comparación con los otros modelos que requieren una combinación de escalado automático y cierta planificación de capacidad.

  • Conexiones y estados persistentes: la capacidad limitada para persistir las conexiones y el estado debe mantenerse en un servicio/recurso externo. Los otros modelos pueden aprovechar http, mantener un socket o conexión abierta durante largos periodos, y almacenar el estado en la memoria entre llamadas.

  • Mantenimiento: el proveedor de FaaS administra todo el mantenimiento. Esto también es cierto para PaaS; los contenedores y las MV requieren un mantenimiento significativo que incluye actualización/gestión de sistemas operativos, imágenes de contenedores, conexiones, etc.

  • Alta disponibilidad (HA, siglas en inglés de High availability) y recuperación ante desastres (DR, siglas en inglés de disaster recovery): una vez más, la HA es inherente al modelo FaaS sin esfuerzo ni costo adicional. Los otros modelos requieren costos adicionales y esfuerzo de gestión. En el caso de MV y contenedores, la infraestructura se puede reiniciar automáticamente.

  • Utilización de recursos: los recursos nunca están inactivos; solo se invocan cuando se solicita. Todos los demás modelos presentan al menos cierto grado de capacidad inactiva.

  • Límites de recursos: FaaS es el único modelo que tiene límites de recursos en el tamaño del código, activaciones simultáneas, memoria, duración de la ejecución, etc.

  • Granularidad de carga y facturación: por bloques de 100 milisegundos, en comparación con la hora (y a veces minuto) de otros modelos.
Kubernetes/Knative y FaaS

Kubernetes y KNative son una implementación de "plomería" detrás de FaaS. Kubernetes es una herramienta de orquestación de contenedores de código abierto que es fundamental para la gestión de aplicaciones en la nube. KNative le permite ejecutar un clúster sin servidor dentro de Kubernetes.

La combinación de KNative y Kubernetes significa que puede aprovechar las funciones de Kubernetes, como monitoreo, seguridad, registro y autenticación, y combinarlas con beneficios nativos, como compilación automatizada de contenedores, portabilidad completa y trabajo en entornos híbridos.

Los creadores de esta tecnología creían que los desarrolladores no deberían tener que elegir entre los contenedores y funciones sin servidor al crear aplicaciones en la nube. El objetivo era aumentar la disponibilidad y la coherencia de los contenedores con el potente escalado y el acceso bajo demanda de funciones sin servidor.

Mire este video para obtener más información sobre Knative:

Soluciones relacionadas
IBM Cloud Code Engine

Ejecute imágenes de contenedores, trabajos por lotes o código fuente como cargas de trabajo sin servidor, sin necesidad de dimensionar, desplegar, establecer redes o escalar. 

Conozca BM Cloud Code Engine
IBM Cloud Functions

Desarrolle un código ligero que se ejecute de manera escalable bajo demanda con esta plataforma de programación de FaaS.

Conozca las funciones de IBM Cloud
Recursos ¿Qué es sin servidor?

Sin servidor es un modelo de desarrollo y ejecución de aplicaciones en la nube que permite a los desarrolladores crear y ejecutar código de aplicación sin aprovisionar ni gestionar servidores o infraestructura de backend.

¿Qué son los contenedores?

Los contenedores son unidades ejecutables de software que empaquetan el código de la aplicación junto con sus dependencias de bibliotecas, y pueden ejecutarse en cualquier lugar, ya sea en el escritorio, en la TI tradicional o en la nube.

¿Qué es PaaS?

PaaS, o Platform-as-a-Service, proporciona una plataforma en la nube completa, flexible y rentable para desarrollar, ejecutar y gestionar aplicaciones.

Dé el siguiente paso

IBM® Cloud Code Engine, una plataforma sin servidor totalmente gestionada, le permite centrarse en escribir código, no en gestionar la infraestructura. Lleve sus imágenes de contenedores, trabajos por lotes o código fuente, y permita que IBM Cloud Code Engine gestione y proteja la infraestructura subyacente por usted. No es necesario dimensionar, desplegar ni escalar clústeres de contenedores por su cuenta. Y tampoco se requieren habilidades de red.

Conozca BM Cloud Code Engine