Data Integration Updated: 2026-02-27

What is Data Pipeline?

An automated series of steps that extracts data from sources, transforms it, and loads it into a destination — the backbone of every data-driven organization.

From the field

Data pipeline is the catchall term for "the thing that moves data somewhere." In practice a production pipeline has four layers — ingestion, transformation, orchestration, and observability — and failing on any one of them will wake you up. The pipeline that works is not the one with the cleverest Spark job; it's the one where a failing step pages the right person, the retry logic is idempotent, the data contract is tested, and the lineage is visible when something downstream breaks.

Batch vs. streaming — pick on need, not preference

Batch is simpler, cheaper, and easier to debug. Streaming gives you lower latency at the cost of operational complexity (exactly-once semantics, windowing, watermarks, backpressure, replay). The failure mode I see most: teams build streaming when batch would do, then spend months tuning Flink because nobody actually needs sub-minute latency. Decide by SLA: if the business can tolerate 15-minute freshness, batch wins. If it genuinely needs seconds (fraud, real-time personalization, operational alerts), commit to the complexity of streaming and don't pretend batch will scale into it.

Field story

On one engagement I replaced a hand-rolled ETL pipeline (Python cron jobs + S3 + custom retry shell scripts) with dbt + Dagster + Fivetran + Snowpipe. Not because the new stack was "more modern," but because the old one had no lineage, no observability, no backfill tooling, and every data engineer was spending 40% of their time firefighting. After the rewrite: same work, lineage graph from source to dashboard, failed runs auto-paged the right owner, backfills were one Dagster UI click. Firefighting dropped from 40% to about 5%. The lesson: a data pipeline is a system, not a script. Invest in the orchestration + observability layer as much as the transformation logic.

A Data Pipeline is an automated workflow that moves and transforms data from source systems to destination systems. It is the foundational infrastructure of data engineering — without pipelines, data stays trapped in operational systems and never reaches analysts, dashboards, or ML models.

How Data Pipelines Work

┌──────────┐    ┌───────────┐    ┌──────────┐    ┌──────────────┐
│  Sources │──→ │  Extract  │──→ │Transform │──→ │    Load      │
│          │    │           │    │          │    │              │
│ Databases│    │ APIs      │    │ Clean    │    │ Data         │
│ APIs     │    │ CDC       │    │ Validate │    │ Warehouse    │
│ Files    │    │ Streaming │    │ Enrich   │    │ Data Lake    │
│ SaaS     │    │           │    │ Aggregate│    │ Feature Store│
└──────────┘    └───────────┘    └──────────┘    └──────────────┘

Types of Data Pipelines

Batch Pipelines

  • Process data in scheduled intervals (hourly, daily)
  • Best for: Reports, analytics, historical analysis
  • Tools: Airflow, dbt, Spark, AWS Glue

Streaming Pipelines

  • Process data in real-time as it arrives
  • Best for: Fraud detection, real-time dashboards, alerts
  • Tools: Kafka, Flink, Spark Streaming, Kinesis

Hybrid Pipelines (Lambda/Kappa)

  • Combine batch and streaming for different latency needs
  • Lambda: Separate batch + speed layers
  • Kappa: Single streaming layer serves all needs

Pipeline Patterns

ETL (Extract, Transform, Load)

Transform data before loading into the warehouse:
Source → Transform (staging) → Load (warehouse)
Best when you need data quality guarantees before loading.

ELT (Extract, Load, Transform)

Load raw data first, transform inside the warehouse:
Source → Load (warehouse raw) → Transform (warehouse clean)
Best when your warehouse has powerful compute (Snowflake, BigQuery).

Reverse ETL

Move data from the warehouse back to operational tools:
Warehouse → CRM, Marketing tools, Product databases

Key Infrastructure Components

ComponentPurposeTools
IngestionExtract data from sourcesFivetran, Airbyte, Kafka Connect
OrchestrationSchedule and monitor pipelinesAirflow, Dagster, Prefect
TransformationClean and model datadbt, Spark, Dataform
StorageStore processed dataSnowflake, BigQuery, S3 + Iceberg
QualityValidate data integrityGreat Expectations, dbt tests, Soda
ObservabilityMonitor pipeline healthMonte Carlo, Datadog, Atlan

Best Practices

  1. Idempotency: Running a pipeline twice produces the same result
  2. Incremental Processing: Only process new/changed data
  3. Schema Evolution: Handle schema changes gracefully
  4. Testing: Unit test transforms, integration test end-to-end
  5. Alerting: Get notified on failures, delays, and data quality issues
  6. Documentation: Document data lineage and business logic

Key Points

Gotchas

Pipelines fail in predictable, expensive ways:

  • Hand-rolled cron-and-shell pipelines don't scale. I've seen multiple teams build 30-step pipelines with cron + bash + a heroic on-call rotation. They work until they don't, and by then there's no lineage, no retries, no observability, and no way to backfill safely. Invest in an orchestrator (Airflow, Dagster, Prefect) before step count exceeds 10.
  • Idempotency is the single most important property. Every pipeline step should be re-runnable without duplicating data or changing results. Use MERGE / UPSERT on destinations, deterministic transformation logic, and partition-based backfills. If you can't safely rerun a step, you have a landmine.
  • Schema evolution breaks pipelines silently. Source adds a new column; your SELECT now has an extra column that your destination rejects. Or source renames a column; your pipeline silently pulls NULLs. Use contract tests (dbt contracts, schema validation) and explicit column lists, not SELECT .
  • Backfills are the forgotten feature. When something goes wrong in production, you need to be able to rerun a range of dates. If your pipeline can't be partitioned and rerun cleanly by date, any incident requires custom one-off scripts. Dagster and modern Airflow both handle this well if you model time-based partitions upfront.
  • Observability without ownership is noise. Dashboards showing "pipeline X failed" don't help if nobody owns X. Every asset/table needs a named owner and a paging rule. Without ownership, alerts create the illusion of control.
  • Data quality tests belong on the pipeline, not in a separate project. dbt tests, Great Expectations, Soda — wire them into the orchestration graph so a failed test halts downstream, not "we ran tests nightly and reviewed reports quarterly."
  • Streaming + batch combined (Lambda) is hard; pick one when you can. Lambda architecture requires maintaining two code paths for the same transformation, and the "reconcile" step is where bugs live. Kappa (streaming only) or pure batch are simpler to operate. Use Lambda only when you genuinely need both fresh and historical views.
  • Pipelines rot without active maintenance. Deleted sources, deprecated tables, unused destination tables, runs that fail silently because nobody checks. Do quarterly pipeline audits; kill what's unused.

Frequently Asked Questions

What is a data pipeline in simple terms?

A data pipeline is an automated workflow that moves data from where it originates (databases, APIs, files, event streams) to where it's consumed (warehouses, dashboards, ML models, downstream apps) — usually with transformation steps in between. Think of it as an assembly line: raw materials come in at one end, get cleaned/enriched/aggregated, and finished product comes out the other. Pipelines range from a nightly Python script pulling from Salesforce into Postgres, to a streaming architecture with Kafka + Flink + Iceberg handling millions of events per second with sub-second latency.

What is the difference between ETL and ELT?

ETL transforms data before loading into the destination — the transform happens in transit, usually in a separate compute layer (Informatica, Talend, SSIS, or a staging area). ELT loads raw data first, then transforms inside the destination warehouse using its own compute power (Snowflake, BigQuery, Databricks + dbt). ELT became dominant because modern cloud warehouses have cheap elastic compute, and keeping raw data makes backfills and new use cases easier. ETL still matters when you need to mask PII before landing, or when the destination can't handle transformation load (older Redshift clusters, small Postgres warehouses). Modern default is ELT; older enterprises often still run ETL.

What tools are used to build data pipelines?

A modern stack typically combines: (1) ingestion — Fivetran, Airbyte, Kafka Connect for getting data in; (2) orchestration — Airflow, Dagster, or Prefect for scheduling and dependencies; (3) transformation — dbt for SQL-based, Spark/Snowpark for Python-based, Flink for streaming; (4) storage — Snowflake, BigQuery, Databricks, or S3 + Iceberg; (5) quality — dbt tests, Great Expectations, Soda; (6) observability — Monte Carlo, Atlan, or orchestrator-native lineage. Older stacks use Informatica, Talend, or hand-rolled Python. The specific combination depends on scale, budget, and existing investments.

What is the difference between batch and streaming pipelines?

Batch processes data in chunks on a schedule — hourly, daily, or on-demand. Streaming processes data continuously as events arrive. Batch is simpler and cheaper; streaming provides lower latency but is much harder operationally (exactly-once semantics, windowing, watermarks, backpressure, state management). Most business workloads can tolerate 15+ minute freshness and should use batch. Genuine streaming use cases: fraud detection, real-time personalization, operational monitoring, IoT. Mixed workloads sometimes use a Lambda architecture (batch + speed layer) but pure streaming or pure batch is operationally simpler.

What makes a data pipeline production-ready?

Six properties: (1) idempotent — re-runnable without side effects; (2) incremental — processes only new/changed data where possible; (3) observable — you can see what ran, what failed, and what produced each output; (4) testable — data quality tests run as part of the graph, not separately; (5) lineage-visible — you can trace any output back to its sources through every transformation; (6) owned — every asset has a named human responsible for it with an alert routing rule. Most outages come from missing one of these. A pipeline that "works in dev" but misses these is a time bomb.

How do you monitor a data pipeline?

Four layers: (1) job-level — orchestrator shows which runs succeeded/failed (Airflow, Dagster, Prefect UIs give this for free); (2) data-quality — dbt tests, Great Expectations, Soda catch rows-per-day anomalies, null rates, freshness; (3) asset/table-level — data observability tools (Monte Carlo, Atlan, Bigeye) detect statistical anomalies across tables automatically; (4) business-metric — does the final dashboard number match expectations? Alerting must be routed to a named owner with an SLA, not a shared channel where alerts die. Metrics that matter: freshness SLA compliance, row-count anomalies, failed-run rate, and MTTR for incidents.

What's the most common reason data pipelines fail?

Schema changes upstream that nobody warned the pipeline about. A source adds a column, renames a field, changes a type, or deletes a table — and downstream models either break loudly (good) or produce wrong results silently (bad). Defenses: data contracts between producers and consumers (dbt contracts, schema registries), source-freshness tests, explicit column lists (not SELECT *), and producer-side CI that fails before the change reaches production. After schema drift, the next most common causes are upstream API outages, replication slot issues (for CDC pipelines), and resource exhaustion (memory, slot, or warehouse capacity).

Related Terms

ETL (Extract, Transform, Load)Change Data Capture (CDC)Apache AirflowData QualityData Observability

Related Tools

Apache AirflowdbtFivetranApache KafkaSnowflake

Learn More

Related Articles

Browse All Terms Read Articles