Elija un servicio de Kinesis para la ingesta de streaming.
→Procesamiento controlado por el consumidor en subsegundos → Kinesis Data Streams. Entrega totalmente administrada a S3/Redshift/OpenSearch con conversión de formato opcional → Kinesis Data Firehose.
Por qué: KDS retiene registros (24h–365d) y admite múltiples consumidores. Firehose no tiene repetición; sacrifica la repetición por una entrega sin operaciones.
Referencia↗
El stream alcanza errores de ProvisionedThroughputExceeded durante el pico.
→Refragmentar. Cada shard admite 1 MB/s o 1,000 registros/s de ingesta, 2 MB/s de salida. Use claves de partición uniformes; habilite Enhanced Fan-Out para >2 MB/s por consumidor.
Por qué: Las claves de partición "calientes" concentran el tráfico en un solo shard. Las claves aleatorias o basadas en hash distribuyen la carga.
Referencia↗
La carga de trabajo de streaming es irregular e impredecible; la refragmentación manual es un problema operativo.
→Kinesis Data Streams en modo de capacidad bajo demanda. Se autoescala a 200 MB/s por defecto; se paga por volumen de datos.
Referencia↗
Múltiples consumidores que leen el mismo stream alcanzan el límite de lectura de 2 MB/s/shard.
→Enhanced Fan-Out. Cada consumidor obtiene 2 MB/s/shard dedicados a través de HTTP/2 SubscribeToShard basado en push.
Referencia↗
Maximizar el rendimiento de la ingesta desde la aplicación del lado del productor.
→Kinesis Producer Library (KPL) con agregación + colección. Agrupa múltiples registros de usuario en un solo registro de Kinesis de hasta 1 MB; reduce el costo de PUT.
Por qué: PutRecord de un solo registro tiene límite de velocidad y es costoso a 50k eventos/s. KPL agrega en el lado del cliente.
Referencia↗
Almacenar clickstream JSON en S3 como Parquet, particionado por tiempo de evento.
→Firehose con conversión de formato de registro (JSON → Parquet) usando una tabla de Glue Data Catalog + particionamiento dinámico por timestamp de evento.
Por qué: Parquet + particionamiento reduce drásticamente el costo de escaneo de Athena. El particionamiento dinámico evita un paso ETL separado.
Referencia↗
Algunos registros fallan en la transformación o entrega de Firehose; es necesario capturarlos para su repetición.
→Configure el backup de S3 con `AllData` o `FailedDataOnly`. Los registros fallidos se almacenan en el prefijo configurado con metadatos de error.
Referencia↗
Asegurar que no haya pérdida de datos en MSK si falla una AZ de broker.
→Factor de replicación ≥ 3 en 3 AZs y `min.insync.replicas=2` con `acks=all` del productor. Habilite Multi-AZ a través de KRaft sin ZooKeeper o mediante la colocación de brokers en 3 AZs.
Referencia↗
Transmitir desde MSK a S3, OpenSearch o RDS sin administrar un clúster de Kafka Connect.
→MSK Connect con conector administrado (Confluent S3 Sink, Debezium para CDC). Autoescala los workers por WCU.
Referencia↗
El tema almacena la última versión de un registro por clave; las versiones antiguas pueden descartarse.
→Configure el tema `cleanup.policy=compact`. Kafka retiene el valor más reciente para cada clave; los registros más antiguos con la misma clave son elegibles para la compactación.
Referencia↗
Transferencia semanal recurrente de 10 TB desde NFS on-prem a S3 a través de Direct Connect.
→AWS DataSync con agente on-prem + tarea programada. Verifica la integridad de los datos, admite transferencias incrementales, en paralelo.
Por qué: DataSync es más rápido que aws-cli sync y maneja la limitación de ancho de banda, los reintentos y la verificación de forma nativa.
Referencia↗
Extraer datos de APIs SaaS (Salesforce, ServiceNow, Zendesk) a S3 según un cronograma.
→AWS AppFlow. Conectores administrados, OAuth gestionado, programado o activado por eventos, escribe Parquet en S3.
Referencia↗
Replicar cambios continuos de SQL Server on-prem a Aurora MySQL con tiempo de inactividad mínimo.
→AWS DMS con tarea de carga completa + CDC. Utilice Schema Conversion Tool (SCT) para la conversión de esquemas/código heterogéneos antes de DMS.
Referencia↗
La instancia de replicación de DMS falla — la replicación se interrumpe.
→Habilite Multi-AZ en la instancia de replicación. Standby síncrono en otra AZ; failover automático.
Referencia↗
Se necesita análisis casi en tiempo real de datos OLTP de Aurora sin pipeline ETL.
→Integración Aurora zero-ETL con Redshift. Replicación continua de datos de Aurora a Redshift; las consultas ven los nuevos datos en segundos.
Por qué: Elimina los pipelines DMS / Glue / CDC personalizados para el caso de uso de OLTP a data warehouse.
Referencia↗
Mover 100 TB de archivo histórico desde on-prem a S3; ancho de banda limitado.
→AWS Snowball Edge Storage Optimized. Dispositivo físico enviado al sitio; copie los datos; envíelo de vuelta.
Referencia↗
El JSON de origen tiene arrays anidados; el análisis relacional posterior necesita filas aplanadas.
→Transformación `Relationalize` de Glue PySpark (o `explode()` en DataFrame) aplana arrays anidados en filas/tablas separadas.
Referencia↗
Glue Crawler infiere tipos ambiguos (`choice<int,string>`) de datos CSV desordenados.
→Aplique la transformación `ResolveChoice` — convierta a un tipo específico o proyecte a una estructura. O corrija en el origen aplicando un esquema.
Referencia↗
El trabajo ETL de Glue se ejecuta cada hora en datos de S3 en crecimiento; es necesario procesar solo archivos nuevos.
→Habilite los marcadores de trabajo de Glue. Glue rastrea los archivos/particiones procesados y los omite en las nuevas ejecuciones.
Por qué: Evita el reprocesamiento de todo el conjunto de datos. Requerido para pipelines ETL incrementales.
Referencia↗
El trabajo Spark de Glue falla con OutOfMemoryError en el controlador durante grandes agregaciones.
→Cambie a workers G.2X o G.4X (más memoria de controlador) o habilite los predicados push-down `--enable-glue-datacatalog` para reducir los datos barajados.
Referencia↗
Ejecute Spark Structured Streaming continuo contra una fuente de Kinesis con infraestructura administrada.
→Trabajo ETL de streaming de AWS Glue. Spark Structured Streaming internamente; checkpointing a S3.
Referencia↗
Un analista de negocios necesita limpiar y transformar datos sin escribir código.
→AWS Glue DataBrew. Transformaciones visuales basadas en recetas (más de 250), perfilado, linaje. Salida a S3, Redshift, RDS.
Referencia↗
Ejecutar el trabajo ETL de Glue solo después de que Crawler actualice con éxito el Data Catalog.
→Flujo de trabajo de Glue con triggers condicionales. Éxito de Crawler → activar trabajo ETL. Falla → omitir / alarma.
Referencia↗
Crawler infiere todas las columnas CSV como `string` — necesita tipos de fecha y número.
→Agregue un clasificador de Glue personalizado (patrón Grok o sugerencia de columna) antes del crawling. Alternativamente, escriba previamente una fila de encabezado con tipos explícitos.
Referencia↗
Múltiples productores/consumidores en Kafka necesitan evolución de esquemas sin romperse entre sí.
→AWS Glue Schema Registry con reglas de compatibilidad (BACKWARD/FORWARD/FULL). Los productores registran el esquema; los consumidores lo obtienen + validan.
Referencia↗
Elija entre EMR y Glue para Spark ETL.
→Spark personalizado de larga duración con ajuste profundo, múltiples frameworks (Hive, Presto, Flink) → EMR. ETL serverless de pago por trabajo con integración de Glue Data Catalog → Glue. Spark irregular/impredecible → EMR Serverless.
Referencia↗
Trabajos intermitentes de Spark/Hive; se desean cero operaciones de clúster y ningún cómputo inactivo.
→EMR Serverless. Pools de capacidad preinicializados para inicios de baja latencia; escala por trabajo; paga por hora de vCPU.
Referencia↗
Mezclar nodos de tarea spot y core bajo demanda para EMR optimizado en costos.
→Instance Fleets con capacidad objetivo por tipo. Flota de core bajo demanda para estabilidad de HDFS; flota de tarea spot con tipos de instancia diversificados.
Referencia↗
Estandarizar en Kubernetes; se desea que los trabajos de EMR Spark compartan el clúster con otras cargas de trabajo.
→EMR on EKS. Spark se ejecuta como pods en el clúster EKS existente; comparte infraestructura y roles de IAM a través de IRSA.
Referencia↗
Streaming con estado con agregaciones por ventana y semántica exactamente una vez.
→Kinesis Data Analytics for Apache Flink. Tiempo de ejecución de Flink administrado; checkpoints a S3; autoescala.
Referencia↗
Transformación ligera por registro en un stream de Kinesis (<1 ms cada uno).
→Lambda con Event Source Mapping en KDS. Ajuste `BatchSize`, `MaximumBatchingWindowInSeconds` y `ParallelizationFactor`.
Por qué: Lambda es más barato que KCL/Glue Streaming para trabajos pequeños por registro.
Referencia↗
Un paso de Step Functions falla ocasionalmente por limitación transitoria; reintentar y luego alertar.
→Agregue un bloque `Retry` con `ErrorEquals: ["Lambda.ThrottlingException", "States.TaskFailed"]`, `IntervalSeconds`, `MaxAttempts`, `BackoffRate=2`. Además, `Catch` a un estado de notificación.
Referencia↗
Procesar 500,000 archivos JSON en paralelo a través de la transformación Lambda.
→Estado de Map distribuido de Step Functions con `MaxConcurrency` y ItemReader desde S3. Distribución en miles de invocaciones paralelas de Lambda.
Referencia↗
DAG complejo con dependencias entre servicios (Glue + Redshift COPY + Lambda + correo electrónico) y requisitos de linaje.
→Amazon MWAA (Managed Workflows for Apache Airflow). Operadores nativos de Airflow para servicios de AWS; sincronización de DAGs impulsada por Git.
Referencia↗
Necesidad de revertir cambios en DAGs si un despliegue causa fallos.
→Almacene los DAGs en un bucket S3 versionado + sincronice a través del versionamiento de S3. O mantenga el repositorio de DAGs en Git con un entorno por rama + sincronización con S3 a través de CI.
Referencia↗