Migración de una aplicación RAG agente a arquitectura serverless en AWS
El autor trasladó un router RAG basado en agentes, originalmente ejecutado en un EC2 t4g.small con Docker Compose, a una solución completamente serverless usando Bedrock, Lambda y DynamoDB.

El proyecto comenzó como un asistente que respondía preguntas sobre repositorios de código usando búsqueda híbrida y consultas SQL. En la fase inicial, los componentes —Streamlit, Postgres, Grafana y dos modelos de ML— corrían en seis contenedores Docker sobre una única instancia t4g.small de 2 GB de RAM, con un archivo de intercambio de 2 GB como colchón. El corpus constaba de 24 775 fragmentos (115 MB de JSON) que se cargaban en memoria en cada ejecución, y los modelos requerían un entorno virtual de 1,7 GB.
Esta arquitectura presentaba varios problemas para producción: alta latencia al cargar datos en RAM, ausencia de infraestructura como código, dependencia de un único punto de falla y un coste fijo de alrededor de 15 USD al mes, independientemente del tráfico.
Para eliminar estos cuellos de botella, el autor rediseñó la solución con los recursos nativos de AWS. La nueva arquitectura prescinde de la base de datos tradicional y de los contenedores persistentes. El flujo ahora es:
- CloudFront controla el acceso y sirve una SPA estática desde S3.
- Lambda (≈7 MB zip) actúa como endpoint API sin VPC.
- Bedrock provee los modelos Nova Pro/Lite y Titan, y el servicio de reranking.
- Los vectores de embeddings se almacenan en S3, mientras que los artefactos de proyecto (sqlite con fragmentos y FTS5) se descargan temporalmente a /tmp de la función Lambda.
- DynamoDB guarda conversaciones, feedback y límites de presupuesto diario.
- Step Functions orquesta la extracción, el crawl y la generación de embeddings, alimentando los vectores en S3.
Con esta configuración, el sistema ya no mantiene procesos en ejecución cuando no hay consultas, reduciendo el coste a cero en periodos de inactividad. Además, al mover el almacenamiento de vectores a S3 y el estado a DynamoDB, se elimina la necesidad de una base de datos relacional y se simplifica la escalabilidad.
El autor también sustituyó los modelos locales por los ofrecidos por Amazon, evitando dependencias de OpenAI o Anthropic y manteniendo todo bajo el SDK boto3. La infraestructura está declarada mediante IaC, lo que permite reproducir el despliegue de forma automática y versionada.
En resumen, la migración demuestra que una arquitectura serverless puede reemplazar una configuración monolítica en EC2, ofreciendo menor coste operativo, mayor elasticidad y una gestión de recursos más alineada con los principios de DevOps.


