Skip to content

Data Lake

El flujo de data lake toma las órdenes desde SNS y las persiste en S3:

sequenceDiagram participant SNS as SNS Orders Topic participant SQS as Orders Lake Queue participant Lambda as Order Lake Lambda participant Kinesis as Kinesis Stream participant Firehose as Firehose participant S3 as DataBucket SNS->>SQS: Mensaje de orden SQS->>Lambda: Batch SQS Lambda->>Kinesis: PutRecord Kinesis->>Firehose: Stream Firehose->>S3: Parquet particionado

Notas:

  • SQS batching: usa batch size 5-10 (máximo 10) y visibility timeout >= 6x el timeout de Lambda; batches más grandes reducen costo pero aumentan latencia.
  • Kinesis capacity: on-demand recomendado; en provisioned planear shards (1 MB/s write por shard) y auto-scaling/alarms para evitar throttling.
  • S3 partitioning: s3://<bucket>/orders/year=YYYY/month=MM/day=DD/hour=HH/; vigila small files y programa compaction si el volumen es alto.
  • Glue Catalog: usa crawler programado o gestión manual con versionado de esquema y validación antes de cambios.

Firehose:

  • Conversión Parquet: columnas en orden orderId (string), userPk (string), createdAt (timestamp), status (string), total (double), items (string); compresión SNAPPY.
  • Particiones dinámicas: s3://<bucket>/orders/year=YYYY/month=MM/day=DD/hour=HH/.
  • Errores y reintentos: retries internos con backoff hasta ~300s; buffering mínimo 64 MB o 300s (requerido para conversión); registros fallidos van al prefijo de errores en S3 (ej. errors/processing-failed/) y se monitorean con CloudWatch Logs y alarmas.