¿Qué es FaaS (función como servicio)?
La FaaS facilita a los desarrolladores de aplicaciones en la nube la ejecución y gestión de aplicaciones de microservicios.
Suscríbase al boletín de IBM
Fondo negro y azul con formas geométricas interconectadas
¿Qué es FaaS?

La FaaS, o función como servicio, es un servicio de cloud computing que permite a los clientes ejecutar código en respuesta a sucesos, sin gestionar la compleja infraestructura asociada normalmente a la creación y lanzamiento de aplicaciones de microservicios.

El alojamiento de una aplicación de software en internet normalmente requiere suministrar y gestionar un servidor virtual o físico y gestionar un sistema operativo y procesos de alojamiento de servidores web. Con la FaaS, el proveedor de servicios en la nube gestiona automáticamente el hardware físico, el sistema operativo de máquinas virtuales 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 frente a un modelo sin servidor

A menudo se confunden las funciones como servicio (FaaS) y sin servidor, pero lo cierto es que la FaaS es en realidad un subconjunto de las funciones sin servidor.

La opción sin servidor se centra en cualquier categoría de servicio, ya sea de cálculo, almacenamiento, base de datos, mensajería, pasarelas de API, etc., donde la configuración, la gestión y la facturación de los servidores son invisibles para el usuario final.

La FaaS, por otro lado, aunque quizás sea la tecnología más central en las arquitecturas sin servidor, se centra en el paradigma del cálculo dirigido por sucesos en el que el código de la aplicación, o contenedores, solo se ejecuta en respuesta a sucesos o peticiones.

Beneficios de la FaaS

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

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

  • Pague solo por los recursos que utilice, cuando los utilice: con la FaaS, solo pagará cuando se produzca 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 costes. Por lo tanto, la FaaS es rentable, especialmente para cargas de trabajo dinámicas o tareas programadas. La FaaS también ofrece un coste total de propiedad superior para escenarios de alta carga.

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

  • Obtenga todos los beneficios de una infraestructura de nube sólida: la FaaS ofrece una alta disponibilidad inherente porque se extiende por varias zonas de disponibilidad por región geográfica y se puede implementar en cualquier número de regiones sin costes incrementales.
Principios y buenas prácticas de la FaaS

Hay varias prácticas recomendadas que puede seguir para que el uso de la FaaS sea más eficaz y fácil de implementar:

  • Haga que cada función realice solo una acción: las funciones de la FaaS deben diseñarse para realizar un solo trabajo en respuesta a un suceso. Haga que el alcance de su código sea limitado, eficiente y liviano para que las funciones se carguen y ejecuten rápidamente.

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

  • Utilice la menor cantidad posible de bibliotecas en sus funciones: el uso de demasiadas bibliotecas puede ralentizar las funciones y hacerlas más difíciles de escalar.
Casos prácticos de FaaS

Dado que permite aislar y escalar fácilmente las transacciones, la FaaS es buena para cargas de trabajo de gran volumen y lamentablemente paralelas. También se puede utilizar para crear sistemas backend o para actividades como proceso de datos, conversión de formatos, codificación o agregación de datos.

La FaaS también es una buena herramienta para aplicaciones web, backends, proceso de datos/flujos o para crear chatbots en línea o backends para dispositivos IoT. La FaaS puede ayudarle a gestionar y utilizar servicios de terceros. Por ejemplo, si está planteándose el desarrollo de aplicaciones para Android, puede adoptar un enfoque de FaaS para mantener sus costes 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 proceso por lotes, los costes pueden ser considerablemente más bajos de lo que utilizaría un método tradicional.

La FaaS también puede aumentar drásticamente el rendimiento de cálculo. Por ejemplo, dos estudiantes han trabajado hace poco con ingenieros de IBM para explorar cómo aprovechar IBM Cloud Functions para simulaciones de Monte Carlo (métodos matemáticos utilizados para estimar los resultados futuros de ciertos sucesos difíciles de pronosticar) para estimar los precios de acciones. Las simulaciones de Monte Carlo se consideran una importante carga de trabajo informática de alto rendimiento. La combinación de Monte Carlo e IBM Cloud Functions permitió al equipo ejecutar cálculos a gran escala y les permitió centrarse en la lógica empresarial. Con la FaaS, el equipo completó una simulación completa de Monte Carlo en unos 90 segundos con 1.000 invocaciones simultáneas. En comparación, ejecutar el mismo flujo en un portátil con cuatro núcleos de CPU llevó 247 minutos y casi un 100% de utilización de la CPU.

Para ver más ejemplos de casos prácticos de FaaS, consulte "Un resumen de las principales ventajas que ofrecen IBM Cloud Functions".

FaaS frente a PaaS, contenedores y máquinas virtuales

La FaaS, la PaaS (plataforma como servicio)los contenedoreslas máquinas virtuales (VM) desempeñan un papel fundamental en el ecosistema sin servidor. Dado que la FaaS es el elemento más central y definitorio del conjunto sin servidor, vale la pena explorar en qué se diferencia la FaaS de otros modelos de cálculo comunes del mercado actual en cuanto a sus atributos clave:

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

  • Administración continua: ninguna, en comparación con una escala deslizante de fácil a difícil para PaaS, contenedores y máquinas virtuales respectivamente.

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

  • Planificación de la capacidad: no es necesario, en comparación con los otros modelos que requieren una mezcla de escalado automático y cierta planificación de la 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 abierto o una conexión durante largos periodos de tiempo y almacenar el estado en la memoria entre llamadas.

  • Mantenimiento: todo el mantenimiento lo gestiona el proveedor de FaaS. Esto también es válido para PaaS. Los contenedores y las máquinas virtuales requieren un mantenimiento significativo que incluye la actualización/gestión de sistemas operativos, imágenes de contenedores, conexiones, etc.

  • Alta disponibilidad (HA) y recuperación tras desastre (DR): de nuevo, HA es inherente al modelo FaaS sin esfuerzo ni coste adicional. Los otros modelos requieren costes y esfuerzos de gestión adicionales. En el caso de máquinas virtuales 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 desocupada.

  • Límites de recursos: la FaaS es el único modelo que tiene límites de recursos en el tamaño del código, activaciones simultáneas, memoria, longitud de 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 "fontanerí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 sin servidor en un clúster de Kubernetes.

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

Los creadores de esta tecnología creían que los desarrolladores no deberían tener que elegir entre sin servidor y contenedores 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 on demand de sin servidor.

Vea este vídeo 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, implementar, establecer redes o escalar). 

Explore IBM Cloud Code Engine
IBM Cloud Functions

Desarrolle código ligero que se ejecute de forma escalable on demand con esta plataforma de programación de funciones como servicio (FaaS).

Explore IBM Cloud Functions
Recursos ¿Qué significa "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 suministrar ni gestionar servidores o infraestructura de backend.

¿Qué son los contenedores?

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

¿Qué es la PaaS?

La PaaS, o plataforma como servicio, proporciona una plataforma en la nube completa, flexible y rentable para desarrollar, ejecutar y gestionar aplicaciones.

De el siguiente paso

Como plataforma sin servidor totalmente gestionada, IBM Cloud® Code Engine le permite centrarse en escribir código, no en gestionar infraestructuras. Incluya sus imágenes de contenedores, trabajos por lotes o código fuente, y deje que IBM Cloud Code Engine gestione y proteja la infraestructura subyacente. No es necesario que modifique el tamaño, implemente ni escale los clústeres de contenedores. Y tampoco se necesitan habilidades relacionadas con las redes.

Explore IBM Cloud Code Engine