Que es Serverless
Serverless es una arquitectura que permite concentrarse solo en la ejecucion del codigo, delegando la gestion del servidor al proveedor de la nube. No significa “sin servidor”, sino “no necesitas preocuparte por el servidor”.
Beneficios: Sin gestion de infraestructura, escalado automatico, pago solo por uso
Tipos de Serverless
FaaS (Function as a Service)
Ejecuta funciones mediante disparadores de eventos.
// Ejemplo de AWS Lambda
export const handler = async (event) => {
const name = event.queryStringParameters?.name || 'World';
return {
statusCode: 200,
body: JSON.stringify({ message: `Hello, ${name}!` })
};
};
BaaS (Backend as a Service)
Proporciona funciones de backend como autenticacion, base de datos y almacenamiento como servicio.
Ejemplos de BaaS:
- Firebase Authentication (Autenticacion)
- Firestore (Base de datos)
- AWS S3 (Almacenamiento)
- Algolia (Busqueda)
Como Funciona FaaS
flowchart LR
subgraph FaaS["Plataforma FaaS"]
Event["Evento"] --> Container["Inicio de contenedor"] --> Execute["Ejecucion de funcion"] --> Response["Respuesta"] --> Stop["Detencion"]
subgraph Functions["Ejecucion en paralelo posible"]
FA["Funcion A"]
FB["Funcion B"]
FC["Funcion C"]
end
end
Note["Escalado: 0 → 1 → 100 → 1000 → 0 (automatico)"]
Event Sources
Solicitud HTTP → API Gateway → Lambda
Carga de archivo → S3 Event → Lambda
Programacion → CloudWatch → Lambda
Mensaje → SQS/SNS → Lambda
Cambio en base datos → DynamoDB → Lambda
Principales Plataformas FaaS
| Servicio | Proveedor | Caracteristicas |
|---|---|---|
| AWS Lambda | Amazon | Lider del mercado, amplia integracion |
| Cloud Functions | Integracion con GCP, Firebase | |
| Azure Functions | Microsoft | Afinidad con .NET |
| Cloudflare Workers | Cloudflare | Ejecucion en edge, baja latencia |
| Vercel Functions | Vercel | Integrado con frontend |
Cold Start
Cuando una funcion se ejecuta por primera vez, el inicio del contenedor toma tiempo.
Cold Start:
Solicitud → [Inicio de contenedor 100-1000ms] → [Ejecucion de funcion] → Respuesta
Warm Start:
Solicitud → [Ejecucion de funcion] (reutilizacion de contenedor) → Respuesta
Si continua en estado inactivo:
[Detencion de contenedor] → La proxima vez sera Cold Start
Contramedidas para Cold Start
| Contramedida | Descripcion |
|---|---|
| Provisioned Concurrency | Iniciar contenedores previamente |
| Calentamiento periodico | Mantener contenedores con ejecucion periodica |
| Runtime ligero | Node.js, Python (mas rapido que Java) |
| Optimizacion de dependencias | Reducir tamano de paquetes |
// Inicializar conexion fuera de la funcion (se reutiliza)
const db = new Database();
export const handler = async (event) => {
// db se reutiliza
return await db.query('SELECT * FROM users');
};
Modelo de Precios
Ejemplo de Pago por Uso (AWS Lambda)
Precio = Numero de solicitudes x Tiempo de ejecucion x Memoria
Ejemplo:
- 1 millon de solicitudes/mes
- Tiempo promedio de ejecucion: 200ms
- Memoria: 512MB
Precio ≈ $0.20 + $3.33 = $3.53/mes
※ Capa gratuita: 1 millon de solicitudes, 400,000 GB-segundos/mes
Comparacion con Servidor Tradicional
Servidor tradicional:
24 horas x 30 dias = 720 horas de operacion
→ Cobro constante (incluso sin uso)
Serverless:
Solo se cobra por tiempo real de ejecucion
→ Sin cobro cuando esta inactivo
Casos de Uso
Casos Adecuados
Procesamiento orientado a eventos (procesamiento de archivos, Webhook)
Procesamiento por lotes irregular
Backend API (especialmente trafico bajo a medio)
Parte de microservicios
Prototipado, MVP
Casos No Adecuados
Alto trafico constante (eficiencia de costos deficiente)
Procesamiento de larga duracion (limite de tiempo de espera)
Latencia baja obligatoria (cold start)
Procesamiento con estado
WebSocket (soporte parcial)
Limitaciones
| Limitacion | AWS Lambda | Cloud Functions |
|---|---|---|
| Tiempo maximo de ejecucion | 15 min | 9 min (HTTP), 60 min (evento) |
| Memoria | 128MB-10GB | 128MB-32GB |
| Tamano de payload | 6MB (sincrono), 256KB (asincrono) | 10MB |
| Ejecuciones concurrentes | 1000 (por defecto, ampliable) | Limitado |
Patrones de Implementacion
API Gateway + Lambda
Cliente → API Gateway → Lambda → DynamoDB
↓
Autenticacion, Rate limiting,
Cache
Pipeline de Procesamiento de Eventos
S3 (Carga de imagen)
↓
Lambda (Generacion de miniatura)
↓
S3 (Guardado de miniatura)
↓
SNS (Notificacion)
Ejecucion Programada
// serverless.yml
functions:
dailyReport:
handler: handler.generateReport
events:
- schedule: cron(0 9 * * ? *) // Todos los dias a las 9
Frameworks
| Framework | Caracteristicas |
|---|---|
| Serverless Framework | Soporte multi-nube |
| AWS SAM | Oficial de AWS, integracion con CloudFormation |
| SST | TypeScript, desarrollo local |
| Terraform | Gestion integrada como IaC |
Resumen
Serverless es una arquitectura que reduce la carga de gestion de infraestructura y permite concentrarse en el desarrollo. Es especialmente adecuada para procesamiento orientado a eventos y cargas de trabajo irregulares. Sin embargo, hay puntos a considerar como cold start y limitaciones de tiempo de ejecucion. Es importante distinguir entre serverless y servidores tradicionales segun el caso de uso.
← Volver a la lista