Sistema backend serverless basado en eventos utilizando AWS. Permite recibir pedidos, procesarlos de forma asíncrona y manejar fallos de manera resiliente.
Flujo principal:
Client → API Gateway → Lambda (createOrder) → SQS → Lambda (processOrder) → DynamoDB
Características:
- Procesamiento asíncrono
- Desacople mediante colas
- Persistencia de estado
- Retries automáticos + DLQ
- Observabilidad con correlationId
- Node.js + TypeScript
- Serverless Framework
- AWS Lambda
- Amazon SQS + DLQ
- Amazon DynamoDB
- CloudWatch Logs
- Creación de pedidos vía API REST
- Procesamiento asíncrono mediante SQS
- Persistencia de estados (PENDING, PROCESSING, COMPLETED)
- Manejo de errores con retries automáticos
- Dead Letter Queue para fallos definitivos
- Trazabilidad end-to-end con correlationId
-
Cliente envía POST /orders
-
Se genera orderId y correlationId
-
Se guarda en DynamoDB (PENDING)
-
Se envía mensaje a SQS
-
Worker procesa el pedido
-
Se actualiza estado (PROCESSING → COMPLETED)
-
En caso de error:
- Reintentos automáticos
- Envío a DLQ tras múltiples fallos
El sistema implementa correlation IDs para trazabilidad:
- Cada request genera un correlationId
- Se propaga a través de SQS y Lambdas
- Permite reconstruir el flujo completo desde logs
Ejemplo de log:
{ "message": "Processing order", "correlationId": "123", "orderId": "abc" }
- Retries automáticos configurados en SQS
- Dead Letter Queue (DLQ) para mensajes fallidos
- Sistema tolerante a fallos sin pérdida de datos
npm install
serverless deploy
curl -X POST https://<api-url>/orders \
-H "Content-Type: application/json" \
-d '{"productId":"abc","quantity":2}'
serverless remove
- Se utilizó SQS para desacoplar el procesamiento y mejorar escalabilidad
- Se eligió DynamoDB por su integración nativa con Lambda y escalabilidad automática
- Se implementó DLQ para evitar pérdida de mensajes
- Se usó correlationId para trazabilidad en un sistema distribuido