Ingesta de datos full‑stack en AWS (visión general)


Contexto y objetivo

Este pipeline ingiere datos a diario desde una API de terceros hacia AWS. El objetivo es mantener un flujo fiable y trazable desde el origen hasta datasets curados, sin exponer detalles internos.

Con “full‑stack” me refiero a que el proyecto cubre lógica de ingesta, modelado de datos, orquestación e infraestructura como código, es decir, el camino completo de extremo a extremo.


Arquitectura a alto nivel

El flujo es intencionalmente simple:

API → Lambda → S3 (Raw / Prepare / Refine) → PySpark → salidas curadas

Principios clave:

  • Reproducibilidad: el mismo job corre en local y en producción.
  • Trazabilidad: cada capa tiene un contrato claro.
  • Separación de responsabilidades: ingesta, transformación y publicación son pasos independientes.

Desarrollo local (paridad con producción)

En local, el pipeline corre dentro de una imagen Docker basada en PySpark. Esto aporta:

  • Entorno consistente entre máquinas.
  • Comportamiento idéntico al de producción.

Correr en local permite validar transformaciones y cambios de esquema sin tocar datos reales.


Ingesta (API → Lambda)

La ingesta se maneja con una Lambda que consume la API y escribe en la zona Raw. A alto nivel:

  • Extrae datos con paginación correcta.
  • Respeta rate limits.
  • Deja trazas para auditoría.

Este paso está diseñado para ser idempotente y seguro ante reintentos.


Capas de datos (Raw / Prepare / Refine)

El pipeline usa tres zonas:

  • Raw: payloads sin modificar para trazabilidad.
  • Prepare: datos limpios y normalizados con validaciones básicas.
  • Refine: datasets listos para consumo.

La separación de capas facilita depuración y backfills.


Orquestación

El pipeline corre una vez al día con un scheduler. Si algo falla, los reintentos se manejan a nivel de job y los fallos quedan visibles en logs/alertas.


Infraestructura como código (Terraform)

Terraform define la infraestructura: almacenamiento, IAM, la Lambda y otros recursos AWS. Esto hace que:

  • Los entornos sean reproducibles.
  • Los cambios queden auditables.
  • El pipeline sea portable a nuevas cuentas o regiones.

Seguridad y acceso (alto nivel)

Permisos con mínimo privilegio. Los secretos no están en el código y se gestionan fuera del repositorio.


Próximos pasos

En futuros posts puedo añadir:

  • Observabilidad y alertas.
  • Evolución de esquemas y calidad de datos.
  • Ajustes de rendimiento para mayores volúmenes.