La administración y mantenimiento de un servidor, es una tarea que ocupa mucho tiempo y recursos. Esta arquitectura nos permite despreocuparnos de todas las tareas de gestión del servidor y además nos ofrece muchas ventajas. En este artículo hablaremos sobre arquitectura serverless y de cómo funciona, además veremos los servicios más populares. ¡Comenzamos!
Aunque serverless signifique “sin servidor”, a lo que se refiere con esto es a que es una arquitectura en la que no debemos preocuparnos por él, puesto que el proveedor en la nube es quien se encarga de su administración.
Serverless es una solución que nos permite crear y ejecutar aplicaciones más rápido y de forma más barata, ya que solo pagas por lo que consumes. En las aplicaciones centradas en servidor, tenemos procesos continuamente activos que atienden peticiones.
En las centradas en servidor, el programa se activa cuando recibe una petición, después la procesa y se apaga. El ciclo de vida es mucho menos en el caso de las serverless, tienden a ser un solo ciclo de petición y respuesta. Estas estructuras se conocen como Functions as a Service (FaaS), y las más populares son AWS Lambda, Azure Function y Google Cloud Functions. Después veremos estas FaaS y analizaremos qué diferencias tienen, pero primero vamos a ver que ventajas nos ofrece la arquitectura serverless.
Cada función lambda es desencadenada por un evento. Este evento puede ser invocado por otro servicio AWS como Amazon API Gateway, creando un endpoint HTTP(s) o manualmente desde la consola de Lambda. Cuando recibe este evento, ejecuta el código asociado. El código se escribe en la página de funciones de AWS, aquí crearemos la función, le daremos un nombre y elegiremos el runtime, que puede ser Node.js 20.x o Python 3.12. Ahora ya podremos escribir nuestro propio código y probarlo. Aquí dejo un ejemplo de una función simple hecha en Python.
import json
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': json.dumps('Hola! Esto es una prueba de Lambda')
}
Desde la vista de diseño, podremos añadir los eventos que queremos que invoquen la función. Aunque podrás probar su funcionamiento pulsando «Test».
Para monitorear todo lo relacionado con esta función y acceder a sus logs, tenemos Amazon CloudWatch. Este nos mostrará un registro por cada vez que se llama a la función y sus posibles errores.
Su principal ventaja es su capacidad de integración. AWS ofrece muchos servicios que pueden integrarse con Lambda, como Amazon Lex, RDS, Alexa, Kinesis o DynamoDB.
Lo primero que necesitamos para escribir nuestra primera función serverless en Google Cloud Functions es el código. Una vez tenemos el código guardado en un archivo, por ejemplo, index.js, podremos desplegar la función con gcloudCLI.
Este es un ejemplo para saludar en Google Cloud Functions.
exports.saludar= (req, res) => {
let message = req.query.message || req.body.message || 'Hola! Esta es una prueba en Google Cloud';
res.status(200).send(message);
};
gcloud functions deploy saludar--runtime nodejs16 --trigger-topic saludar
En este caso, para probar la función, tendremos que hacerlo mediante la consola y comprobar el resultado en Google Cloud Console logs.
Cuenta con la ventaja de poder integrarse con todos los servicios de Google Cloud, como Storage o Spanner.
Para crear nuestra primera función en Azure, tendremos que crear una Function app en Azure Marketplace y configurarla, para ello definimos el grupo de recursos, el nombre, suscripción, runtime y hosting. Una vez hemos generado la Function app, podremos empezar a diseñar una función serverless. Primero definiremos un evento para invocar la función y después escribiremos el código. Este es un ejemplo de una función serverless en Azure Functions:
func new --name saludar --template "HTTP trigger" --authlevel "anonymous"
def main(req):
return f'Hola! Esto es una prueba en Azure'
Al igual que AWS, Azure también tiene una gran capacidad de integración, pudiendo conectarse con numerosos servicios de Azure o con Cortana, por ejemplo. Sin embargo, esta no es su mayor ventaja. Azure Functions es capaz de usar los principales lenguajes de programación de Microsoft, es decir, podrás programar en .Net, C#, PowerShell, JavaScript o Python.
En conclusión, la arquitectura serverless nos ofrece muchos avances y ventajas, ya que no solo acelera el proceso de desarrollo, sino que también permite una mayor agilidad y capacidad de respuesta, haciendo que sea una opción aún más atractiva.
Y tú, ¿te animas a meterte en el mundo de la arquitectura sin servidor? ¡Cuéntanos en comentarios!
En esta guía práctica, te explicamos qué es el presupuesto de rastreo, por qué es… Leer más
¿Alguna vez te has encontrado con un mensaje que te invita a actuar, ya sea… Leer más
Una de las preguntas más comunes entre los desarrolladores web que comienzan a usar JavaScript… Leer más
Descubre qué es y para qué sirve la preimpresión digital para conseguir una buena impresión… Leer más
Ampliamos información para las redes sociales. Descubre cómo gestionar correctamente los consentimientos necesarios en las… Leer más
Michael Bierut es mucho más que un diseñador; es un educador ejemplar, un escritor locuaz… Leer más