Backend
Serverless
``
Conceptos Clave
- Backend
- Instance Scaling
- Lambda Functions
- AWS Lambda
- Trigger: ejecución basada en eventos, sin servidor dedicado.
- Corto: diseñado para tareas breves y acotadas.
- Pocas ejecuciones: ideal para cargas intermitentes o picos eventuales.
- Tiempo de respuesta: muy rápido cuando está en “warm”, puede tener “cold start”.
- Menor costo que una api tradicional cuando el tráfico es bajo o irregular.
- Riesgo de recursión: cuidado con auto-disparos, bucles por eventos encadenados o colas que se reinyectan.
Arquitectura Serverless
- Modelo totalmente administrado: no hay servidores, solo se pagan invocaciones y tiempo de ejecución.
- Escalado automático: el proveedor crea instancias efímeras para cada petición.
- Integración nativa con colas, tópicos, buckets y cron jobs.
- Ideal para sistemas reactivos, pipelines event-driven y microtareas aisladas.
- Limita el statefulness: los estados persistentes requieren servicios externos (bases de datos, colas, caches).
Comparativa: ETL vs api
- ETL (Extract–Transform–Load)
- Procesos por lotes, ventanas programadas o eventos de ingesta.
- Coste optimizado para cargas pesadas y puntuales.
- Uso frecuente de lambdas encadenadas, colas (SQS), buckets (S3) o streams (Kinesis).
- Permite fan-out/fan-in, paralelización masiva y flujos de datos.
- Tolerancia a fallos, reintentos y DLQ (Dead Letter Queue).
- API (interactiva, request–response)
- Respuesta inmediata para clientes (web/móvil/sistema).
- Puede montarse con API Gateway + Lambda Functions.
- Adecuada para operaciones cortas, CRUD ligeros o endpoints event-driven.
- Si la carga se vuelve constante o pesada, puede volverse más costosa que usar contenedores o instancias gestionadas.
Patrones Típicos en Serverless
- Funciones múltiples pequeñas (FaaS) orientadas a un único objetivo.
- Orquestación con Step Functions (workflows, compensaciones, paralelismo).
- Event routing mediante servicios nativos (SNS, SQS, EventBridge).
- Almacenamiento serverless: DynamoDB, Firestore, FaunaDB.
- Trigger-based pipelines: cargas de archivos, notificaciones, cron, streams.
- Sistemas híbridos: serverless + contenedores para cargas largas o persistentes.
Uso Responsable y Anti-patterns
- Evitar funciones demasiado grandes (monolambda).
- No abusar de ejecuciones >15 minutos (límite o mala práctica según proveedor).
- Evitar el arranque frío en sistemas críticos de baja latencia (usar provisioned concurrency).
- Prevenir bucles infinitos en triggers (S3 → Lambda → S3).
- No almacenar estado en /tmp más allá de la sesión, no es persistente.
Casos de Uso
- Procesamiento de logs en tiempo real.
- Mini-APIs para formularios o webhooks.
- Validación de archivos cargados en buckets.
- Procesos ETL bajo demanda o en cron.
- Integración con servicios externos vía webhooks/queues.
- Automatización operativa (infra, seguridad, auditoría de eventos).
Código – Ejemplo de Lambda en Node.js
exports.handler = async (event) => {
const input = event.detail || {};
// Transformación simple
const result = {
received: input,
timestamp: new Date().toISOString()
};
return { statusCode: 200, body: JSON.stringify(result) };
};
`
Código – Ejemplo de Trigger EventBridge (Infra IaC)
{
"source": ["app.sales"],
"detail-type": ["order.created"],
"detail": {
"orderId": ["*"]
}
}
Serverless: Conceptos Avanzados y Arquitectura 2025
Seguridad en Entornos Serverless
- Zero-trust por función: aplicar políticas IAM mínimas para cada ejecución.
- Segmentación lógica: separar funciones por dominio y permisos.
- Rotación automática de credenciales mediante servicios gestionados.
- Gestión de secretos: uso de Secret Manager o KMS, nunca en variables de entorno planas.
- Endpoints firmados y autenticación basada en tokens efímeros.
Observabilidad y Trazabilidad
- Logging estructurado obligatorio para pipelines y APIs serverless.
- Trazas distribuidas integradas con X-Ray, CloudTrace o OpenTelemetry.
- Métricas esenciales:
- Duración
- Cold starts
- Tasa de error
- Concurrencia
- Dashboards automatizados para picos de invocación o latencias anómalas.
Límites y Restricciones Técnicas
- Restricciones típicas:
- Memoria limitada por función (según proveedor).
- Tiempo máximo de ejecución.
- /tmp limitado y no persistente.
- Conectividad a VPC opcional pero incrementa latencia.
- Límites de concurrencia: ajustar reservas para evitar throttling.
- Límites de tamaño:
- Payloads de eventos
- Tamaño del paquete de despliegue
- Logs por invocación
Costes y Optimización
- Principales factores de coste:
- Invocaciones
- Duración de ejecución
- Concurrencia reservada
- Estrategias:
- Reducir tiempo de arranque mediante runtimes optimizados.
- Uso de funciones pequeñas para minimizar ejecución innecesaria.
- Reemplazar llamadas sincrónicas por colas (más barato y resiliente).
- Consolidar funciones solo cuando hay afinidad técnica real.
Integraciones y Ecosistema
- Modelos event-driven basados en:
- SNS/SQS
- Pub/Sub
- EventBridge
- Streams (Kinesis/BigQuery Streaming)
- Integración natural con:
- Bases serverless (DynamoDB, Aurora Serverless)
- Almacenamiento de objetos
- Sistemas de mensajería IoT
- Webhooks externos
Arquitecturas Híbridas
- Cuando usar serverless + contenedores:
- Procesos largos o CPU intensivos.
- Modelos ML que requieren GPU.
- API de tráfico constante que encarece Lambda.
- Patrones híbridos comunes:
- Front serverless + backend en contenedores.
- ETL pesado en contenedores + transformación ligera en funciones.
- Workers serverless para automatización operativa.
Patrones de Diseño Avanzados
- Fan-out/Fan-in: procesamiento masivo paralelo con agregación al final.
- Orquestación vs coreografía:
- Orquestación: Step Functions.
- Coreografía: eventos entre funciones sin controlador central.
- Sidecar lógico: no existe contenedor sidecar, se reemplaza con servicios externos (logs, secrets, caches).
- Transactional outbox serverless: consistencia eventual con colas + streams.
Casos de Uso Avanzados
- Procesamiento de eventos en real-time analytics.
- Validación y enriquecimiento de datos en streaming.
- Data mesh serverless (product teams independientes).
- Automatización de gobernanza y compliance.
- Offloading de tareas de sistemas legacy mediante eventos.
Heading: Código – Métrica de Cold Start (OTel)
import { trace } from "@opentelemetry/api";
const tracer = trace.getTracer("lambda");
exports.handler = async () => {
const span = tracer.startSpan("cold-start-check");
span.end();
return "ok";
};
`
Heading: Código – Patrón Fan-out con Mensajería
{
"fanout": {
"topic": "events.data.raw",
"subscribers": [
"lambda.cleaner",
"lambda.enricher",
"lambda.dispatcher"
]
}
}
Glosario Serverless
Conceptos Generales
- Serverless: Modelo donde la infraestructura es totalmente gestionada y se paga por uso.
- FaaS (Function as a Service): Ejecución de funciones desencadenadas por eventos.
- BaaS (Backend as a Service): Servicios backend mantenidos por el proveedor (auth, storage, DB).
- Event-driven: Arquitectura basada en eventos que activan procesos.
- Cold Start: Latencia inicial cuando la función arranca sin estar en memoria.
- Warm Start: Función ya inicializada, tiempo de respuesta bajo.
- Concurrencia: Número de ejecuciones simultáneas permitidas para una función.
Integraciones y Triggers
- Trigger: Evento que activa una función.
- Cron Serverless: Programación de ejecuciones periódicas sin servidores.
- Webhook: Notificación externa que dispara una ejecución.
- EventBridge / Event Router: Sistema para enrutar eventos entre servicios.
- Fan-out: Disparar múltiples funciones a partir de un solo evento.
- Fan-in: Agregar resultados múltiples en un único proceso.
Procesos ETL y Datos
- ETL: Extract, Transform, Load; procesamiento por lotes o eventos.
- Streams: Flujos continuos de datos, útiles para procesamiento en tiempo real.
- DLQ (Dead Letter Queue): Cola de mensajes fallidos para análisis.
- Ingestion Pipeline: Circuito de entrada de datos compuesto por triggers, colas y funciones.
- Idempotencia: Garantía de que un proceso repetido no causa duplicados.
Componentes Operativos
- IAM: Control de permisos a nivel función/servicio.
- Secret Manager: Gestión segura de credenciales.
- VPC Integration: Conexión de funciones a redes privadas.
- Provisioned Concurrency: Mantener instancias precalentadas.
- Throttling: Límite impuesto cuando se supera la concurrencia configurada.
Patrones de Diseño
- Orquestación: Secuencia centralizada de pasos (p.ej. Step Functions).
- Coreografía: Eventos independientes que coordinan procesos.
- Circuit Breaker: Prevención de fallos repetidos ante servicios externos inestables.
- Retry Policy: Configuración de reintentos automáticos.
- Transactional Outbox: Garantiza entrega de eventos sin pérdida.
- Bulk Processing: Procesamiento de lotes en una única invocación.
Rendimiento y Costes
- Execution Time: Duración total de la función, afecta al coste.
- Memory Allocation: Memoria asignada que impacta precio y velocidad.
- Payload Size: Tamaño máximo permitido para solicitudes o respuestas.
- Timeout: Límite de tiempo de ejecución.
- Billing Granularity: Unidad mínima de facturación (ms, GB-segundo).
- Warm Pools: Técnicas para mantener instancias listas para cargar.
Observabilidad y Logs
- Structured Logging: Logs en formato JSON para análisis.
- Tracing: Seguimiento de solicitudes entre servicios.
- Metrics: Indicadores clave (errores, duración, concurrencia).
- Monitoring Dashboard: Vista de rendimiento en tiempo real.
- Alerting: Notificaciones basadas en umbrales o anomalías.
Anti-patterns Comunes
- Monolambda: Función gigante con demasiado código.
- Stateful Functions: Guardar estado dentro de la función en vez de fuera.
- Exceso de Llamadas Sincrónicas: Aumenta costes y latencia.
- Bucles de Eventos: Triggers recursivos accidentales.
- Sobredimensionar Memoria: Costes innecesarios sin beneficio real.
Arquitecturas Híbridas
- Serverless + Contenedores: Combina funciones y microservicios persistentes.
- Batch Containers: Tareas largas movidas a contenedores temporales.
- Data Lake Serverless: Procesos ligeros con almacenamiento en objetos.
- API Híbrida: Endpoint serverless para tráfico bajo + contenedores para tráfico constante.
¿Te gusta este contenido? Suscríbete vía RSS