Usamos cookies. Tienes opciones. Las cookies nos ayudan a mantener el sitio funcionando sin problemas e informar sobre nuestra publicidad, pero si deseas realizar ajustes, puedes visitar nuestro Aviso de cookies para más información.
Uso de cookies en su dispositivo. Las cookies nos ayudan a mantener esta página web funcionando correctamente y a personalizar nuestra publicidad, pero el uso que hacemos de las cookies depende de usted. Acepte nuestra configuración o personalícela.
×

Serverless functions en las tres principales plataformas Cloud

En un mundo donde las tecnologías cloud están en auge, es interesante conocer las tres principales plataformas que ofrecen estos servicios: Google Cloud Platform, Amazon Web Services y Microsoft Azure. Todas ellas ofrecen la enorme ventaja de utilizar recursos de computación y almacenamiento sin tener que disponer de dispositivos físicos, facturando únicamente por el uso que se hace de los recursos. Entre las múltiples funcionalidades que ofrecen se encuentran las serverless functions, que permiten ejecutar código en la nube, lo que se denomina function as a service (FaaS).

En cada cloud, las serverless functions reciben nombres diferentes. En el caso de las tres principales cloud mencionadas – GCP, AWS y Azure – toman el nombre de Cloud Functions, AWS Lambda y Azure Functions, respectivamente. Todas ellas admiten la programación en un gran número de lenguajes. En este artículo veremos un análisis general de las características que presenta cada una de ellas. En concreto, analizaremos qué versiones están disponibles, triggers posibles, formas de desplegarlas y el coste que implican.

cloud-functions

Cloud Functions

Su versión 1, abre este análisis. Se pueden ejecutar mediante un trigger disparado a partir de un evento que se produzca, teniendo en cuenta que cada función solo puede asociarse a un único trigger. En función de qué tipo es el trigger, se clasifican en HTTP functions, si son invocadas por medio de una petición HTTP, o event-driven functions, si el evento proviene de la propia infraestructura cloud. Además, el tiempo de ejecución no puede superar los 9 minutos.

Hasta este año, únicamente estaban disponibles las Cloud Functions v1. En febrero, las FaaS de Google han incorporado entre sus filas las Cloud Functions 2nd gen, una nueva versión en preview a día de hoy que añade nuevas configuraciones sobre una infraestructura más potente, mejor control del rendimiento y escalabilidad, y un mayor número de triggers posibles (hasta 90 utilizando Eventarc). Puede procesar hasta 1000 peticiones concurrentes gracias a una mayor capacidad de computación, y utilizando un trigger HTTP, se puede llegar hasta 60 minutos de ejecución continua.

El despliegue se realiza mediante la subida de un archivo que se transforma en un contenedor encargado de ejecutar el código. Esto se puede realizar desde local, un repositorio, la consola de GCP o desde la API de las Cloud Functions, todo de una forma muy intuitiva y siendo el código fácilmente modificable desde la propia consola de GCP.

Respecto al pricing, se incluyen las primeras 2 millones de ejecuciones y 400000GB-segundos de tiempo de computación al mes de forma gratuita, pasando luego a ser de $0,40 por cada millón de invocaciones y menos de $0,00001 por GB-segundo.

aws-lambda

AWS Lambda

Las functions de Amazon Web Services no se quedan rezagadas respecto a sus competidoras de Google. Al igual que ellas, pueden ser invocadas de distintas formas y admiten varios tipos de triggers: HTTP, la API de Lambda y un SDK de AWS, entre otros. Además, se pueden invocar síncrona o asíncronamente. El tiempo máximo de ejecución es de 15 minutos. No disponen de varias versiones entre las que elegir.

Se pueden desplegar a través de archivos zip que se suben directamente desde local si son de menos de 50MB; en caso contrario, se tendría que hacer a través de un bucket de S3. También el código es editable desde la propia consola de AWS. También se puede utilizar contenedores para desplegarlas, y el propio AWS ofrece herramientas de testing en caso de usar esta opción.

En relación al pricing, AWS no factura por el primer millón de ejecuciones y 400000GB-segundos de computación al mes. Si se superan estas cifras, pasaría a ser $0,20 por millón de invocaciones y menos de $0,00002 por GB-segundo.

azure-functions

Azure Functions

Por último, pero no menos importante, las functions de Azure cierran este análisis. Estas incluyen la opción de dispararlas en función de diversos triggers: HTTP, timer, colas, Event Hub, etc. Además, incluyen la opción, en la propia configuración de los parámetros de la function, de vincularlas a través de bindings a recursos cloud a los que tengan que acceder para obtener los datos o almacenar el resultado, evitando tener que realizar una conexión en el propio código.

El tiempo máximo de ejecución es de 230 segundos, menos de 4 minutos. No obstante, para evitar limitaciones de tiempo de ejecución, se puede utilizar una extensión interesante que presentan las Azure Functions denominada Durable Functions. Esta permite orquestar y definir flujos de trabajo donde cada function se encargue de una tarea y coopere con el resto de forma coordinada, sin necesidad de incluir otra tecnología cloud que se encargue de dicha coordinación. Esto permitiría dividir el trabajo en subtareas, para no sobrepasar los 4 minutos de ejecución.

El despliegue se puede hacer a través de un fichero zip, mediante Azure Pipelines, a través de GitHub o mediante una herramienta de desarrollo en local, como VS Code. No es recomendable hacer modificaciones mediante el editor en línea, lo cual genera una complejidad mayor.

Su pricing está en el rango de las dos anteriores: el primer millón de ejecuciones y 400000GB-s al mes está incluido en el nivel gratuito, pasando luego a facturar $0,20 por millón de ejecuciones y menos de $0,00002GB-segundo.

 

Como hemos visto, cada cloud ofrece unas características diferentes para sus serverless functions que es interesante conocer y evaluar, así como el entorno en el que se desarrolla el resto del proyecto, para así escoger la que más conviene al caso concreto en el que nos encontremos.

 


 

*Fuentes bibliográficas:

Google Cloud | Cloud Functions

AWS | Lambda Documentation 

Microsoft | Azure Functions Documentation

Canva

 

En nuestra compañía