FunLess: Una Nueva Onda en la Computación Serverless
FunLess ofrece ejecución eficiente de funciones sin servidor en sistemas de nube privada en el borde.
― 8 minilectura
Tabla de contenidos
La computación sin servidor está cambiando la forma en que construimos y gestionamos aplicaciones. Permite a los desarrolladores escribir código y desplegarlo sin tener que gestionar los servidores subyacentes. Este método es beneficioso porque los usuarios solo pagan por los recursos que utilizan, lo que lo convierte en una solución económica. Sin embargo, la mayoría de las plataformas sin servidor prosperan en entornos de nube pública, pero enfrentan desafíos cuando se usan en espacios privados como casas o pequeñas empresas.
Este artículo habla sobre FunLess, una nueva plataforma diseñada para ejecutar funciones sin servidor en sistemas de nube en el borde privado. FunLess se diferencia de las plataformas existentes al utilizar WebAssembly, una tecnología que permite que las funciones se ejecuten de manera ligera y segura en dispositivos con recursos limitados, como computadoras pequeñas o dispositivos IoT. Este enfoque busca ofrecer un mejor rendimiento, reducir retrasos y mejorar la seguridad y privacidad.
¿Qué es FunLess?
FunLess es una plataforma que sigue el modelo de Función-como-Servicio (FaaS). En este modelo, los desarrolladores escriben y despliegan pequeños trozos de código llamados funciones. Estas funciones son sin estado, lo que significa que no llevan un registro de acciones pasadas. Cuando se necesita una función, la plataforma la activa automáticamente, la ejecuta y luego la apaga. Los usuarios solo pagan por el tiempo que la función está en ejecución, lo que lleva a un ahorro de costos.
Una de las características destacadas de FunLess es su capacidad para ejecutarse en sistemas de nube en el borde privado. Estos sistemas son centros de nube más pequeños ubicados más cerca de la fuente de datos. Esta cercanía ayuda a reducir los retrasos en el procesamiento de datos, aumenta la seguridad y mejora el uso de los recursos de la red. FunLess busca llevar funciones sin servidor a estos entornos de manera efectiva.
¿Por qué sistemas de nube en el borde?
Aunque las nubes públicas son los servicios de nube más conocidos, hay ventajas significativas en ejecutar funciones sin servidor en sistemas de nube en el borde privado. Estas ventajas incluyen:
- Latencia Reducida: Las funciones pueden procesar datos más rápido porque están más cerca del usuario o de la fuente de datos.
- Seguridad Mejorada: Mantener los datos dentro de una nube privada reduce los riesgos asociados con las nubes públicas.
- Mejor Uso de Recursos: Los recursos locales se pueden utilizar de manera más eficiente, lo que lleva a un mejor rendimiento.
Los sistemas de nube en el borde privado son ideales para diversas aplicaciones, incluidas casas inteligentes, oficinas y fábricas, donde múltiples dispositivos trabajan juntos y comparten datos.
Desafíos de las soluciones sin servidor actuales
Muchas plataformas sin servidor actuales dependen de contenedores, que son paquetes que contienen todo lo necesario para que una aplicación se ejecute. Aunque los contenedores son útiles, también pueden consumir muchos recursos del sistema. Este consumo plantea un problema al ejecutar aplicaciones en dispositivos con memoria y energía limitadas, como Raspberry Pi.
Los contenedores también pueden introducir retrasos al iniciar funciones, ya que necesitan cargar y configurar el entorno antes de ejecutarse. Este retraso, conocido como "inicio en frío," puede afectar significativamente la experiencia del usuario, especialmente en aplicaciones que requieren respuestas rápidas.
Además, las soluciones sin servidor tradicionales a menudo requieren configuraciones complicadas utilizando tecnologías de orquestación como Kubernetes, lo que agrega más sobrecarga de recursos y complejidad. Estas limitaciones dificultan la implementación efectiva de funciones sin servidor en entornos de borde.
La solución WebAssembly
FunLess aborda estos desafíos aprovechando WebAssembly (Wasm). Wasm es una tecnología que permite que las aplicaciones web se ejecuten de manera más eficiente al proporcionar un entorno de ejecución ligero. Está diseñado para ejecutar código en un entorno controlado, asegurando seguridad y rendimiento. Sus principales ventajas incluyen:
- Entorno Ligero: Las funciones Wasm requieren menos memoria que los contenedores, lo que las hace adecuadas para dispositivos con recursos limitados.
- Tiempos de Inicio Más Rápidos: Las funciones escritas en Wasm pueden comenzar a ejecutarse más rápido que aquellas que dependen de contenedores, reduciendo los tiempos de inicio en frío.
- Portabilidad: Los binarios Wasm pueden ejecutarse en cualquier dispositivo con un entorno de ejecución Wasm, permitiendo a los desarrolladores escribir funciones una vez y desplegarlas fácilmente en diversos dispositivos.
Al usar Wasm, FunLess puede soportar la ejecución de funciones sin servidor de manera eficiente en sistemas de nube en el borde privado, aprovechando los beneficios de esta tecnología.
Arquitectura de FunLess
La arquitectura de FunLess está diseñada para ser simple, lo que facilita a los usuarios desplegar y gestionar funciones. La plataforma tiene dos componentes principales: el Núcleo y el Trabajador.
Núcleo: Este es el centro de control de FunLess. Maneja las solicitudes de los usuarios, gestiona el ciclo de vida de las funciones y coordina la invocación de funciones. Los usuarios interactúan con el Núcleo a través de una API simple, que les permite crear, actualizar o eliminar funciones fácilmente. Se comunica con los Trabajadores para gestionar la ejecución de funciones.
Trabajador: Los Trabajadores son responsables de ejecutar las funciones. Cada Trabajador puede ejecutarse en dispositivos de bajo consumo, lo que lo hace adecuado para entornos de borde. Cuando se invoca una función, el Trabajador verifica si ya tiene la función en su memoria. Si la tiene, la ejecuta directamente; si no, la obtiene del Núcleo.
El diseño busca mantener un alto rendimiento mientras minimiza el consumo de recursos y evita las complejidades que a menudo se asocian con los entornos de contenedores.
Desarrollo y Despliegue de Funciones
Los desarrolladores pueden crear funciones para FunLess en varios lenguajes de programación, incluidos Rust, Go y JavaScript. Una vez que se escribe la función, se compila en un binario Wasm, que luego se carga en el Núcleo de FunLess. El proceso es así:
- Escribir la Función: Desarrollar la función usando uno de los lenguajes soportados.
- Compilar a Wasm: Usar el compilador adecuado para convertir el código en un binario Wasm.
- Subir al Núcleo: El binario Wasm se envía al Núcleo y se almacena en la base de datos.
- Ejecución de la Función: Cuando se solicita, el Núcleo dirige al Trabajador apropiado para ejecutar la función.
Este proceso sencillo permite a los desarrolladores centrarse en crear sus funciones sin complicarse con los detalles del sistema o configuraciones complejas.
Evaluación del Rendimiento
Uno de los aspectos más críticos de cualquier plataforma de computación es su rendimiento. FunLess fue evaluado en varios escenarios para ver cómo se compara con otras plataformas sin servidor populares.
Las pruebas se centraron en medir:
- Latencia: El tiempo que tarda una función en ejecutarse y devolver resultados.
- Uso de Memoria: La cantidad de memoria necesaria para ejecutar la plataforma y sus funciones.
FunLess se probó contra tres alternativas de código abierto ampliamente adoptadas: OpenFaaS, Fission y Knative.
Hallazgos Clave
Huella de Memoria Ligera: FunLess demostró un uso de memoria significativamente menor en comparación con sus contrapartes. Esta eficiencia es crucial para ejecutar funciones en dispositivos con recursos limitados.
Rendimiento Comparable: En términos de velocidad, FunLess funcionó dentro del 5% de las mejores soluciones en la mayoría de los casos, excepto en tareas que requieren una potencia de cómputo intensa.
Despliegue en el Borde: FunLess es la única plataforma que puede ejecutarse completamente en dispositivos de bajo consumo (como Raspberry Pi) sin necesitar un controlador basado en la nube, lo que muestra su idoneidad para entornos de borde.
Ventajas del Inicio en Frío: El uso de Wasm por parte de FunLess le permitió mitigar efectivamente los retrasos de inicio en frío comunes en las plataformas sin servidor, lo que lleva a una experiencia de usuario más receptiva.
Conclusión
FunLess ofrece una solución prometedora para ejecutar funciones sin servidor en sistemas de nube en el borde privado. Al aprovechar WebAssembly, aborda efectivamente muchos de los desafíos que enfrentan las plataformas existentes, como el consumo de recursos y los retrasos en el inicio en frío.
La arquitectura de la plataforma promueve la simplicidad en el despliegue mientras garantiza un alto rendimiento, lo que la convierte en una opción adecuada para una amplia gama de aplicaciones, desde casas inteligentes hasta automatización industrial.
A medida que la demanda de computación sin servidor crece, especialmente en entornos de borde, FunLess representa un paso significativo hacia la accesibilidad y eficiencia de estas tecnologías. Las futuras mejoras probablemente se centrarán en extender el soporte del lenguaje, mejorar la confiabilidad e integrar nuevas características para optimizar aún más la plataforma para diversos contextos de aplicación.
En última instancia, FunLess está preparado para desempeñar un papel clave en habilitar la próxima generación de computación sin servidor, asegurando que los usuarios puedan aprovechar al máximo los muchos beneficios de esta tecnología sin las complejidades que normalmente la acompañan.
Título: FunLess: Functions-as-a-Service for Private Edge Cloud Systems
Resumen: We present FunLess, a Function-as-a-Service (FaaS) platform tailored for the private edge cloud system. FunLess responds to recent trends that advocate for extending the coverage of serverless computing to private edge cloud systems and enhancing latency, security, and privacy while improving resource usage. Unlike existing solutions that rely on containers for function invocation, FunLess leverages WebAssembly (Wasm) as its runtime environment. Wasm's lightweight, sandboxed runtime is crucial to have functions run on constrained devices at the edge. Moreover, the advantages of using Wasm in FunLess include a consistent development and deployment environment for users and function portability (write once, run everywhere) We validate FunLess under different deployment scenarios, characterised by the presence/absence of constrained-resource devices (Raspberry Pi 3B+) and the (in)accessibility of container orchestration technologies - Kubernetes. We compare FunLess with three production-ready, widely adopted open-source FaaS platforms - OpenFaaS, Fission, and Knative. Our benchmarks confirm that FunLess is a proper solution for FaaS private edge cloud systems since it achieves performance comparable to the considered FaaS alternatives while it is the only fully-deployable alternative on constrained-resource devices, thanks to its small memory footprint.
Autores: Giuseppe De Palma, Saverio Giallorenzo, Jacopo Mauro, Matteo Trentin, Gianluigi Zavattaro
Última actualización: 2024-05-31 00:00:00
Idioma: English
Fuente URL: https://arxiv.org/abs/2405.21009
Fuente PDF: https://arxiv.org/pdf/2405.21009
Licencia: https://creativecommons.org/licenses/by/4.0/
Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.
Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.
Enlaces de referencia
- https://aws.amazon.com/greengrass/
- https://www.cloudflare.com/en-gb/learning/serverless/glossary/serverless-and-cloudflare-workers/
- https://webassembly.org/
- https://developers.cloudflare.com/workers/runtime-apis/webassembly/
- https://www.postgresql.org/
- https://prometheus.io
- https://hexdocs.pm/libcluster/readme.html
- https://blog.cloudflare.com/announcing-wasi-on-workers
- https://blog.cloudflare.com/workerd-open-source-workers-runtime/
- https://www.terraform.io/
- https://www.ansible.com/
- https://github.com/openfaas-incubator/rust-http-template
- https://ko.build/
- https://github.com/knative/func
- https://github.com/bytecodealliance/javy/
- https://tinygo.org/
- https://jmeter.apache.org/
- https://github.com/OpenFaaS/faas
- https://github.com/fission/fission
- https://github.com/knative