Saltar al contenido

Ingeniería de datos · 18 min

Mapa de competencias, herramientas y arquitecturas por nivel. Trece módulos independientes, del almacenamiento a la arquitectura.

Nivel fundacional

01

Almacenamiento y bases de datos

  • SQL
  • NoSQL
  • Data Lake
  • Lakehouse

El almacenamiento de datos es la base de todo lo demás. La pregunta central que estructura este espacio es: ¿para qué sirve cada sistema? No existe un tipo de base de datos "mejor", sino el más adecuado para cada caso de uso.

La distinción más importante: OLTP vs OLAP

Como ingeniero de datos no gestionas sistemas transaccionales (OLTP), pero debes entender perfectamente cómo funcionan porque de ahí vienen tus datos. Tu terreno es OLAP: sistemas diseñados para leer grandes volúmenes y hacer análisis. Conocer la diferencia en profundidad — índices B-tree vs columnar, row store vs column store — te permite tomar decisiones de diseño inteligentes.

Sistemas relacionales y data warehouses

SQL relacional

  • PostgreSQL, MySQL
  • OLTP, transacciones ACID
  • Joins, índices, particiones

Data warehouse

  • Snowflake, BigQuery, Redshift, Synapse
  • OLAP, columnar, MPP
  • Optimizado para análisis a gran escala

NoSQL

  • MongoDB, Cassandra, Redis, DynamoDB
  • Documento, clave-valor, grafo
  • Esquemas flexibles, escalado horizontal

Almacenamiento masivo y analítico

Data lake

  • S3, GCS, ADLS
  • Parquet, ORC, Avro
  • Raw, silver y gold zones

Lakehouse

  • Delta Lake, Iceberg, Hudi
  • ACID sobre object storage
  • Time travel y evolución de esquemas

Object storage

  • S3, GCS, Azure Blob
  • Particionado, compresión
  • Lifecycle policies, costes

Conceptos clave

Modelado de datos

  • Estrella, copo de nieve
  • Hechos y dimensiones
  • Data Vault, Kimball

Optimización

  • Particionado, clustering
  • Compresión, bloom filters
  • Z-ordering, vacuuming

Consistencia y CAP

  • ACID vs BASE
  • Teorema CAP
  • Eventual consistency

Herramientas y decisiones de diseño

Elección tecnológica

  • OLTP vs OLAP
  • Latencia vs volumen/coste
  • Escalabilidad
  • Mantenimiento

Formatos de fichero

  • Parquet, ORC (columnar)
  • Avro (row)
  • JSON, CSV

Explicación de cada área

SQL avanzado es no negociable

No SQL básico de SELECT y JOIN, sino window functions (ROW_NUMBER, LAG, LEAD, RANK), CTEs recursivos, optimización de queries con EXPLAIN ANALYZE, gestión de índices compuestos y particionado. El 80% de las entrevistas de data engineering avanzado tienen preguntas de SQL complejo.

El paradigma lakehouse es el presente

La industria está convergiendo hacia arquitecturas donde el object storage (S3/GCS) actúa como capa de almacenamiento universal, y tecnologías como Delta Lake o Apache Iceberg añaden propiedades ACID, time travel y evolución de esquemas encima. Entender Delta Lake y especialmente Iceberg es hoy prácticamente obligatorio en puestos senior.

El modelado dimensional sigue siendo fundamental

Aunque parezca anticuado, el esquema estrella de Kimball — tablas de hechos más dimensiones — sigue siendo la base de casi todos los data warehouses empresariales. dbt lo ha popularizado enormemente. Entender cuándo usar un esquema estrella frente a Data Vault o un modelo plano es una decisión arquitectónica que marca la diferencia.

Formatos de fichero: Parquet es el rey, pero debes conocer los demás

Parquet (columnar, comprimido) es el estándar de facto para analítica. Avro es mejor para streaming y evolución de esquemas. ORC es habitual en ecosistemas Hive/Hadoop. Entender por qué un fichero Parquet de 1 GB se lee 10 veces más rápido que el mismo CSV de 5 GB te hace mejor ingeniero.

02

Frameworks de procesamiento

  • Apache Spark
  • dbt
  • Flink
  • DuckDB

El procesamiento es donde vive la mayor parte del trabajo diario de un data engineer. La clave para entenderlo todo es una distinción fundamental: batch vs streaming. Todo lo demás se construye sobre esa base.

Procesamiento batch

Grandes volúmenes, latencia tolerada (minutos a horas).

Apache Spark

  • Motor batch universal
  • RDD, DataFrame, Dataset
  • PySpark, Scala, SQL
  • Catalyst, Tungsten
  • PRIORIDAD MÁXIMA

dbt

  • Transformación SQL moderna
  • Modelos, tests, docs
  • Lineage automático
  • ELT sobre warehouse
  • Estándar de industria

Hive / MapReduce

  • Ecosistema Hadoop legacy
  • HiveQL, metastore
  • Relevante en grandes corp.
  • Base conceptual útil
  • Prioridad media-baja

Procesamiento streaming

Eventos en tiempo real, latencia de milisegundos a segundos.

Spark Structured Streaming

  • Micro-batch y continuo
  • Watermarks, windows
  • Mismo API que batch
  • Ideal si ya sabes Spark

Apache Flink

  • Streaming nativo real
  • Event time, watermarks
  • Stateful processing
  • Exactly-once semantics
  • Alta curva de aprendizaje

Kafka Streams / ksqlDB

  • Procesamiento sobre Kafka
  • SQL sobre topics
  • Sin cluster externo
  • Muy ligero y operacional

Motores SQL analíticos

Query engines sobre data lakes y warehouses.

Trino / Presto

  • SQL federado multi-fuente

Spark SQL

  • SQL sobre DataFrames y lakes

DuckDB

  • OLAP embebido, muy rápido

Ruta recomendada: Spark (PySpark) + dbt → Spark Structured Streaming → Flink → Trino / DuckDB

Explicación de cada framework

Apache Spark es el centro del universo

No hay ningún otro framework con su combinación de adopción, versatilidad y profundidad. Lo que necesitas dominar de Spark no es solo la API, sino entender cómo funciona por dentro: el plan lógico y físico que genera Catalyst, por qué un shuffle es caro, qué son las particiones y cómo afectan al rendimiento, y cuándo usar cache() vs persist(). Un Spark avanzado es lo que separa a un engineer mid de uno senior.

dbt es el segundo imprescindible, y muchos lo subestiman

dbt ha cambiado la forma en que se hacen transformaciones en el warehouse: introduces tests de calidad de datos, documentación automática, linaje de modelos y CI/CD de transformaciones SQL. Su modelo de modelos en SQL con Jinja, los tests integrados y el lineage automático lo hacen esencial en cualquier stack moderno.

Batch antes que streaming, siempre

El 70% de los pipelines en producción son batch. El streaming añade complejidad operacional enorme — latencia de red, gestión de estado, semánticas de entrega exactamente una vez — que solo tiene sentido asumir cuando el caso de uso lo justifica de verdad.

DuckDB es la sorpresa de los últimos años

Un motor OLAP embebido que corre en local, lee Parquet directamente de S3, y puede procesar cientos de millones de filas en segundos en un portátil. Es ideal para exploración, pipelines pequeños y como alternativa ligera a Spark para volúmenes modestos.

03

Orquestación de pipelines

  • Airflow
  • Prefect
  • Dagster
  • dbt Cloud

La orquestación es el sistema nervioso de tu stack de datos — sin ella, tienes herramientas potentes pero sin coordinación. Es lo que convierte pipelines individuales en sistemas fiables y observables. La idea central es responder a: ¿qué se ejecuta?, ¿cuándo?, ¿en qué orden? y ¿qué pasa si falla?

Conceptos fundamentales en cualquier orquestador

DAG

  • Grafo acíclico dirigido
  • Dependencias

Dependencias

  • Upstream / downstream

Reintentos y alertas

  • Retry, SLA, backfill

Idempotencia

  • Ejecutar N veces = mismo resultado

Principales herramientas

Apache Airflow

  • El estándar de facto
  • DAGs como código Python
  • Scheduler + workers
  • Operators, hooks, sensors
  • XComs entre tareas
  • Alta adopción empresarial
  • Curva operacional alta

Prefect

  • Python nativo, menos config
  • Flows y tasks decorados
  • Dynamic task mapping
  • Prefect Cloud (SaaS)
  • Muy fácil de testear
  • Buena DX para equipos peq.

Dagster

  • Asset-based orchestration
  • Software-defined assets
  • Tipos, metadata, linaje
  • Testing integrado
  • Observabilidad nativa
  • Paradigma más moderno

Herramientas complementarias

dbt Cloud

  • Orquestación nativa dbt

Mage AI

  • Orquestador moderno visual

Luigi / otros

  • Legado, menos adoptado hoy

Patrones esenciales

Backfill

  • Reejecutar periodos pasados

Parametrización

  • Variables, secrets, configs

Deps entre pipelines

  • Cross-DAG, event-driven

Empresa grande / legacy → Airflow | Startup / equipo pequeño → Prefect | Equipos maduros → Dagster | Solo SQL → dbt Cloud

Explicación de cada herramienta

Airflow es obligatorio conocerlo

Está en el 70-80% de las empresas medianas y grandes. Su modelo mental es simple: defines un DAG en Python, declaras tareas y sus dependencias, y el scheduler se encarga del resto. Lo que tienes que dominar en profundidad son los operators, los sensors y los XComs para pasar datos pequeños entre tareas.

Prefect resuelve la fricción de desarrollo

Decorar una función con @flow y @task y ya tienes un pipeline observable. Su concepto de "deployment" separa la definición del pipeline de cuándo y dónde se ejecuta. Si empiezas un proyecto nuevo o estás en un equipo pequeño, Prefect tiene una experiencia de desarrollo mucho más agradable.

Dagster representa el paradigma más moderno

Su idea central es que lo importante no son las tareas sino los assets: los artefactos de datos que produces. Dagster deriva el scheduling del linaje de assets. Esto lo hace extremadamente potente para equipos data maduros porque el linaje, la observabilidad y los tests están integrados desde el diseño.

Los patrones importan más que la herramienta

Tres principios fundamentales: idempotencia (tu pipeline debe poder ejecutarse dos veces sobre el mismo periodo y producir el mismo resultado), backfill (la capacidad de reejecutar periodos históricos cuando cambias la lógica), y separación entre orquestación y ejecución (el orquestador no debería hacer el trabajo pesado, solo coordinar).

Nivel intermedio-avanzado

04

Cloud e infraestructura

  • AWS
  • GCP
  • Terraform
  • Docker
  • Kubernetes

Como data engineer, no gestionas servidores — diseñas sistemas de datos que viven en la nube. Lo que necesitas es entender los servicios suficientemente bien para elegir los correctos, conectarlos y optimizar su coste.

Equivalencias por proveedor

Object storage

  • S3 (AWS)
  • Cloud Storage (GCP)
  • Blob Storage (Azure)

Data warehouse

  • Redshift (AWS)
  • BigQuery (GCP)
  • Synapse (Azure)

Procesamiento

  • Glue / EMR (AWS)
  • Dataflow / Dataproc (GCP)
  • Data Factory / HDI (Azure)

Streaming

  • Kinesis (AWS)
  • Pub/Sub + Dataflow (GCP)
  • Event Hubs (Azure)

Infraestructura como código (IaC)

Terraform

  • Infraestructura declarativa
  • Multi-cloud, estado remoto
  • Módulos reutilizables

Docker

  • Empaquetar pipelines
  • Reproducibilidad, portabilidad
  • Dockerfile, compose

Kubernetes

  • Orquestación de contenedores
  • EKS, GKE, AKS gestionados
  • Pods, jobs, deployments

Redes y seguridad de datos

VPC y redes

  • Subnets, peering, VPN
  • Acceso privado a datos

IAM y permisos

  • Roles, policies, least privilege
  • Service accounts

Secrets y cifrado

  • Secrets Manager, KMS
  • Cifrado en reposo y tránsito

Optimización de costes

Storage tiers

  • Hot / warm / cold / archive
  • Lifecycle automático

Compute sizing

  • Spot / preemptible instances
  • Reserved vs on-demand

FinOps y tagging

  • Cost allocation por equipo
  • Budgets y alertas de gasto

Ruta recomendada: 1. Elige UN proveedor principal (AWS es el más demandado) | 2. Domina S3 + Glue/EMR + Redshift + IAM | 3. Terraform para desplegar infra como código | 4. Docker imprescindible; K8s útil pero no urgente | 5. Certifícate: AWS Data Analytics Specialty o GCP DE Professional

Principios clave

La optimización de costes es el diferenciador que nadie enseña

En cloud, el coste lo controla quien diseña la arquitectura. Un pipeline que lee una tabla completa de 10 TB en BigQuery cuando podría leer solo la partición del día cuesta 50 veces más de lo necesario. Entender storage tiers en S3, usar instancias spot para jobs de Spark, particionar y hacer clustering en BigQuery es lo que hace que los equipos confíen en ti para decisiones de arquitectura.

Terraform es el salto que te convierte en senior

Saber describir toda tu infraestructura de datos en Terraform — buckets, roles, clusters, bases de datos — y desplegarla en minutos en cualquier entorno es lo que diferencia a un engineer que escala de uno que no. Es una habilidad muy valorada porque muy pocos data engineers la tienen.

05

Calidad y gobernanza del dato

  • Great Expectations
  • dbt tests
  • DataHub
  • OpenLineage

La gobernanza y calidad del dato es el área más infravalorada del stack — y paradójicamente, la que más separa a los ingenieros mediocres de los realmente buenos. Cualquiera puede escribir un pipeline que mueve datos. Muy pocos saben garantizar que esos datos son correctos, trazables y confiables. La idea central: los datos son un producto, y como todo producto necesita control de calidad, documentación y responsables claros.

Las 6 dimensiones de calidad del dato

Exactitud

  • Los datos reflejan la realidad
  • Validaciones de rango
  • Validaciones de formato

Completitud

  • No hay nulos inesperados
  • Cobertura de registros
  • Campos requeridos presentes

Frescura (timeliness)

  • Los datos llegan a tiempo
  • SLAs de pipeline cumplidos
  • Detección de retrasos

Unicidad

  • Sin duplicados inesperados
  • Primary key constraints
  • Deduplicación controlada

Consistencia

  • Coherencia entre sistemas
  • Valores coherentes
  • Referencias íntegras

Validez

  • Formato y rango correcto
  • Enumerados permitidos
  • Rangos de fechas válidos

Herramientas de calidad y testing de datos

Great Expectations

  • Expectations sobre datasets
  • Docs automáticos, checkpoints
  • Integración con Airflow/dbt

dbt tests

  • not_null, unique, refs
  • Custom tests en SQL
  • dbt-expectations package

Soda / Monte Carlo

  • Observabilidad continua
  • Detección de anomalías
  • Alertas automáticas

Linaje del dato

Data lineage

  • De dónde vienen los datos
  • Qué transformaciones sufren

OpenLineage, Marquez

  • Estándares abiertos de linaje

Catálogos de datos

  • DataHub, Amundsen
  • Alation, Collibra
  • Descubrimiento y docs

Análisis de impacto

  • Si cambio X, ¿qué se rompe?
  • Auditoría y debugging
  • Confianza en el dato

Normativa y privacidad

GDPR / privacidad

  • PII, datos sensibles
  • Derecho al olvido
  • Retención y borrado

Anonimización

  • Masking, tokenización
  • Pseudonimización
  • K-anonimidad para datasets

Data ownership

  • Quién es responsable
  • Data contracts
  • SLAs por dominio

Conceptos clave en profundidad

El testing de datos tiene capas que debes conocer

Los unit tests comprueban que una transformación concreta produce el resultado correcto dado un input conocido. Los integration tests verifican que el pipeline completo funciona de extremo a extremo. Los contract tests comprueban que el schema de salida no ha roto a los consumidores. Los data quality tests comprueban que los datos reales cumplen las expectativas de negocio. Un data engineer experto tiene las cuatro capas.

Los data contracts son el artefacto de gobernanza más poderoso

Un data contract es un acuerdo formal entre el productor de un dato y sus consumidores: define el schema, las garantías de calidad, la frecuencia de actualización y quién es responsable. Convierte dependencias implícitas en acuerdos explícitos, versionados y verificables automáticamente.

GDPR tiene implicaciones técnicas directas

El "derecho al olvido" significa que debes ser capaz de borrar todos los datos de una persona de todos tus sistemas, incluyendo snapshots históricos, backups y logs. Eso requiere haber diseñado los pipelines con esto en mente desde el principio.

Un pipeline roto es visible: falla y lo arreglas. Un pipeline con datos incorrectos es invisible: nadie lo detecta hasta que el negocio toma malas decisiones.

06

Streaming y tiempo real

  • Apache Kafka
  • Flink
  • Kinesis
  • Spark Streaming

El streaming es el salto conceptual más grande en data engineering. No es solo "batch más rápido" — es un paradigma completamente diferente. En batch, los datos ya existen y los procesas. En streaming, los datos llegan continuamente y los procesas a medida que aparecen. Eso cambia todo: cómo almacenas el estado, cómo manejas errores, cómo defines "cuándo está listo" un resultado.

Apache Kafka — arquitectura interna

Kafka no es una base de datos, es un log distribuido. Los mensajes se añaden siempre al final y nunca se modifican. Cada consumidor mantiene su propio offset de forma independiente.

Producers

  • App web, sensor IoT, CDC/DB
  • Publican eventos al topic
  • Eligen partición por clave

Topic con particiones

  • Log inmutable por partición
  • P0, P1, P2 con offset incremental

Consumer group

  • 1 consumer por partición
  • Consumer A → P0, B → P1, C → P2
  • Cada uno gestiona su offset

Conceptos Kafka esenciales

Retención

  • Tiempo o tamaño
  • Log compaction
  • Replay de eventos

Garantías de entrega

  • At-most-once
  • At-least-once
  • Exactly-once (EOS)

Schema Registry

  • Avro, Protobuf
  • Evolución de schemas
  • Compatibilidad backward

Kafka Connect

  • Connectors source y sink
  • Sin código custom
  • Integración con S3, BBDD

El problema del tiempo en streaming

En streaming hay dos relojes que no siempre coinciden: el event time (cuándo ocurrió el evento en la realidad) y el processing time (cuándo llegó a tu sistema). Un pedido hecho a las 23:59 puede llegar a tu pipeline a las 00:03 por latencia de red.

Tumbling window

  • Sin solapamiento
  • 0-5min, 5-10min, 10-15min
  • Cada evento en 1 ventana

Sliding window

  • Con solapamiento
  • 0-10min, 5-15min, 10-20min
  • Cada evento en N ventanas

Session window

  • Gap de inactividad
  • Agrupa por sesión
  • Análisis de sesiones usuario

Regla de oro: siempre usa event time si puedes. Processing time es más simple pero produce resultados incorrectos cuando hay latencia de red o datos desordenados.

Comparativa de motores de procesamiento

Spark Structured Streaming

  • Micro-batch (100ms - mins)
  • Mismo API que batch Spark
  • Curva de aprendizaje baja
  • Latencia: segundos
  • Ideal si ya usas PySpark

Apache Flink

  • Streaming nativo real
  • Stateful processing avanzado
  • Checkpoints y savepoints
  • Latencia: milisegundos
  • Exactly-once garantizado

AWS Kinesis

  • Gestionado por AWS
  • Data Streams: bajo nivel
  • Firehose: carga a S3/Redshift
  • Retención máx. 7 días
  • Ideal si todo es AWS

Conceptos avanzados

El stateful processing es lo que hace el streaming realmente difícil

Contar eventos por minuto es fácil (stateless). Pero calcular el total acumulado de ventas por usuario, o detectar si un usuario ha hecho más de 5 intentos de login en 10 minutos, requiere recordar eventos anteriores. Ese estado se almacena en memoria distribuida entre los workers, y la pregunta es: ¿qué pasa si un worker falla? Flink brilla aquí: sus checkpoints periódicos guardan el estado completo en almacenamiento duradero.

Exactly-once es más difícil de lo que parece

Las tres semánticas de entrega son: at-most-once (puede perderse algún evento), at-least-once (puede procesarse dos veces), y exactly-once (cada evento se procesa exactamente una vez). Flink con Kafka lo consigue mediante transacciones distribuidas. Spark Structured Streaming lo aproxima con micro-batch e idempotencia.

Nivel experto

07

DataOps y MLOps

  • GitHub Actions
  • Great Expectations
  • MLflow
  • Feature Stores

DataOps y MLOps no son herramientas — son filosofías de ingeniería aplicadas al mundo del dato y del machine learning. DevOps transformó el desarrollo de software añadiendo automatización, CI/CD y cultura de colaboración. DataOps hace lo mismo para pipelines de datos. MLOps extiende esa idea a modelos de machine learning.

DataOps — ingeniería de datos con mentalidad DevOps

CI/CD de pipelines

  • Tests automáticos en PR
  • Linting de SQL y Python
  • Despliegue automático
  • GitHub Actions, GitLab CI
  • Entornos dev/staging/prod
  • dbt Cloud CI

Testing de datos

  • Unit tests de transformaciones
  • Integration tests end-to-end
  • Data quality checks
  • Contract tests de schema
  • pytest + Great Expectations

Entornos y versiones

  • Git como fuente de verdad
  • Branching strategy
  • Schema migrations
  • Dev/staging/prod separados
  • Infrastructure as code

Observabilidad

  • Métricas de pipeline
  • Alertas de SLA
  • Datadog, Grafana
  • Logs estructurados
  • OpenTelemetry

Data contracts

  • Acuerdo productor-consumidor
  • Schema + SLA + owner
  • Versionado y breaking changes
  • Validación automática en CI

Gestión de incidentes

  • Runbooks de pipelines
  • On-call de datos
  • Postmortems blameless
  • MTTR, MTBF como métricas

MLOps — el rol del data engineer en el ciclo de ML

Feature stores

  • Features reutilizables
  • Sin training/serving skew
  • Feast, Tecton
  • Online + offline store
  • Tú construyes los pipelines

Model registry

  • Versionado de modelos
  • MLflow, Weights & Biases
  • Métricas por experimento
  • Staging → production
  • Auditoría de modelos

Pipelines de datos ML

  • Ingesta y limpieza
  • Feature engineering
  • Train / validation splits
  • Data versioning (DVC)
  • Kubeflow, Vertex AI

Monitorización

  • Data drift, concept drift
  • Degradación de métricas en prod
  • Evidently, Arize, WhyLabs

Training-serving skew

  • Datos de entrenamiento ≠ prod
  • El feature store lo elimina
  • Causa #1 de modelos que fallan

Conceptos clave

DataOps cambia la pregunta de "¿funciona?" a "¿es fiable de forma sostenible?"

La práctica más transformadora es el CI/CD de datos: cada cambio en un modelo dbt o en un pipeline de Spark dispara automáticamente una batería de tests antes de llegar a producción. Si los tests fallan, el despliegue se bloquea. Igual que en software, pero para datos.

El rol del data engineer en MLOps es muy específico

No entrenas modelos — garantizas que los datos para entrenarlos son correctos, frescos y reproducibles. Lo que construyes es la infraestructura de datos que hace posible que los modelos funcionen bien: los pipelines de feature engineering que transforman datos crudos en variables útiles, el feature store que garantiza que esas mismas variables se calculan igual en entrenamiento y en producción.

El training-serving skew es el problema más insidioso del ML

Ocurre cuando los datos con los que se entrenó un modelo se calculan de forma distinta a los datos que recibe ese modelo en producción. El modelo funciona perfectamente en desarrollo y falla silenciosamente en producción. El feature store elimina este problema porque centraliza el cálculo de features para ambos contextos.

08

Arquitectura de datos

  • Data Mesh
  • Medallion
  • Delta Lake
  • Iceberg

La arquitectura de datos es donde dejas de ser alguien que implementa pipelines y te conviertes en alguien que diseña sistemas. Hay tres preguntas que estructuran todo este espacio: ¿cómo organizo mis datos internamente?, ¿con qué tecnología los almaceno?, y ¿cómo organizo los equipos alrededor de los datos?

Arquitectura medallion — organización interna de los datos

El principio clave: cada capa es inmutable respecto a la anterior. Si algo falla en Silver, puedes re-procesar desde Bronze sin perder datos originales. El dato crudo siempre se conserva.

Bronze

  • Dato crudo, sin transformar
  • Append-only, Parquet/Delta
  • Retención larga
  • Fuente de verdad
  • Raw / landing zone

Silver

  • Dato limpio y validado
  • Deduplicado, tipado
  • Schema estable
  • Joins básicos
  • Conformed / curated

Gold

  • Dato listo para consumo
  • Agregados, KPIs
  • Dimensiones + hechos
  • BI, ML, APIs
  • Serving layer

Data warehouse vs Data lake vs Lakehouse

Data warehouse

  • Snowflake, BigQuery, Redshift
  • Schema on write
  • Solo datos estructurados
  • SQL nativo, rendimiento alto
  • Caro a gran escala, lock-in
  • Ideal para BI y reporting

Data lake

  • S3 + Spark / Hive
  • Schema on read
  • Cualquier formato
  • Muy barato, escala infinita
  • Sin ACID, se convierte en swamp
  • Ideal para ML y archivado

Lakehouse

  • Delta Lake, Iceberg, Hudi
  • ACID sobre object storage
  • SQL + Python + ML
  • Time travel, schema evolution
  • Más complejo de operar
  • Ideal para equipos maduros

Data mesh — organización de equipos alrededor de los datos

Data mesh no es una tecnología — es una forma de organizar equipos y responsabilidades. Sus cuatro principios fundamentales:

1. Dominio como propietario

  • Quien produce, gestiona
  • Descentralización de ownership
  • Equipos autónomos

2. Dato como producto

  • SLA, docs, descubrimiento
  • Interfaz bien definida
  • Ciclo de vida gestionado

3. Infra self-serve

  • Plataforma para dominios
  • CI/CD, catálogo, monitoring
  • Templates de pipelines

4. Gobernanza federada

  • Estándares globales
  • Autonomía local
  • Coherencia global

El concepto de "data product" es la contribución más importante del data mesh

Un data product no es simplemente una tabla o un pipeline — es un artefacto de datos que tiene un dueño, un SLA de calidad y frescura, documentación, interfaces descubribles y un ciclo de vida gestionado. Esta forma de pensar, aplicada incluso sin implementar data mesh completo, eleva drásticamente la calidad del ecosistema de datos.

Cómo combinar los tres patrones en la práctica

En una arquitectura madura, los tres coexisten: arquitectura medallion para organizar las capas de datos dentro de cada dominio, lakehouse como tecnología de almacenamiento subyacente que da ACID y time travel sobre S3, y data mesh como modelo organizativo que define quién es responsable de qué. No son alternativas — son respuestas a preguntas diferentes.

09

Optimización de pipelines y queries

  • Spark UI
  • EXPLAIN ANALYZE
  • Parquet
  • AQE

La optimización no es un tema de rendimiento abstracto: es la diferencia entre un pipeline que cuesta 500 €/mes y uno que cuesta 50 €/mes haciendo exactamente lo mismo. La mentalidad del experto: nunca optimices sin medir primero. El 80% de los problemas de rendimiento están en el 20% del código.

Cómo piensa un motor de queries

El plan de ejecución es tu mapa — léelo siempre antes de optimizar. En Spark usas .explain(mode="formatted"), en BigQuery el Query Plan, en Snowflake el Query Profile.

Parser

  • Árbol sintáctico (AST)

Optimizador lógico

  • Predicate pushdown
  • Column pruning
  • Join reorder

Optimizador físico

  • Elección de join strategy
  • Plan de particionado
  • Estadísticas de tabla

Ejecución física

  • Stages, tasks, shuffle
  • Workers, memoria, disco

Técnicas de optimización de almacenamiento

Partition pruning

  • Solo lees las particiones que necesitas
  • Fecha es la clave más común
  • Evita alta cardinalidad

Z-ordering

  • Colocaliza datos similares
  • Delta: OPTIMIZE ZORDER
  • Iceberg: SORT ORDER

Columnar (Parquet/ORC)

  • Solo lees columnas usadas
  • Compresión por columna
  • Stats por row group

Compresión

  • Snappy: rápido
  • Zstd: ratio + velocidad
  • Gzip: máximo ratio

El small file problem

El enemigo silencioso del rendimiento. Miles de ficheros pequeños generan overhead de metadatos enorme. El objetivo es ficheros de 128-512 MB.

Small file problem

  • Miles de ficheros pequeños
  • Overhead de metadatos
  • Lento de leer, caro en S3
  • Objetivo: 128-512 MB/fichero

Compaction

  • Delta: OPTIMIZE
  • Iceberg: rewrite_data_files
  • Combina pequeños en grandes
  • Programar en horario valle

Vacuum / expiry

  • Delta: VACUUM
  • Iceberg: expire_snapshots
  • Elimina versiones antiguas
  • Controla coste de storage

Estructuras auxiliares de búsqueda

Bloom filters

  • Test probabilístico de membresía
  • Ideal para UUIDs y IDs
  • Evita leer ficheros sin match

Min-max stats

  • Rango de valores por fichero
  • Data skipping automático
  • Muy efectivo con fechas

Materialized views

  • Precalcula agregados caros
  • Refresco incremental
  • BigQuery, Snowflake, dbt

Optimización avanzada de Spark

Broadcast join

  • Tabla pequeña → todos los workers
  • Cero shuffle
  • Tabla < 10 MB
  • Broadcast hint

Sort-merge join

  • Ambas tablas grandes
  • Shuffle + sort
  • Muy costoso en red
  • Reducir con bucketing

Shuffle — enemigo #1

  • Mover datos entre workers
  • Ocurre en joins y groupBy
  • Reducir con broadcast
  • Salted joins para skew

Data skew

  • Partición mucho más grande
  • Una task tarda 10x más
  • Salted key para distribuir
  • AQE skew join handling

AQE (Spark 3+)

  • Replanifica en runtime
  • Ajusta particiones auto
  • Detecta skew
  • Actívalo siempre

Spark UI

  • DAG de stages
  • Shuffle read/write
  • Task duration distribution
  • GC time por executor

Flujo de diagnóstico del experto: Spark UI → identifica stage lento → EXPLAIN → localiza shuffle/skew → aplica la técnica correcta → mide de nuevo.

El shuffle es el villano principal del rendimiento en Spark

Cada vez que Spark necesita redistribuir datos entre workers — en un join, en un groupBy, en un distinct — mueve datos por la red. Ese movimiento es lento, caro y no paralelizable eficientemente. La estrategia más potente no es hacer el shuffle más rápido, sino eliminarlo. El broadcast join es tu primera línea: si una de las dos tablas cabe en memoria de cada worker, Spark la envía a todos y evita el shuffle completamente.

En BigQuery y Snowflake el modelo es diferente pero los principios son los mismos

No controlas particiones manualmente de la misma forma, pero sí controlas qué columnas se usan como partition key y clustering key. Leer 1 TB sin particionado cuando podrías leer 10 GB con un filtro sobre la partition date column es exactamente el mismo problema que el shuffle en Spark. La diferencia es que en BigQuery te lo cobran directamente en euros.

Habilidades transversales

10

Lenguajes de programación

  • Python
  • SQL
  • Scala
  • Polars

SQL es tu lengua materna del dato, Python es tu navaja suiza, y Scala es el bisturí de precisión para cuando el rendimiento importa de verdad. No necesitas dominarlos todos por igual — necesitas entender qué rol juega cada uno y hasta qué profundidad llegar.

SQL — tu lenguaje más importante

Window functions

  • ROW_NUMBER, RANK, LAG, LEAD
  • PARTITION BY + ORDER BY
  • Frames: ROWS / RANGE
  • Running totals, deltas
  • Imprescindible en entrevistas

CTEs avanzados

  • WITH RECURSIVE
  • Jerarquías y grafos
  • CTEs múltiples encadenados
  • Materialización vs inline

Optimización SQL

  • EXPLAIN / query plan
  • Predicate pushdown
  • Partition pruning en WHERE
  • Evitar SELECT *
  • BigQuery / Snowflake dialect

MERGE y SCDs

  • MERGE / UPSERT
  • SCD tipo 1, 2 y 3
  • Historial de cambios

Funciones analíticas

  • PERCENTILE_CONT
  • APPROX_COUNT_DISTINCT
  • ARRAY_AGG, PIVOT

SQL en dbt

  • Jinja templating
  • Macros reutilizables
  • ref(), source()

Python — tu herramienta universal

Python avanzado

  • Generators e iterators
  • Decorators y context mgr
  • Type hints (mypy)
  • Async / await
  • Dataclasses, pydantic

Ecosistema clave

  • PySpark — imprescindible
  • Pandas / polars
  • SQLAlchemy, duckdb
  • Boto3, google-cloud
  • Pydantic, great-expectations

Ingeniería de software

  • pytest, mocking
  • Logging estructurado
  • Packaging (pyproject.toml)
  • Gestión de errores robusta
  • Linting: ruff, black

Scala — el lenguaje nativo de Spark

Por qué importa

  • Spark está escrito en Scala
  • API más completa
  • Sin overhead de serialización
  • UDFs mucho más rápidas
  • Roles senior lo piden

Conceptos clave

  • Case classes e implicits
  • Pattern matching
  • Funciones de orden superior
  • Option, Either, Try
  • Colecciones funcionales

Cuándo usarlo

  • UDFs de alto rendimiento
  • Librerías Spark internas
  • Jobs críticos en latencia
  • Empresa con base Scala
  • Flink también es JVM

Prioridad: 1. SQL avanzado → 2. Python sólido como ingeniero → 3. PySpark en profundidad → 4. Scala (diferenciador senior)

SQL: el nivel de dominio que pocos tienen realmente

La mayoría de data engineers conocen SQL básico. Los expertos conocen SQL como un lenguaje de manipulación de sets, no de filas. Las window functions son el salto más importante: con LAG y LEAD calculas diferencias entre filas consecutivas sin self-joins; con SUM() OVER calculas acumulados sin subqueries; con ROW_NUMBER() OVER deduplicamos conservando la fila más reciente.

Polars está reemplazando a pandas en data engineering

Está escrita en Rust, usa evaluación lazy similar a Spark, maneja datos out-of-core, y es entre 5 y 50 veces más rápida que pandas en operaciones típicas. Para exploración y pipelines de datos medianos — los que no justifican un cluster de Spark — Polars es el estado del arte.

11

Liderazgo y comunicación

  • ADRs
  • RFCs
  • Runbooks
  • Code Reviews

A partir de un cierto nivel técnico, el 80% del impacto viene de habilidades no técnicas. Los ingenieros técnicamente brillantes que no saben comunicar sus decisiones ni influir sin autoridad formal se quedan estancados en roles mid.

Comunicación — traducir entre mundos técnico y de negocio

Comunicación hacia negocio

  • Traducir latencia a dinero
  • Hablar en impacto, no en código
  • Gestionar expectativas
  • No: "hay un bug en el ETL"
  • Sí: "ventas de ayer incorrectas"

Documentación

  • ADRs: registrar decisiones
  • Runbooks de pipelines
  • Diagramas de arquitectura
  • Docs que envejecen bien
  • El código no documenta

Presentación y escritura

  • Propuestas técnicas claras
  • Estructura: problema → solución → alternativas → coste
  • Emails que se leen
  • Anticipar objeciones

Liderazgo técnico — influir sin autoridad formal

Code reviews

  • Enseñar, no criticar
  • Preguntas vs afirmaciones
  • Separar estilo de corrección
  • Mirar primero el diseño
  • Reconocer lo bueno

Decisiones de arquitectura

  • RFC: propuesta abierta
  • ADR: decisión registrada
  • Presentar alternativas
  • Construir consenso
  • Saber cuándo decidir solo

Mentoría y levante

  • Guiar sin resolver
  • Delegar con contexto
  • Crear seguridad psicológica
  • Feedback frecuente y claro
  • Tu impacto × su crecimiento

Gestión de proyectos — entregar con criterio, no con heroísmo

Estimación

  • Descomponer en tareas
  • Añadir buffer real
  • Comunicar rangos no puntos
  • Actualizar cuando cambia

Deuda técnica

  • Registrarla siempre
  • Traducirla a riesgo
  • Negociar tiempo para pagarla
  • No toda deuda es mala

Priorización

  • Impacto vs esfuerzo
  • Decir no con criterio
  • Negociar el scope
  • Urgente vs importante

Colaboración interdisciplinar

Con data scientists

  • Anticipar necesidades de datos
  • Feature pipelines reproducibles
  • Entender el modelo, no solo datos

Con analistas

  • Diseñar para self-service
  • Documentar los modelos
  • Escuchar sus frustraciones

Con producto y negocio

  • Entender el problema real
  • Proponer, no solo ejecutar
  • Generar confianza con entregas

La habilidad que multiplica todas las demás

Plantear el problema correcto antes de resolver cualquier problema. Un engineer junior construye lo que le piden. Un engineer experto cuestiona si es lo correcto y se asegura de que la solución resuelve el problema real de negocio.

Los ADRs son el artefacto de liderazgo técnico más infravalorado

Un ADR (Architecture Decision Record) es un documento corto — una página — que registra una decisión de arquitectura: cuál era el contexto, qué opciones se consideraron, qué se decidió y por qué. Su valor no está en el momento de escribirlo sino seis meses después, cuando alguien pregunta por qué se tomó una decisión concreta.

Saber decir no — con criterio y alternativa

La respuesta de un engineer experto no es "sí" (entregas algo frágil) ni "no es posible" (cierras la conversación). Es: "puedo entregarte algo funcional en dos días que cubre el 80% del caso de uso, pero tendríamos deuda técnica que necesitaríamos abordar en el sprint siguiente — ¿eso funciona o el 100% es bloqueante?". Eso es negociar scope.

12

Seguridad de datos

  • IAM
  • KMS
  • Secrets Manager
  • GDPR

La seguridad no es una capa que añades al final — es una decisión de diseño que tomas desde el principio. Un pipeline diseñado sin seguridad en mente es como una casa construida sin cerraduras: añadirlas después es posible pero caro, incómodo y nunca tan efectivo.

Control de acceso — quién puede ver qué y por qué

Least privilege

  • Cada servicio solo accede a lo necesario
  • Roles por servicio, no por persona
  • Revisar permisos regularmente
  • Revocar accesos al salir
  • Principio de zero trust

RBAC y ABAC

  • Roles basados en función
  • Acceso a nivel de columna
  • Row-level security
  • Snowflake: column masking
  • BigQuery: column policy tags
  • Unity Catalog (Databricks)

Gestión de secretos

  • Nunca credenciales en código
  • Nunca en repos sin cifrar
  • AWS Secrets Manager
  • HashiCorp Vault
  • Rotación automática de claves

Cifrado — datos protegidos en reposo y en tránsito

Cifrado en reposo

  • AES-256 como estándar
  • SSE-S3 vs SSE-KMS
  • Customer-managed keys
  • Control total de rotación

Cifrado en tránsito

  • TLS 1.2+ obligatorio
  • Certificados válidos
  • VPC endpoints (no internet)
  • SSL en conexiones a BBDD

Cifrado a nivel de campo

  • Columnas específicas cifradas
  • Número de tarjeta, DNI
  • Solo quien tiene la clave ve el dato
  • Impacto en query performance

PII y privacidad

Clasificación de PII

  • Detección automática
  • AWS Macie, DLP de GCP
  • Etiquetado en catálogo
  • Inventario de datos sensibles

Anonimización

  • Masking: reemplaza el valor
  • Tokenización: valor ↔ token
  • Hashing: irreversible
  • K-anonimidad para datasets

Derecho al olvido

  • Crypto-shredding
  • Cifra con clave por usuario
  • Destruye la clave = dato inaccesible
  • Sin borrar ficheros Parquet

Auditoría y trazabilidad

Audit logs

  • Quién accedió a qué y cuándo
  • Inmutables y sellados
  • CloudTrail, BigQuery audit

Linaje como auditoría

  • Trazabilidad completa del dato
  • De origen a destino
  • Evidencia en auditorías

Compliance

  • GDPR, SOC2, ISO 27001
  • Evidencia documentada
  • Colaboración con legal

Los tres errores más comunes: 1. Credenciales hardcodeadas en código o repos Git | 2. Permisos excesivamente amplios: un pipeline de lectura con permisos de escritura | 3. PII en entornos de desarrollo: copiar datos de producción a dev sin anonimizar

El crypto-shredding es la solución más elegante al derecho al olvido

Cifrar los datos de cada usuario con una clave única almacenada en un key-value store separado. Cuando el usuario ejerce su derecho al olvido, borras su clave — el dato sigue físicamente en el fichero Parquet, pero es criptográficamente inaplicable, equivalente a no existir.

La gestión de secretos es donde más vulnerabilidades críticas aparecen

El patrón más peligroso es hardcodear credenciales directamente en el código Python o en ficheros de configuración que acaban en Git. Basta con que ese repositorio sea accidentalmente público durante cinco minutos para que bots automatizados capturen las credenciales. La solución correcta es usar un gestor de secretos y configurar rotación automática.

13

Observabilidad y monitorización

  • Datadog
  • Prometheus
  • Monte Carlo
  • OpenTelemetry

Sin observabilidad, operas a ciegas: no sabes si tus pipelines funcionan correctamente hasta que alguien se queja de que los datos están mal. La distinción fundamental: monitorización es saber que algo ha fallado. Observabilidad es entender por qué ha fallado sin tener que añadir nuevo código para investigarlo. La primera te alerta; la segunda te da el contexto para resolverlo.

Las tres capas de observabilidad

Métricas

  • ¿Está funcionando bien?
  • Duración, volumen, lag
  • Tasa de error, SLA
  • Tendencias en el tiempo

Logs

  • ¿Qué ocurrió exactamente?
  • Logs estructurados en JSON
  • Correlación por trace_id
  • Contexto de negocio incluido

Trazas

  • ¿Dónde se gastó el tiempo?
  • Span por cada operación
  • Latencia por componente
  • OpenTelemetry estándar

Métricas de datos — la salud del dato, no solo del pipeline

Volumetría

  • Filas esperadas vs recibidas
  • Alertar si < 80% o > 120%
  • Tendencia histórica
  • Detección de días especiales

Frescura (freshness)

  • Cuándo se actualizó por última vez
  • SLA: datos de ayer antes de las 8h
  • max(updated_at) como métrica
  • El KPI más visible para negocio

Anomalías en datos

  • Distribución inusual de valores
  • Nulos donde no debería haberlos
  • Valores fuera de rango
  • Monte Carlo, Soda, Anomalo

Herramientas de observabilidad

Datadog

  • Métricas, logs y trazas
  • Integración con Airflow
  • Dashboards personalizables
  • Alertas con anomaly detection

Prometheus + Grafana

  • Open source, self-hosted
  • Scraping de métricas
  • Dashboards con PromQL
  • Alertmanager para notifs

Monte Carlo / Soda

  • Data observability nativa
  • Detección sin configurar reglas
  • Linaje automático
  • Incidentes con contexto

SLAs de datos — el contrato entre ingeniería y negocio

Definición de SLAs

  • Frescura: datos antes de las Xh
  • Completitud: > 99% filas
  • Exactitud: 0 errores críticos
  • Disponibilidad: 99.5% uptime

Medición y reporting

  • MTTR: tiempo medio de resolución
  • MTBF: tiempo entre fallos
  • % cumplimiento semanal
  • Dashboard visible para negocio

Alertas efectivas

  • P1: dato incorrecto en prod
  • P2: pipeline retrasado
  • P3: anomalía no crítica
  • Evitar alert fatigue

Un pipeline sin observabilidad es como conducir con los ojos cerrados: funciona hasta que deja de funcionar. La observabilidad no es para cuando algo falla — es para saber que todo va bien antes de que alguien lo note.

La métrica de frescura es la más importante para el negocio

Un analista no sabe si tu Spark job tardó 20 minutos en vez de 10. Sí sabe si el dashboard de ventas muestra datos de ayer cuando debería mostrar los de hoy. La frescura es el puente entre el mundo técnico y el de negocio. Implementarla es simple: en cada tabla añades una columna _updated_at, y una query periódica comprueba que max(_updated_at) > NOW() - INTERVAL threshold.

Los logs estructurados son la diferencia entre debuggear en horas o en minutos

Un log como "ERROR: pipeline failed" no dice nada útil. Un log estructurado en JSON con campos como pipeline_id, run_date, source_table, rows_processed, error_code y duration_seconds se puede filtrar, agregar y correlacionar automáticamente. La regla de oro: cualquier cosa que necesitarías saber para diagnosticar un fallo debe estar en el log desde el principio.

El alert fatigue es el enemigo silencioso de la observabilidad

Si tu sistema dispara 50 alertas al día y la mitad son falsas alarmas, tu equipo aprende a ignorarlas — incluidas las que importan. La disciplina de los tres niveles de severidad es fundamental: P1 son alertas que requieren acción inmediata porque afectan a datos en producción; P2 requieren atención en las próximas horas; P3 son anomalías que revisas en el siguiente ciclo de trabajo.

MTTR y MTBF son las métricas que importan a dirección

El Mean Time To Resolution y el Mean Time Between Failures son los indicadores que traducen la calidad de tu ingeniería a términos comparables entre periodos. Si tu MTTR mejora de 4 horas a 45 minutos en un trimestre, tienes un argumento concreto de impacto para cualquier conversación de desempeño.

Siguiente paso

¿Esto te suena a tu caso?

Escríbenos y lo miramos con tus números delante, que es cuando esto sirve de algo.

Respondemos en 24 h laborables