Pipelines de ML en Streaming y Basados en Eventos: Kinesis, Firehose, Flink, MSK, EventBridge, Step Functions y MWAA

El streaming y la automatización basada en eventos son el centro de unas 46 preguntas de MLA-C01. Este artículo cubre los cuatro servicios de streaming, Firehose, la inferencia en tiempo real sobre flujos, los disparadores de S3 y EventBridge, y la elección entre Pipelines, Step Functions y MWAA.

En nuestro banco de preguntas de MLA-C01, unas 46 preguntas tienen como concepto central Kinesis, Lambda, EventBridge o Step Functions. La guía del examen pregunta por las mismas habilidades: la tarea 1.1 cubre la ingesta de datos en streaming con Kinesis, Apache Flink y Apache Kafka, la tarea 1.2 la transformación de datos en streaming con Lambda y Spark, la tarea 3.1 la elección del orquestador entre Apache Airflow y SageMaker Pipelines, y la tarea 3.3 la configuración de trabajos de entrenamiento e inferencia con reglas de EventBridge. Lo esencial es cómo recibir los datos que llegan en tiempo real, dónde procesarlos y qué despierta el paso siguiente.

Este artículo empieza por la diferencia entre lotes y streaming y luego cubre los cuatro servicios de streaming, los detalles de Firehose, cómo hacer inferencia en tiempo real sobre un flujo, cómo despertar pipelines con eventos de S3 y EventBridge, los tres orquestadores y los servicios que cambiaron de nombre o se retiraron. El lago de datos basado en S3 y los formatos de datos se trataron antes en Ingesta y Almacenamiento de Datos.

---

 

Lotes y Streaming: ¿Qué Cambia?

Un servicio de paquetería reúne los envíos y los manda todos juntos a una hora fija. El agua del grifo fluye sin parar en cuanto lo abres. Si el procesamiento por lotes es la paquetería, el streaming es el grifo.

| Aspecto | Lotes | Streaming | |------|------|------| | Cuándo se procesa | Se acumula y se procesa de una vez cada cierto tiempo | De forma continua, en cuanto llegan los datos | | Latencia | Minutos a horas | Milisegundos a segundos | | Herramientas típicas | Glue ETL, EMR, SageMaker Processing, Batch Transform | Kinesis, Firehose, Managed Service for Apache Flink, MSK | | Ejemplo de ML | Reentrenamiento semanal, puntuar a todos los clientes cada noche | Detección de fraude en el momento del pago, actualizar recomendaciones con cada clic |

Los sistemas reales usan ambos. El diseño más común toma decisiones en tiempo real sobre el flujo mientras guarda los mismos datos en S3 para reentrenar por lotes.

---

 

Los Cuatro Servicios de Streaming

| Servicio | Función | Características clave | Pista en la pregunta | |------|------|------|------| | Kinesis Data Streams | Ingesta en tiempo real y retención temporal | Rendimiento por shard; varios consumidores leen los mismos datos por separado y pueden volver a leerlos | "varias aplicaciones procesan el mismo flujo en tiempo real" | | Amazon Data Firehose | Entrega automática a un destino | Sin servidores ni shards que administrar; acumula y carga en S3, Redshift u OpenSearch | "guardar datos en streaming en S3 sin escribir código" | | Managed Service for Apache Flink | Procesamiento de flujos con estado | Agregaciones por ventanas de tiempo, uniones de flujos, detección de anomalías en tiempo real | "media móvil de 5 minutos", "agregación en tiempo real sobre el flujo" | | Amazon MSK | Apache Kafka administrado | Usar tal cual las aplicaciones y herramientas de Kafka existentes | "ya usamos Kafka" |

Un shard de Kinesis Data Streams acepta 1 MB o 1.000 registros por segundo y entrega 2 MB por segundo. Si el rendimiento no alcanza, añade shards o usa el modo bajo demanda, que gestiona la capacidad automáticamente. Los datos se conservan 24 horas de forma predeterminada y hasta 365 días, así que pueden volver a leerse tras un fallo. Para video, ingiérelo con Kinesis Video Streams y analízalo con Rekognition o con un modelo de SageMaker AI.

Consejo: "Solo recibir los datos y guardarlos en S3" es Firehose, "varios consumidores procesan los datos recibidos en tiempo real" es Kinesis Data Streams, y "agregaciones por ventanas de tiempo y estado sobre el flujo" es Managed Service for Apache Flink.

!Pipeline de ML en streaming en el que los eventos recibidos por Kinesis Data Streams se puntúan en tiempo real con Lambda y un endpoint de SageMaker, mientras Firehose los guarda en S3 para reentrenar

---

 

Firehose en Detalle: Búfer, Transformación y Formatos

El examen pregunta a menudo por las funciones concretas de Firehose.

| Función | Qué hace | Pista en la pregunta | |------|------|------| | Búfer | Entrega cuando se alcanza primero el tamaño del búfer (1–128 MiB) o el intervalo del búfer (hasta 900 segundos) | "casi en tiempo real es suficiente" | | Transformación con Lambda | Limpia registros o añade campos antes de la entrega | "quitar los campos con datos personales antes de cargar" | | Copia de los registros de origen | Guarda los registros originales, sin transformar, en otra ruta de S3 | "conservar tanto el resultado transformado como el original" | | Conversión de formato | Convierte JSON a Parquet u ORC antes de guardar (con un esquema del Catálogo de Datos de Glue) | "formato columnar para reducir el costo de las consultas de Athena" | | Particionamiento dinámico | Divide la ruta de S3 según valores del registro (como la fecha o el ID de cliente) | "separar automáticamente en una carpeta por cliente" |

La conversión de formato espera entrada en JSON. Otros formatos como CSV se convierten antes a JSON con una transformación de Lambda. Al entregar a Redshift, Firehose escribe primero los datos en S3 y luego los carga en Redshift (COPY).

Consejo: "Un retraso de un minuto aproximadamente está bien y los datos deben llegar a S3 como Parquet sin carga operativa" es Firehose con conversión de formato. Por el búfer, Firehose no encaja en el procesamiento en tiempo real a nivel de milisegundos.

---

 

Inferencia en Tiempo Real sobre un Flujo

Para decidir si un pago es fraudulento en el momento en que ocurre, hay que llamar al modelo con cada evento del flujo.

| Etapa | Servicio | Qué hace | |------|------|------| | Ingesta | Kinesis Data Streams | Recibe los eventos de pago en tiempo real | | Procesamiento e invocación | Lambda (o Managed Service for Apache Flink) | Lee los eventos en lotes, los preprocesa y llama al endpoint de SageMaker | | Inferencia | Endpoint en tiempo real de SageMaker AI | Devuelve la puntuación de fraude | | Guardar resultados y avisar | DynamoDB, SNS | Guarda la puntuación y avisa si supera el umbral | | Datos de reentrenamiento | Firehose → S3 | Acumula los eventos originales para reentrenar por lotes |

Cuando un flujo de Kinesis se conecta a Lambda como origen de eventos, Lambda recibe y procesa los registros en lotes. Las características que necesitan una ventana de tiempo, como el número de transacciones de los últimos 10 minutos, conviene calcularlas en Flink. Si escribes las características calculadas en tiempo real en el almacén en línea de SageMaker Feature Store, la inferencia lee esos mismos valores y las características de entrenamiento y servicio se mantienen coherentes.

Consejo: "Puntuar cada transacción del flujo en tiempo real y conservar los datos originales para reentrenar" es Kinesis Data Streams + Lambda + un endpoint de SageMaker, combinado con Firehose → S3.

---

 

Despertar Pipelines con Eventos: Eventos de S3 y EventBridge

La automatización basada en eventos consiste en que el paso siguiente empiece solo cuando ocurre algo, sin que alguien tenga que pulsar un botón cada vez.

| Disparador | Ejemplo | A qué se conecta | |------|------|------| | Notificación de eventos de S3 | Se sube un nuevo archivo de datos de entrenamiento | Lambda, SQS, SNS o EventBridge | | Regla programada de EventBridge | Cada domingo a las 2 de la madrugada | Una ejecución de pipeline de SageMaker | | Eventos de cambio de estado de SageMaker | Trabajo de entrenamiento terminado o fallido, cambio de estado del endpoint | Avisos con Lambda, inicio del paso siguiente | | Model Package State Change | Se aprueba un modelo en el registro de modelos | Un pipeline de despliegue (CodePipeline, etc.) | | Alarma de CloudWatch | Model Monitor detecta una infracción por deriva | Un pipeline de reentrenamiento |

EventBridge admite SageMaker Pipelines como destino directo, así que cuando llega un evento que cumple la regla puede iniciar una ejecución del pipeline (StartPipelineExecution) sin pasar por Lambda. Enviar los eventos de S3 a EventBridge permite repartir el mismo evento entre varios destinos y aplicar condiciones más finas.

Consejo: "Ejecutar automáticamente el pipeline de reentrenamiento cuando lleguen datos nuevos a S3" es evento de S3 → EventBridge → SageMaker Pipelines. "Desplegar automáticamente cuando se apruebe un modelo" es una regla de EventBridge que recibe el evento Model Package State Change.

---

 

Elegir el Orquestador: SageMaker Pipelines, Step Functions o MWAA

| Orquestador | Puntos fuertes | Cuándo encaja | |------|------|------| | SageMaker Pipelines | Pasos propios de ML como procesamiento, entrenamiento, ajuste, evaluación, condiciones y registro del modelo; caché de pasos; seguimiento del linaje; integración con el registro de modelos | Automatizar el propio flujo de ML con la mínima operación | | AWS Step Functions | Máquina de estados de uso general, integraciones directas con muchos servicios de AWS, reintentos y bifurcaciones ante errores, procesamiento en paralelo con el estado Map, espera de aprobación humana | Un solo flujo que une varios servicios como Lambda, Glue, SageMaker y traducción | | Amazon MWAA | Apache Airflow administrado, DAG en Python, operadores de SageMaker | Equipos que ya operan pipelines de datos como DAG de Airflow |

Step Functions admite una integración (.sync) que inicia un trabajo largo, como un trabajo de entrenamiento de SageMaker, y espera hasta que termina. El estado Map se usa para repartir miles de archivos de S3 y procesarlos a la vez (por ejemplo, traducir miles de documentos en paralelo).

Consejo: "La empresa ya opera cientos de DAG de Airflow" es MWAA, "un pipeline formado solo por pasos de ML con la menor carga operativa" es SageMaker Pipelines, y "un flujo que mezcla Lambda, Glue, SageMaker y aprobación humana" es Step Functions.

---

 

Servicios Renombrados o Retirados

Los materiales antiguo

Volver a la lista del blog