Serverless Python Data Pipelines

July 28, 2026

Bauplan vs AWS Lambda vs AWS Glue

Serverless Python data pipelines let you run Python data transformations without provisioning servers or managing compute infrastructure, but the phrase covers two very different kinds of tool and picking the wrong one is the most common mistake teams make. Function-as-a-service platforms like AWS Lambda and Google Cloud Functions run arbitrary Python on demand, and they are excellent at that. They are not data pipeline platforms. Bauplan is the execution layer for AI-generated data changes: it runs Python and SQL pipelines serverlessly, but it is built around data, with Apache Iceberg tables, branch isolation, and transactional publication as first-class parts of the runtime.

Teams hit this fork when they want the simplicity of "just run my Python" but are working with production tables, not stateless requests. That is where generic serverless compute stops fitting and a serverless data platform starts.

TL;DR

  • "Serverless Python" splits into two categories: function-as-a-service (Lambda, Cloud Functions) and serverless data platforms (Bauplan).
  • FaaS runs stateless Python on demand. FaaS runtimes have no native concept of tables, schemas, branches, or datasets.
  • For data pipelines that means you assemble everything yourself: table format, isolation, orchestration, packaging, and cold-start and timeout workarounds.
  • AWS Glue is serverless ETL, but it is Spark underneath, with cluster warm-up and Spark's operational weight.
  • Bauplan runs Python and SQL pipelines serverlessly on Apache Iceberg, with isolation, validation, and atomic publication built into the runtime instead of bolted on.

What "Serverless" Means for Data Pipelines vs Serverless Functions

The word serverless is doing two jobs and conflating them is the root of the confusion.

For a function-as-a-service platform, serverless means a stateless unit of code runs in response to an event, scales to zero and bills per invocation. The mental model is a request: something comes in, code runs, a response goes out. State lives elsewhere.

For a data pipeline, the unit of work is not a request. It is a transformation over tables that reads existing data and produces new data and correctness depends on what was there before and what gets written after. Serverless here has to mean more than "no server to manage". It has to mean the platform understands the data: where the tables live, what their schema is, how a change is isolated and how it gets published safely.

FaaS gives you the first meaning. Data pipelines need the second. You can build the second on top of the first and many teams have, but you are assembling many of the capabilities of a data platform yourself.

AWS Lambda and Google Cloud Functions: Where FaaS Fits and Where It Stops

Lambda and Cloud Functions are strong tools for what they are designed to do: event-driven glue, API backends, lightweight transforms and reacting to a file landing in a bucket. If your pipeline is a small stateless step, FaaS is a reasonable and cheap way to run it.

The gap opens as soon as the work is genuinely data-shaped. FaaS has no notion of a table or a dataset, so Iceberg reads and writes, catalog integration, and schema management become application responsibilities. Lambda provides no native data isolation, so writes follow the semantics of the storage system being used, with nothing between a bug and your live data. Packaging turns into its own project once dependencies like PyArrow, pandas, or Iceberg clients push you past deployment size limits. And the execution envelope fights you: cold starts add latency, memory ceilings constrain how much data you can hold and hard timeouts (15 minutes on Lambda) cut off longer transformations.

None of these are flaws in Lambda. They are the result of using a general-purpose compute primitive for a job that needs a data-aware one. FaaS was designed for stateless event-driven compute rather than end-to-end data pipelines.

AWS Glue: Serverless ETL, but Spark Underneath

Glue is the more honest comparison, because it is actually aimed at data. It is serverless in the sense that you do not manage the cluster directly, and it handles ETL at scale.

The cost is Spark. Glue runs Spark jobs, which brings Spark's operational reality: warm-up time before a job starts, JVM and partition tuning to get performance, and a heavyweight execution model that is a lot of machinery for a pipeline that could be a few Python functions. You are also working within the Spark execution model and Glue APIs, not writing plain Python against your tables. For teams that live in Spark already, Glue is a fit. For teams that want to write Python functions and not think about executors, it is more weight than the problem calls for.

Serverless ETL on Apache Iceberg: Bauplan vs AWS Glue

Here is the direct contrast on Iceberg-native ETL, which is where a lot of modern pipelines now sit.

With Glue, Iceberg is a target you configure Spark to read and write, and the job runs as a Spark application with the warm-up and tuning that implies. With Bauplan, Iceberg is the native substrate. You write a Python or SQL function, decorate it, and Bauplan runs it on serverless compute against Iceberg tables in your own object storage. There is no cluster to warm, no Spark to tune, and no separate step to make the write safe.

The safety piece is the real differentiator. Every Bauplan run takes a zero-copy branch from production, writes only to that branch, and merges to main as one atomic commit across every affected table if it succeeds. If it fails, the branch is discarded and production never changed. Glue can write correct data to Iceberg, but the isolation, the validation gate, and the atomic multi-table publish are things you design around it. In Bauplan they are the runtime.

Serverless Lakehouse Execution: Running Python Without Managing Infrastructure

Serverless lakehouse execution is the shape most teams actually want: write a transformation in Python or SQL, run it against lakehouse tables, and never think about the machine it runs on.

Bauplan is built for exactly that. Pipelines are ordinary Python and SQL functions. You do not package containers, size workers, write DAG boilerplate, or manage a cluster. You submit the function, Bauplan runs it on ephemeral serverless compute, and the result lands as a versioned commit on Apache Iceberg tables in your storage. Because the runtime owns execution, it also owns the guarantees around it: isolation by default, validation expressed in the same code as the pipeline, and atomic publication on merge. That is the difference between serverless as "no server to manage" and serverless as a data platform that runs your Python and keeps production safe while doing it.

Where Each Tool Sits

Dimension Bauplan AWS Lambda AWS Glue
Category Serverless data platform Function as a service Serverless Spark ETL
Unit of work Python and SQL pipelines over Apache Iceberg tables Stateless function per event Spark ETL job
Data awareness Native Apache Iceberg tables and catalog None; tables, schemas, and data handling are your responsibility Iceberg support through Spark configuration
Infrastructure to manage None; ephemeral serverless runtime None, but dependency packaging and execution limits are your responsibility No cluster ops, but Spark tuning remains
Data isolation Zero-copy branch per run, built in None; writes go straight to the target None native; designed around the job
Publication model Atomic multi-table commit on merge Whatever the function writes, immediately Depends on job and target design
Validation Expectations in code, gating merge Your responsibility, in the function Your responsibility, in the job
Execution limits Built for full pipeline runs Memory ceiling and hard timeout (15 min) Spark warm-up before each job
Language and idiom Plain Python and SQL functions Plain Python, no data primitives Spark and Glue APIs
Agent support SDK, API, and MCP for branch, run, validate, merge Can be invoked, no data safety guarantee Can be invoked, no data safety guarantee
Best fit Versioned, validated lakehouse pipelines Event-driven, stateless steps Spark-based ETL at scale

When to Use FaaS, When to Use Glue, When to Use Bauplan

Use Lambda or Cloud Functions for stateless, event-driven steps: reacting to an upload, a lightweight transform, an API backend, or small glue between systems. When the unit of work really is a request and not a dataset, FaaS is simple and cheap.

Use Glue when you are committed to Spark, already have Spark expertise, and want managed Spark-based ETL without running the cluster yourself. If your pipelines are Spark-shaped, Glue fits that shape.

Use Bauplan when you want to write Python and SQL pipelines on a lakehouse without managing infrastructure, and you need every run isolated, validated, and published atomically, including when AI agents are the ones writing and running the code. Bauplan is serverless in the sense that matters for data: no infrastructure, and the data guarantees are part of the platform.

Frequently Asked Questions

Is Bauplan a FaaS platform? How it differs from AWS Lambda for data engineering?

No. Bauplan runs serverless Python, but it is a serverless data platform, not a function-as-a-service platform like AWS Lambda. Lambda primarily runs stateless code in response to events and has no concept of a table, a schema, or a dataset. Bauplan runs Python and SQL pipelines against Apache Iceberg tables, with branch isolation, validation, and atomic publication built into the runtime. On Lambda those capabilities are implemented in your application or surrounding infrastructure. In Bauplan it is the platform, so the practical difference for data engineering is whether you assemble a data pipeline on top of generic compute or use a runtime that is data-aware from the start.

Is Bauplan the same as AWS Lambda for data pipelines?

No. They solve different problems. Lambda is general-purpose serverless compute for stateless functions and is a good fit for event-driven steps. Bauplan is purpose-built for data pipelines: it understands Iceberg tables, isolates every run on a branch, and publishes changes atomically. For a small stateless transform, Lambda is fine. For versioned, validated pipelines on production data, Bauplan provides guarantees Lambda does not have.

What is serverless lakehouse execution?

Serverless lakehouse execution means running data transformations on lakehouse tables without provisioning or managing the compute that runs them. You write a pipeline in Python or SQL, and the platform executes it on ephemeral serverless resources, scaling up and tearing down automatically. In Bauplan, that execution is coupled to Apache Iceberg and to branch isolation, so each run is isolated from production and published as an atomic commit, rather than simply running code with no data guarantees.

How does Bauplan differ from AWS Glue?

Glue is managed serverless ETL built on Apache Spark, so it carries Spark's warm-up time, tuning, and operational weight, and you work within the Spark idiom. Bauplan runs plain Python and SQL functions on serverless compute with no cluster to manage and no Spark execution engine to configure or tune and it treats Apache Iceberg as native. Bauplan also isolates every run on a branch and publishes atomically, whereas with Glue that isolation and multi-table atomicity are things you design around the job.

Can I run existing Python data pipelines on Bauplan without rewriting them?

Largely yes. Bauplan pipelines are Python and SQL functions, so moving existing transformation logic is mostly a matter of expressing it as Bauplan functions rather than rewriting the logic itself. You drop the infrastructure code, the packaging workarounds, and the isolation scaffolding, because the runtime provides those.