All articles

Why we built Springtail > Scaling out Postgres shouldn’t mean starting over

Photo of Craig Soules, co-founder and CEO of Springtail.
Craig Soules
CEO
Photo of George Szundi, co-founder of Springtail.
George Szundi
GTM
4 minute read April 22, 2025

We didn’t set out to build a typical database. We built something that works with the Postgres you already use, scales when you need it, and doesn’t require throwing everything out just to keep growing.

This is a golden age for databases. There’s distributed systems, cloud-native options, fully managed services, and battle-tested engines like Postgres that keep getting better every year.

But despite all that progress, scaling your database is still surprisingly hard.

Postgres: the trusted foundation

Many teams still build applications with a single-node Postgres backend. It’s how a ton of apps start, and how they stay for as long as possible.

And for good reason. Postgres is rock solid, well-loved, and everywhere. It’s mature, feature-rich, and backed by an incredibly active community.

But fast forward a bit, and that single node starts to feel like a ceiling.

The slow slide into complexity

You add CPU and memory, paying more each time, until vertical scaling hits a wall. You add read replicas, but now you’re stuck with static provisioning, delayed replicas, and traffic routing that feels more fragile than helpful.

Eventually, you’re staring down the barrel of a re-architecture.

That might mean sharding, caching layers, or even switching database engines.

Database migration: fun for the whole team /s

There are plenty of Postgres-compatible databases that offer horizontal scalability, high availability, and all the right buzzwords.

But unless you’re starting a project from scratch, they all require a full migration.

And that is anything but trivial when you’re dealing with a production system, custom infrastructure, and years of application code built around your current setup.

Migrations are risky, time-consuming, and a hard sell to the rest of the team.

At our last company, we scaled our primary instance 16x, migrated databases twice, and layered on sharding, caching, disk raiding, and more. All that work just to keep up with growing workloads, rather than shipping new features.

Springtail is a new approach

We were tired of dealing with endless database performance challenges, and re-architecture projects that consumed entire quarters.

So, we took a different approach.

Springtail is a cloud-native, distributed database that you can scale up to handle heavy workloads, and scale down to reduce costs.

But instead of replacing your database, we integrate directly with the one you already use.

Springtail integrates with your existing PostgreSQL database on AWS.

Springtail connects to your existing Postgres instance using native logical replication. It streams changes from your primary database in real-time, letting you scale out read workloads without changing your existing infrastructure.

No forks, no extensions, no rewrites.

And there’s zero migration and zero changes to your application or data model.

Elastic replicas that don’t burn budget

We’re starting with read replicas, because that’s where scaling problems and over-provisioning costs show up first.

Background jobs, analytics, and ETL are all ideal for offloading to replicas. So are read-heavy OLTP workloads, like user-facing product queries that need up-to-date results in real-time.

But with traditional replicas, you’re paying for always-on compute even if the node is idle a good chunk of each day. And when it has to match your primary’s instance size, you’re often paying two to three times more than you need to.

Springtail changes that.

It separates storage from compute, so replica nodes are stateless and can boot in seconds. You can scale up compute for heavy workloads and scale down when it’s quiet.

Springtail’s replication layer keeps storage in sync behind the scenes. You don’t need to manage snapshots, monitor lag, or pre-provision anything.

And because Springtail’s proxy sits between your app and your database, we can load balance reads across replica nodes and route writes back to your primary automatically, with no client-side changes.

Same Postgres experience, but now it scales

The result looks and feels like a regular Postgres replica, but one that scales elastically, reduces cost, and just works.

So you can stay focused on building features, not wrangling infrastructure or migrating your database for the second third time.

Check out our docs and request access to get started.