¿Qué es Serverless? Principales Usos en Proyectos Reales
¿Qué es Serverless?
Serverless es un modelo de computación en la nube que permite a los desarrolladores construir y ejecutar aplicaciones sin preocuparse por la gestión de servidores. En lugar de aprovisionar, escalar y administrar infraestructura, las aplicaciones se ejecutan en servicios gestionados por el proveedor en respuesta a eventos específicos.
Aunque el término sugiere «sin servidores», los servidores están presentes, pero son gestionados por el proveedor de la nube, como AWS, Azure o Google Cloud.
¿Cómo Funciona el Modelo Serverless?
Basado en Eventos:
- El código (conocido como «función») se ejecuta solo cuando se desencadena un evento, como una solicitud HTTP, una carga en un bucket S3 o un cambio en una base de datos.
Escalabilidad Automática:
- El proveedor ajusta los recursos según la demanda, asegurando que la aplicación funcione sin interrupciones.
Pago por Uso:
- Solo se paga por el tiempo en que la función está en ejecución, reduciendo costos significativamente.
Principales Ventajas de Serverless
- Reducción de Costos: Se paga solo por lo que se usa.
- Desarrollo Ágil: Permite a los desarrolladores centrarse en el código sin preocuparse por la infraestructura.
- Escalabilidad Automática: Maneja aumentos y disminuciones de tráfico de forma eficiente.
- Integración Sencilla: Compatible con servicios gestionados como bases de datos, almacenamiento y APIs.
Principales Usos de Serverless en Proyectos Reales
Creación de APIs RESTful y GraphQL:
- Ejemplo: Usar AWS API Gateway con funciones Lambda para manejar solicitudes HTTP y responder con datos.
Procesamiento de Archivos y Datos:
- Ejemplo: Procesar imágenes subidas a S3, como redimensionarlas o aplicar filtros.
Automatización de Tareas:
- Ejemplo: Enviar correos electrónicos automáticos tras una compra o evento en una aplicación.
Aplicaciones Backend sin Servidor:
- Ejemplo: Gestionar la lógica de negocios de una aplicación móvil.
IoT (Internet de las Cosas):
- Ejemplo: Procesar datos en tiempo real de sensores conectados.
Machine Learning:
- Ejemplo: Ejecutar inferencias rápidas en modelos ML sin necesitar infraestructura dedicada.
Ejemplo Práctico: API para Gestión de Tareas
Objetivo:
Crear una API RESTful para gestionar tareas (CRUD) utilizando el enfoque serverless con AWS Lambda y DynamoDB.
Arquitectura:
- API Gateway: Maneja las solicitudes HTTP y las redirige a Lambda.
- AWS Lambda: Contiene las funciones para crear, leer, actualizar y eliminar tareas.
- DynamoDB: Almacena las tareas de forma rápida y escalable.
Paso 1: Configurar DynamoDB
- Accede a la consola de AWS y crea una tabla llamada
Tareas
. - Define un campo clave primaria llamado
id
.
Paso 2: Crear Funciones Lambda
Ejemplo de Función para Crear una Tarea:
const AWS = require('aws-sdk');
const uuid = require('uuid');
const dynamoDB = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event) => {
const { titulo, descripcion } = JSON.parse(event.body);
const nuevaTarea = {
id: uuid.v4(),
titulo,
descripcion,
creadaEn: new Date().toISOString(),
};
const params = {
TableName: 'Tareas',
Item: nuevaTarea,
};
try {
await dynamoDB.put(params).promise();
return {
statusCode: 201,
body: JSON.stringify({ mensaje: 'Tarea creada exitosamente', tarea: nuevaTarea }),
};
} catch (error) {
return {
statusCode: 500,
body: JSON.stringify({ error: 'Error al crear tarea' }),
};
}
};
Paso 3: Configurar API Gateway
- Crea una nueva API en API Gateway.
- Define métodos HTTP para cada operación:
- POST: Crear tarea.
- GET: Listar tareas.
- PUT: Actualizar tarea.
- DELETE: Eliminar tarea.
- Conecta cada método con su respectiva función Lambda.
Paso 4: Probar la API
Usa herramientas como Postman o cURL para enviar solicitudes a la API y verificar el correcto funcionamiento de las funciones.
Conclusión
Serverless ha revolucionado la forma en que se desarrollan y gestionan aplicaciones. Su capacidad para reducir costos, escalar automáticamente y simplificar el desarrollo lo hace ideal para muchos proyectos reales, como APIs, automatización de tareas y procesamiento de datos.
Referencias: