La función o funciones como servicio (FaaS) es un tema candente en el mundo de la arquitectura de software. Es un pronóstico del mercado que alcanzará los $ 31,53 mil millones para 2026. FaaS ha estado ganando mucha atención por parte de la comunidad de desarrolladores, en particular como uno de los modelos de entrega en la nube de más rápido crecimiento. Ya está cambiando la forma en que se compra la tecnología, así como la forma en que se entrega y se opera.
FaaS podría tener un impacto significativo en las empresas en el futuro, ya que los usuarios no tienen que pagar por la redundancia del servidor, sino solo por la cantidad de potencia informática que utiliza una aplicación por milisegundo. En lugar de tener aplicaciones completas en servidores, las empresas pueden ejecutarlas desde la nube. Tener este tipo de conocimiento en tiempo real y generado por eventos estará en la lista de prioridades para el 80% de las soluciones comerciales digitales en el futuro.
Analizamos aquí qué es FaaS, sus beneficios y cómo funciona.
Indice
¿Qué es FaaS?
Function as a Service (FaaS) es un modelo sin servidor en el que el código escrito en cualquiera de los lenguajes admitidos se ejecuta en la nube, sin que el desarrollador tenga que preocuparse por los requisitos de hardware y software subyacentes. El término utilizado es sin servidor, pero es engañoso, ya que hay servidores que emplea el proveedor de la nube, que es transparente para el desarrollador.
FaaS permite el desarrollo modular basado en microservicios, a diferencia del desarrollo de base de código monolítica. Estas piezas de código modulares se ejecutan normalmente en los servidores de borde.
Este desarrollo basado en código base modular es una forma eficiente de implementar una arquitectura basada en microservicios. Ahora, ¿qué son los microservicios?. En esta arquitectura, la aplicación o el sistema se imagina como una colección de unidades funcionales o servicios más pequeños, que son fáciles de desarrollar, mantener, probar y se pueden acoplar o desacoplar fácilmente. Cada microservicio se puede considerar como una colección de funciones y cada una de estas funciones se puede desarrollar y ejecutar de forma independiente, acoplándolas libremente.
Cada una de esas funciones se puede ejecutar en una plataforma FaaS, lo que permite a los desarrolladores centrarse en el desarrollo, mientras que el proveedor de FaaS se encarga de la asignación de recursos para ejecutar la función. Usando código sin servidor como en FaaS, los desarrolladores web pueden enfocarse en escribir código de aplicación, mientras que el proveedor sin servidor se encarga de la asignación del servidor y los servicios de backend. El proveedor de FassS también escalará la función a nivel empresarial automáticamente en función de la demanda.
FaaS (Function-as-a-Service) es un servicio de computación en la nube que brinda a los usuarios la opción de ejecutar código como Javascript, Linux o HTML en respuesta a eventos, sin tener que construir ninguna infraestructura compleja.
Ejemplos de proveedores de FaaS incluyen:
- Funciones de IBM Cloud
- Funciones de Microsoft Azure (código abierto)
- AWS Lambda, de Amazon
- Funciones de Google Cloud
- OpenFaaS (código abierto)
Diferencia entre FaaS y Serverless
FaaS no es lo mismo pero es un subconjunto de ‘Serverless y Functions as a Service’. La informática sin servidor se centra en una categoría de servicio particular, por ejemplo, base de datos, mensajería, API o almacenamiento, donde la administración, configuración y facturación de los servidores son invisibles para los usuarios finales.
Sin embargo, FaaS es una de las tecnologías de arquitectura sin servidor más centrales. Se centra en paradigmas informáticos impulsados por eventos que involucran códigos de aplicación completos que solo se ejecutan en respuesta a solicitudes.
Beneficios
FaaS es la herramienta ideal para las empresas que buscan trasladar sus aplicaciones de manera eficiente y rentable a la nube. Algunos de estos beneficios incluyen:
Poder concentrarse en el código en lugar de en la infraestructura
En lugar de escalar un servidor monolítico para manejar la carga potencial, FaaS divide los servidores en funciones para que se puedan escalar automáticamente en microservicios sin la necesidad de administrar la infraestructura de forma independiente. De esa manera, los desarrolladores pueden concentrarse en la codificación de aplicaciones y reducir significativamente el tiempo de comercialización. Esto puede ser extremadamente beneficioso para una empresa de nueva creación.
Los usuarios finales solo necesitan comprar recursos cuando los necesiten
Cuando se completa la acción, todo se detiene, sin que se ejecute código (como Javascript), servidores inactivos o costes incurridos. Esto hace que FaaS sea rentable para empresas con cargas de trabajo dinámicas o tareas programadas, así como para escenarios de alta carga.
Otros ecosistemas utilizan al menos alguna capacidad ociosa. FaaS también es el único modelo con límites de recursos en el tamaño del código, la memoria, la duración de la ejecución y las activaciones simultáneas.
Ofrece a los usuarios la capacidad de escalar de forma automática, instantánea e independiente cuando sea necesario
A medida que la demanda disminuye, la tecnología FaaS puede reducirse inmediatamente. Con FaaS, cada acción se escala de forma instantánea e inherente. Otros modelos también ofrecen escalado automático, pero estos son más lentos, y el escalado debe ajustarse cuidadosamente mediante reglas de escalado automático.
FaaS ofrece los muchos beneficios de una sólida infraestructura en la nube: tiene una alta disponibilidad incorporada distribuida en múltiples zonas de disponibilidad en cada ubicación geográfica determinada. Por lo tanto, FaaS se puede implementar multirregionalmente sin ningún coste adicional.
El tiempo de ejecución de FaaS es extremadamente rápido y toma milisegundos
Para aquellos que están acostumbrados a los minutos u horas que otros sistemas tardan en funcionar, esta velocidad no se computa. Pero FaaS se cobra a un nivel granular y se factura por milisegundos en bloques de 100, en lugar de por horas o minutos, como es el caso de otros modelos.
No se requiere planificación de capacidad
A diferencia de otros modelos, FaaS no requiere planificación de capacidad.
No se requiere mantenimiento
El mantenimiento del flujo de trabajo lo llevan a cabo proveedores de FaaS como AWS Lambdas. Este también es el caso de PaaS, sin embargo, los contenedores y las máquinas virtuales necesitan un mantenimiento continuo significativo, incluida la actualización y administración de sistemas operativos, conexiones e imágenes de contenedores, entre otras tareas.
Tiene alta disponibilidad y recuperación ante desastres
La alta disponibilidad es inherente a una configuración de FaaS sin coste adicional de esfuerzo. Otros modelos requieren una gestión adicional y implicaciones de costes.
Desafíos
No todas las empresas serán adecuadas para FaaS, a pesar de que ofrece el potencial de eliminar la automatización informática no deseada asociada con el almacenamiento y la infraestructura de servidores inactivos, y ayuda a mantener bajos los costes.
Las cosas a considerar antes de comprometerse con un modelo FaaS incluyen:
Con menos responsabilidad viene menos control
Cuando se trata de seguridad, es posible que FaaS no funcione tan bien para algunas organizaciones. También puede haber problemas para monitorizar las aplicaciones de función en términos de la frecuencia con la que ocurren, el tiempo que toman y la comprensión de las razones por las que pueden ser lentas. Dado que los usuarios no tienen servidores para controlar o la capacidad de administrar los recursos en ellos, no hay posibilidad de instalar software de monitorización.
Podría generar problemas de seguridad, incluida la piratería maliciosa y la fuga de datos
Si elementos como las funciones de Google Cloud se ejecutan en un servidor multicliente, los usuarios podrían acceder a los datos confidenciales de los demás.
FaaS significa registrarse en el bloqueo de proveedores y no será fácil mover estos servicios de una nube a otra
Cada proveedor de nube se acerca a FaaS de manera diferente, ya sea en la nube pública o en código abierto. Sin embargo, no es posible tomar una función y moverla entre proveedores de FaaS en la nube. Registrarse con un proveedor a largo plazo presenta el riesgo de comprometerse con una nube que no ofrece las funciones que los usuarios finales pueden necesitar en el futuro para ofrecer valor comercial.
Crear el ecosistema adecuado para una nueva generación de ingenieros de TI de computación sin servidor es un desafío
Las arquitecturas sin servidor requieren que los CIO reduzcan la cantidad de gobernanza en torno a la entrega técnica para facilitar la transformación digital.
Con FaaS hay menos transparencia en torno a la infraestructura de backend
Con un modelo de pago por uso, es difícil incorporar FaaS en los presupuestos.
¿Cómo funciona FaaS?
FaaS permite a los desarrolladores ejecutar aplicaciones web en respuesta a eventos sin tener que administrar servidores. Como es un modelo impulsado por eventos, está ahí cuando es necesario, pero no requiere que los procesos del servidor se ejecuten constantemente en segundo plano como con la plataforma como servicio.
Las aplicaciones completas se componen de una combinación de funciones, microservicios y servicios de larga duración. Los proveedores hacen que una función esté disponible a través de una interfaz de programación de aplicaciones (API). El proveedor también gestiona la asignación de recursos. Dado que las funciones se basan en eventos, no en recursos, son fáciles de escalar y esto permite una mayor funcionalidad, flexibilidad, eficiencia y valor.
Las funciones comienzan en milisegundos para procesar solicitudes y si hay varias solicitudes para una función al mismo tiempo, el sistema crea las copias apropiadas de la función según sea necesario para satisfacer la demanda. Es posible crear una aplicación completamente sin servidor utilizando FaaS, o una formada por un modelo de microservicio parcialmente sin servidor y parcialmente tradicional, para aprovechar la última tecnología proporcionada por los sistemas de orquestación, por ejemplo, ‘Kubernetes.
Kubernetes es una herramienta de orquestación de contenedores de código abierto fundamental para la gestión de las funcionalidades de la computación en la nube. Las funciones de Kubernetes incluyen seguridad, registro, monitorización y autorización.
Casos de uso
FaaS es especialmente bueno para cargas de trabajo paralelas de gran volumen, así como para la creación de sistemas back-end y para el procesamiento, codificación, conversión de formato y agregación de datos.
También es muy adecuado como herramienta para back-end, procesamiento de datos, aplicaciones web o para crear chatbots para dispositivos IoT. FaaS también es útil para ayudar a administrar y supervisar servicios de terceros.
Desarrollo de aplicaciones de Android
Cuando se trata del desarrollo de aplicaciones de Android, es posible mantener bajos los costes utilizando FaaS, ya que a los usuarios solo se les cobra cuando una aplicación se conecta a la nube para funciones específicas, por ejemplo, procesamiento por lotes. Esto lo convierte en un enfoque mucho más rentable que un método tradicional.
Pronosticar el mercado de valores
FaaS también es una forma invaluable de impulsar el rendimiento informático. En un caso de uso reciente, FaaS ayudó a los ingenieros de IBM a utilizar IBM Cloud Functions para simulaciones de Monte Carlo para estimar los resultados futuros de los precios de las acciones.
Las simulaciones de Monte Carlo son métodos matemáticos que se utilizan para estimar los resultados futuros de eventos difíciles de predecir. Desde la previsión meteorológica hasta la previsión financiera compleja, este método utiliza un muestreo aleatorio basado en datos de entrada para estimar los resultados de datos futuros de un modelo. Cuanto mayor sea el muestreo, más preciso será el rango y mejor será la estimación.
Ejecutar análisis predictivos
IBM Cloud Functions es un FaaS sin servidor que se utilizó para completar una simulación de Monte Carlo para los precios de las acciones en solo 90 segundos, en comparación con los 247 minutos que generalmente toma cuando se ejecuta en una computadora portátil con 4 núcleos de CPU. El código Python se utilizó para procesar una serie de pronósticos para predecir los precios de las acciones durante varios días. El siguiente paso fue ejecutar el mismo código en una escala masiva para procesar más de 100,000 pronósticos recopilados durante 1095 días.
Esta escala de operación no se pudo lograr utilizando máquinas virtuales basadas en la nube. En lugar de ejecutar cálculos de forma local, se utilizó IBM Cloud Functions para Monte Carlo para ejecutarlos a gran escala. Con PyWren IBM Cloud Framework, los usuarios pudieron concentrarse en el código mientras que el marco se centró en la ejecución en la nube. Una vez que se completaron los pronósticos, se utilizó un solo ‘combinador’ para agregar los resultados y generar un gráfico con las predicciones.
¿Cuáles son algunos ejemplos de FaaS?
Entrega de documentos
La generación de facturas y otros documentos estáticos es una funcionalidad común. Las aerolíneas ofrecen tarjetas de embarque en aplicaciones móviles y la mayoría de los servicios de comercio electrónico tienen una función de generación de facturas. Estas plantillas para estos documentos están listas para ser recuperadas, pobladas y entregadas al usuario cuando las solicite. Una función simple puede tomar un pequeño parámetro, como un tipo de documento, nombre, ID de usuario y código de barras, y producir un documento específico para la solicitud.
Este caso de uso se adapta bien a FaaS ya que la función es simple, fácil de administrar y no requiere ningún tipo de estado. Se recibe una solicitud de un documento y se devuelve el documento. Dado que esta característica también podría tener una demanda variable, FaaS también garantiza que los recursos se aprovisionen cuando sea necesario y los costos se escalen adecuadamente.
Procesamiento de pagos
El procesamiento de pagos a menudo se realiza mediante servicios externos a través de ofertas de SaaS, a menudo pasando datos a un procesador de pagos como Stripe o Paypal. Asegurar que los pagos se puedan procesar casi instantáneamente es fundamental para garantizar una buena experiencia del usuario y que los pedidos de productos se manejen bien. La escalabilidad inherente de FaaS asegura que incluso durante las horas pico, la cantidad de pedidos recibidos en un momento dado no afectará negativamente la experiencia del usuario.
Dado que el manejo de pagos es a menudo un solo paso en el flujo de trabajo más amplio de ordenar un producto o comprar un servicio, FaaS también es un método excelente para crear todo el flujo de trabajo, desde la recopilación de datos, el procesamiento de pagos y la creación de facturas.
Procesamiento de eventos basado en el tiempo
Para manejar eventos basados en el tiempo, FaaS puede ayudar a las empresas que, por ejemplo, deseen enviar comunicaciones todos los días a una hora específica a sus clientes. Sus comunicaciones podrían ser un correo electrónico con contenido basado en la hora actual y el estado de un producto, como un informe de tiempo de actividad o de uso. Las funciones se pueden activar en función de un cronograma, completar el correo electrónico con la información requerida y enviarlo a una lista de distribución.
Mejores prácticas para adoptar la función como servicio
Algunas preguntas que debe hacerse antes de optar por los servicios de FaaS serían:
- ¿FaaS traerá un impacto positivo en el flujo de trabajo de desarrollo diario?
- ¿Tenemos el presupuesto para pagar los servicios de FaaS y cómo nos llevará al desarrollo eficiente de nuestro proyecto?
- ¿Cuál es el propósito de suscribirse a los servicios de FaaS en nuestro proyecto?
- Qué proveedor de FaaS se adapta mejor a su propósito.
Estas son las pocas preguntas que debes tener en cuenta antes de implementar Function as a Service (FaaS) en tu flujo de trabajo.