Introducción al Serverless Framework: Uso Principal
¿Qué es el Serverless Framework?
El Serverless Framework es una herramienta de código abierto que simplifica la creación y despliegue de aplicaciones sin servidores (serverless) en plataformas como AWS, Azure, Google Cloud, entre otras.
Este framework abstrae la complejidad de configurar servicios manualmente, permitiendo a los desarrolladores centrarse en la lógica del negocio en lugar de preocuparse por la infraestructura.
Principales Usos del Serverless Framework
- Aplicaciones Web y APIs: Creación de backend con AWS Lambda, API Gateway y DynamoDB.
- Automatización de Tareas: Funciones ejecutadas en eventos programados (cron jobs).
- Procesamiento de Datos: Manejo de grandes volúmenes de datos en tiempo real.
- IoT: Gestión y procesamiento de datos de dispositivos conectados.
- Aplicaciones de Tiempo Real: Servicios como chatbots o procesamiento de eventos.
Ventajas del Serverless Framework
- Despliegue Automatizado: Configura y despliega toda la infraestructura con un único comando.
- Escalabilidad Automática: Aprovecha la capacidad de los servicios serverless para escalar dinámicamente según la demanda.
- Eficiencia de Costos: Paga solo por las solicitudes procesadas, sin costos de infraestructura permanente.
- Interfaz Intuitiva: Archivos de configuración YAML fáciles de entender y personalizar.
Ejemplo Práctico: Crear una API RESTful con Serverless Framework
En este ejemplo, crearemos una API REST para gestionar tareas (to-do list) usando AWS Lambda como backend, API Gateway para las rutas HTTP, y DynamoDB para el almacenamiento.
1. Configurar el Proyecto
1. Instalar el Serverless Framework:
npm install -g serverless
2. Crear un Nuevo Proyecto:
serverless create --template aws-nodejs --path to-do-api
cd to-do-api
3. Instalar Dependencias:
npm init -y
npm install aws-sdk
2. Crear Funciones Lambda
Archivo createTask.js
: Crear una Tarea
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports.handler = async (event) => {
const data = JSON.parse(event.body);
const params = {
TableName: 'TasksTable',
Item: {
taskId: data.taskId,
title: data.title,
completed: data.completed || false,
},
};
try {
await dynamoDb.put(params).promise();
return {
statusCode: 201,
body: JSON.stringify({ message: 'Tarea creada', task: params.Item }),
};
} catch (error) {
return {
statusCode: 500,
body: JSON.stringify({ error: 'Error al crear la tarea' }),
};
}
};
Archivo getTasks.js
: Obtener Tareas
module.exports.handler = async () => {
const params = {
TableName: 'TasksTable',
};
try {
const result = await dynamoDb.scan(params).promise();
return {
statusCode: 200,
body: JSON.stringify(result.Items),
};
} catch (error) {
return {
statusCode: 500,
body: JSON.stringify({ error: 'Error al obtener tareas' }),
};
}
};
3. Configurar el Archivo serverless.yml
Este archivo define la infraestructura que será desplegada:
service: to-do-api
provider:
name: aws
runtime: nodejs18.x
region: us-east-1
resources:
Resources:
TasksTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: TasksTable
AttributeDefinitions:
- AttributeName: taskId
AttributeType: S
KeySchema:
- AttributeName: taskId
KeyType: HASH
BillingMode: PAY_PER_REQUEST
functions:
createTask:
handler: createTask.handler
events:
- http:
path: tasks
method: post
getTasks:
handler: getTasks.handler
events:
- http:
path: tasks
method: get
4. Desplegar el Proyecto
Para desplegar la infraestructura y las funciones:
serverless deploy
Esto generará URLs de las rutas para interactuar con las funciones Lambda.
5. Probar la API
Utiliza herramientas como Postman o cURL para probar las rutas:
Crear una tarea:
curl -X POST https:///tasks \
-H "Content-Type: application/json" \
-d '{"taskId": "1", "title": "Aprender Serverless Framework"}'
- Obtener todas las tareas:
curl https:///tasks
Conclusión
El Serverless Framework simplifica enormemente el desarrollo de aplicaciones sin servidores, permitiendo a los desarrolladores enfocarse en la funcionalidad de sus proyectos sin preocuparse por la administración de infraestructura.
En este ejemplo práctico, vimos cómo implementar una API RESTful con AWS Lambda, DynamoDB y API Gateway de manera eficiente y escalable, mostrando el poder y la versatilidad de este framework.
Referencias: