La ingesta de datos es el primer paso en cualquier pipeline de ingeniería de datos. Igual que una fábrica necesita materias primas antes de poder fabricar productos, un sistema de datos necesita recopilar datos antes de poder analizarlos. En el examen AWS DEA-C01, una de las preguntas más frecuentes es "¿qué servicio de ingesta elegirías para esta situación?" Esta guía comienza con los dos conceptos fundamentales — streaming y batch — y explica cada servicio de AWS con analogías fáciles de entender para principiantes.
Streaming vs Batch — La Analogía del Suministro de Agua
Hay dos formas fundamentales de recopilar datos.
El streaming es como una tubería de agua: los datos fluyen continuamente en tiempo real. Cada vez que un usuario hace clic en una aplicación, cada vez que un sensor lee una temperatura, los datos de ese momento se envían de inmediato. La latencia es de milisegundos a segundos, y responde a la pregunta "¿qué está pasando ahora mismo?"
El batch es como un depósito de agua: los datos se acumulan y se entregan todos a la vez según un calendario. Piensa en procesar todas las transacciones del día a medianoche, o en analizar las ventas de la semana pasada cada lunes por la mañana. No hay tiempo real, pero es eficiente y más sencillo de implementar.
| Aspecto | Streaming | Batch | |---------|-----------|-------| | Llegada de datos | Tiempo real (continua) | Periódica (todo de una vez) | | Latencia | Milisegundos a segundos | Minutos a horas o días | | Casos de uso | Detección de fraude en tiempo real, monitoreo de precios | Informes mensuales de ventas, ETL nocturno | | Servicios AWS | Kinesis Data Streams, MSK | DMS, AppFlow, Transfer Family |
!Ingesta de datos en streaming vs por lotes
Kinesis Data Streams — La Autopista para Datos en Tiempo Real
Kinesis Data Streams es un servicio para recopilar y procesar grandes volúmenes de datos en tiempo real. Imagina una autopista con múltiples carriles (shards). Cuantos más carriles tengas, más coches (registros de datos) pueden circular al mismo tiempo.
Entender los shards es el concepto clave. Cada shard proporciona 1 MB/s de escritura y 2 MB/s de lectura. A medida que el volumen de datos crece, divides los shards para aumentar la capacidad.
La clave de partición (partition key) determina a qué shard va un registro. Los registros con la misma clave de partición siempre van al mismo shard. Por ejemplo, si usas el ID de cliente como clave de partición, todos los eventos del mismo cliente llegan al mismo shard en orden.
Características principales:
Retención: Por defecto los datos se conservan 24 horas; se puede ampliar hasta 365 días. Aunque falle un procesador, los datos siguen ahí esperando. Reproducibilidad (Replayability): Puedes leer los mismos datos múltiples veces. Esto significa que puedes reprocesar datos después de corregir un error en tu lógica, o tener múltiples sistemas leyendo el mismo stream de forma independiente. Múltiples consumidores: AWS Lambda, Kinesis Data Firehose y aplicaciones KCL pueden conectarse como consumidores al mismo tiempo. Enhanced Fan-out: En modo estándar, todos los consumidores comparten los 2 MB/s de lectura por shard. Enhanced Fan-out da a cada consumidor registrado sus propios 2 MB/s dedicados.
Kinesis Data Streams requiere gestión activa. Configuras el número de shards tú mismo y construyes tus propias aplicaciones consumidoras. A cambio tienes total flexibilidad y reproducibilidad completa.
Kinesis Data Firehose — Entrega Automática a Tu Destino
Kinesis Data Firehose es como un servicio de mensajería para datos. El mensajero (Firehose) recoge los paquetes (registros de datos) y los entrega automáticamente a la dirección que especificaste (S3, Redshift, OpenSearch, etc.). Tú no conduces el camión.
Al ser completamente serverless, no hay infraestructura que gestionar — ni shards, ni servidores. Simplemente envías datos y Firehose se encarga del resto.
Características principales:
Destinos de entrega automática: Amazon S3, Amazon Redshift, Amazon OpenSearch Service y endpoints HTTP son compatibles de forma nativa. Buffering: En lugar de entregar un registro a la vez, Firehose acumula datos hasta que se alcanza un umbral de tamaño (p.ej., 5 MB) o de tiempo (p.ej., 60 segundos), y luego entrega un lote. Esto evita que se acumulen miles de archivos pequeños en S3. Transformación con Lambda: Antes de entregar los datos, Firehose puede invocar una función Lambda para transformarlos — por ejemplo, convertir JSON a Parquet o enmascarar campos sensibles. Sin consumidores personalizados: A diferencia de Data Streams, Firehose solo entrega a sus destinos predefinidos. Sin reproducibilidad: Una vez entregados los datos, no puedes volver a leerlos desde Firehose.
Kinesis Data Streams vs Kinesis Data Firehose:
| Aspecto | Data Streams | Firehose | |---------|-------------|---------| | Gestión | Gestión manual de shards | Completamente serverless | | Consumidores | Apps de consumo personalizadas | Solo destinos fijos | | Reproducibilidad | Sí | No | | Latencia | Milisegundos | Decenas de segundos a minutos | | Mejor para | Procesamiento complejo en tiempo real | Carga automática sencilla a S3/Redshift |
Amazon MSK — Kafka Gestionado en AWS
Apache Kafka es una plataforma de streaming de código abierto originalmente creada por LinkedIn, ampliamente utilizada para streaming de datos a gran escala. Amazon MSK (Managed Streaming for Apache Kafka) es un servicio donde AWS gestiona el clúster de Kafka por ti.
Piensa en la diferencia entre "construir y operar tus propios servidores Kafka" frente a "que AWS gestione Kafka por ti (MSK)." Con MSK, AWS se encarga de las actualizaciones de brokers, parches y recuperación de fallos.
MSK vs Kinesis Data Streams:
| Aspecto | Amazon MSK | Kinesis Data Streams | |---------|-----------|---------------------| | Tecnología base | Apache Kafka | Tecnología propia de AWS | | Ecosistema | Compatibilidad total con el ecosistema Kafka | Nativo de AWS | | Migración | El código Kafka existente funciona tal cual | Requiere reescritura de código | | Complejidad operativa | Relativamente alta | Baja | | Elige cuando | Necesitas el ecosistema Kafka | Empiezas un proyecto nativo de AWS |
Consejo para el examen: Si la pregunta menciona "migrar una carga de trabajo Kafka existente a AWS" o "ecosistema Kafka," elige MSK. Si dice "streaming nativo de AWS," elige Kinesis Data Streams.
Servicios de Ingesta Batch — Recopilar y Procesar en Lotes
Para ingestas periódicas o de gran volumen que no requieren tiempo real, estos son los servicios adecuados.
AWS DMS (Database Migration Service)
DMS es como una empresa de mudanzas profesional. Toma el mobiliario (datos) de tu casa vieja (base de datos de origen) y lo mueve a la casa nueva (base de datos de destino).
Migración homogénea: MySQL a MySQL, Oracle a Oracle Migración heterogénea: Oracle a Aurora PostgreSQL, SQL Server a MySQL CDC (Change Data Capture): DMS captura continuamente cada INSERT, UPDATE y DELETE de la base de datos de origen y aplica esos cambios en el destino. Es como seguir el "diario de cambios" de una base de datos en tiempo real. Carga completa más CDC: Primero copia todos los datos existentes, luego sincroniza continuamente solo los cambios.
AWS AppFlow
AppFlow trae datos de aplicaciones SaaS — Salesforce, SAP, Google Analytics, Slack y más — a AWS. En lugar de escribir código de integración API personalizado para cada servicio SaaS, AppFlow te permite configurar la conexión en unos pocos clics.
Destinos: S3, Redshift, Salesforce, Snowflake y otros Se ejecuta según un calendario o activado por eventos Puede filtrar y transformar datos en tránsito No requiere código para ingestar datos de SaaS
AWS Transfer Family
Transfer Family permite a socios externos subir y descargar archivos a S3 o EFS mediante los protocolos SFTP, FTP, FTPS o AS2. Si un socio comercial te envía archivos CSV por SFTP cada día y quieres que se almacenen automáticamente en S3, Transfer Family es la solución.
S3 Event Notifications
Cuando se sube o elimina un archivo de un bucket S3, S3 Event Notifications puede activar automáticamente otro servicio. Por ejemplo, cuando un socio sube un CSV a tu bucket S3, una función Lambda comienza a procesarlo de inmediato. Las notificaciones pueden enviarse a SQS, SNS, Lambda o EventBridge.
Resumen de Puntos Clave para el Examen
| Palabra clave | Elige este servicio | |--------------|-------------------| | Streaming en tiempo real, procesamiento personalizado, reproducible | Kinesis Data Streams | | Datos en tiempo real cargados automáticamente a S3/Redshift, serverless | Kinesis Data Firehose | | Apache Kafka gestionado, migrar carga de trabajo Kafka existente | Amazon MSK | | Migración de bases de datos, CDC | AWS DMS | | Ingestar datos de apps SaaS (Salesforce, etc.) | AWS AppFlow | | Transferencia de archivos SFTP/FTP a S3 | AWS Transfer Family | | Activar procesamiento automáticamente al subir archivo a S3 | S3 Event Notifications + Lambda |
Guía de decisión Data Streams vs Firehose: Si necesitas lógica de consumo personalizada o capacidad de reproducir datos, elige Data Streams. Si simplemente necesitas recopilar datos automáticamente en S3 o Redshift sin procesamiento personalizado, Firehose es la opción más simple y económica.