Tooling

Workflows & Pipelines (Infra)

Argo Workflows, Tekton, Airflow — long-running orchestration in clusters.

Distinct from CI / CD (build & ship code) and Workflow Engines (durable app-tier business workflows). This page covers infra-level pipelines: ETL / ML / batch / scheduled jobs that run inside a cluster.

Kubernetes-native

  • Argo Workflows — DAG / step-based; CRD-defined; lives in your cluster. The default for k8s-native pipelines. Pairs with Argo CD / Argo Events.
  • Tekton (CNCF) — pipelines-as-CRDs; popular for k8s-native CI/CD; broad ecosystem.
  • Argo Events — event-source CRDs that trigger Argo Workflows.
  • Apache Airflow (now KubernetesExecutor / KubernetesPodOperator) — runs on k8s; classic DAG scheduler.
  • Prefect — Python-native modern Airflow alternative.
  • Dagster — newer; data-asset-centric; great for data engineering.
  • Mage — newer Python data pipeline.
  • Kubeflow Pipelines — for ML on k8s.
  • Flyte — type-safe ML / data orchestrator.

Non-k8s

  • Apache Airflow standalone — still huge in data engineering.
  • Prefect Cloud — managed Prefect.
  • Dagster Cloud — managed Dagster.
  • n8n / Activepieces / Windmill — visual workflow tools; popular in self-host community.

CI-style alternatives

  • See CI / CD — GitHub Actions / Buildkite / Dagger / Earthly. These can run pipelines too.
  • Dagger — increasingly used for data and ML pipelines, not just CI.

Specialized

  • Apache Beam — unified batch + streaming model; runs on Flink / Dataflow / Spark.
  • Apache Flink — stream processing.
  • Apache Spark — batch + stream; ML.
  • Ray — distributed Python; ML / RL workloads.
  • Modal / Beam.cloud / Replicate — serverless Python / ML compute.

What lives in this category

  • ETL (Extract / Transform / Load) pipelines.
  • ML training / inference orchestration.
  • Periodic batch jobs (nightly reports, data warehouse loads).
  • Multi-step infra workflows (provision → configure → test → release).
  • Long-running data backfills.

When to use Argo Workflows specifically

  • You're already on k8s and want to keep workflows there.
  • DAGs of containers (each step is a container; great for polyglot pipelines).
  • You want UI + CRDs + GitOps for workflows.
  • Heavy parallelism (1000+ pods at once is fine).

When Airflow / Prefect / Dagster instead

  • Data engineering team that already knows Python and DAG concepts.
  • Need rich operators for data warehouses (Snowflake, BigQuery, Redshift, dbt).
  • Less interested in container-per-step; want Python DAGs.
  • Prefer hosted UIs / dashboards.

Patterns to adopt

  • Idempotent steps. Re-running a workflow shouldn't double-charge / double-send.
  • Retries with backoff in the workflow definition, not the app.
  • Persistent storage for intermediate artifacts (S3 / R2 / Volume).
  • Dependencies as DAGs, not implicit ordering.
  • Versioned workflow definitions in git; deploy with GitOps.
  • Observability — Argo / Airflow / Prefect / Dagster all have their own UIs; integrate with Grafana / Loki for unified logs.

Pick this if…

  • k8s-native, container-per-step: Argo Workflows.
  • k8s-native CI/CD-shape: Tekton.
  • Data engineering, Python DAGs: Airflow (boring, mature) or Dagster (modern).
  • ML on k8s: Kubeflow Pipelines or Flyte.
  • Visual / no-code-ish: n8n or Windmill.
  • Stream processing: Flink or Spark Streaming.

On this page