Conception de pipelines de données robustes et scalables. Se déclenche avec "data pipeline", "pipeline de données", "batch processing", "stream processing", "Apache Spark", "Airflow", "dbt", "data engineering". Also triggers on "build a data pipeline", "ingest data", "batch and streaming pipeline".
Conception de pipelines de données robustes et scalables. Se déclenche avec "data pipeline", "pipeline de données", "batch processing", "stream processing", "Apache Spark", "Airflow", "dbt", "data engineering". Also triggers on "build a data pipeline", "ingest data", "batch and streaming pipeline".
Data Pipeline Builder
1. Analyser les sources et les besoins
Avant d'écrire une ligne de code, poser ces questions :
Architecture lambda = batch + streaming en parallèle → complexité élevée, préférer kappa (streaming seul avec replay) quand le streaming couvre tous les cas.
Durée d'exécution : dépassement de P95 → alerte Slack/PagerDuty
Coût de compute : budget alert sur BigQuery slots ou EMR
9. Idempotence et résilience
# Upsert idempotent avec DuckDB
conn.execute("""
INSERT OR REPLACE INTO orders SELECT * FROM staging_orders
WHERE order_id NOT IN (SELECT order_id FROM orders WHERE updated_at >= ?)
""", [run_date])
Backfill : toujours prévoir --start-date / --end-date pour rejouer l'historique
Retry avec backoff : retries=3, retry_exponential_backoff=True dans Airflow
Schema evolution : Iceberg/Delta Lake gèrent ADD COLUMN sans réécriture ; documenter la compatibilité backward/forward dans les ADRs
Dead-letter queue : messages Kafka non traitables → topic *.dlq pour traitement manuel
Garde-fous et anti-patterns
Anti-pattern
Problème
Alternative
SELECT * en production
Rupture si schéma change
Lister explicitement les colonnes
Insert sans déduplication
Doublons silencieux
MERGE / INSERT OR REPLACE / unique_key dbt
Transformation dans l'ingestion
Perte du raw, non-rejouable
Toujours stocker le raw avant de transformer
Timeouts sans retry
Perte silencieuse de données
Retry + dead-letter queue
Partitions trop fines
Small files → lenteur de lecture
Compaction + partitioning par jour/semaine
Secrets dans le code
Fuite de credentials
Vault, AWS Secrets Manager, Airflow Connections
Pipeline monolithique
Impossible à déboguer
Découper en tâches atomiques testables
Pas de lineage
Debugging aveugle
dbt lineage, OpenLineage/Marquez, Dagster assets
Communication Rules — MANDATORY
Ultra-concise. No filler, no preamble, no pleasantries.
Never say "happy to help", "sure!", "great question", "let me", or similar.
Tool first, talk second. Act before explaining.
Result first. Lead with outcome, not process.
Stop when done. No summary, no recap, no trailing commentary.