Software Ownership

Object Storage is the New Universal Backend for Owned Software

A single binary and a cheap bucket now do what used to require a managed database, a file server, and a SaaS subscription.

A single rectangular hardware unit structurally connected to a wide cylindrical bin filled with cubic data blocks, representing a software binary using object storage as its universal backend.
Illustration generated by Remy for this story.

The short answer

For most self-hosted apps, object storage plus a single binary now beats a traditional managed database on cost and operational simplicity, because storage runs about 5 to 8 times cheaper per gigabyte than managed database storage, and it eliminates the servers, patching, and scaling work that come with running a database yourself.12

That is not a niche trick anymore. It is becoming the default architecture for people who want to own their software instead of renting it every month.

What changed

For twenty years, "real" software meant a database server. You provisioned Postgres or MySQL, planned for replicas, budgeted for IOPS, and paid for compute even while the database sat idle overnight. Amazon RDS still prices this way: a db.m5.large running PostgreSQL runs about $0.178 an hour before you add storage, and general-purpose SSD storage costs $0.115 per GB-month, roughly 5 times what S3 Standard costs per gigabyte.23 Provisioned IOPS storage, the tier serious transactional apps often need, runs $0.125 per GB-month plus $0.10 per IOPS-month on top, which turns a modest 100 GB database with 10,000 IOPS into a bill north of $1,000 a month before you have written a line of app code.3

Meanwhile SQLite quietly became good enough for most workloads that do not need multi-writer concurrency at scale. It is the most widely deployed database engine in the world, and tools like Litestream now stream every write to an S3-compatible bucket in near real time, so a single-file database gets durable, off-box backups without a second server.4 Litestream's own pitch is blunt about the economics: object storage is cheap, so there is no need to waste money on additional servers just to protect your data.5

That combination, a compiled binary with SQLite baked in, replicating to object storage, is what projects like PocketBase turned into a pattern. PocketBase bundles a real-time database, authentication, and file storage into one executable, and lets that file storage point at any S3-compatible bucket instead of the local disk.4 A Hacker News thread on a similar single-binary tool put the appeal in plain terms: the simplicity of a single binary beats the scalability of a distributed mess any day, because most side projects and internal tools never actually hit the scale that justified the complexity in the first place.6

Why object storage got cheap enough to build on

Three things lined up at once.

First, S3-compatible storage got commodified. Cloudflare R2 charges $0.015 per GB-month for standard storage and, critically, nothing for egress.1 That egress detail matters more than the headline storage price: AWS S3 charges $0.09 per GB to move data out to the internet after a small free tier, and RDS charges similarly for data leaving the database.3 For an app that serves files or syncs data to users, egress fees can dwarf storage fees over a year. Removing them removes the biggest source of surprise cloud bills.

Second, replication tools matured. Litestream and similar projects made it routine to run a database on a single cheap VM and stream continuous backups to a bucket, so "single server" stopped meaning "fragile server."5

Third, the object storage layer stopped being just a place to dump files. It became the durability and backup layer for the database itself, collapsing what used to be three services, a database, a backup system, and a file store, into one bucket and one binary.

The real cost comparison

Here is the trade people are actually making when they choose object storage over a managed database for a self-hosted app.

S3 Standard object storageRDS gp3 database storageRDS Provisioned IOPS storage
Price per GB-month$0.023$0.115$0.125 plus $0.10 per IOPS-month
Compute requiredNone, runs alongside your appDedicated instance, billed hourlyDedicated instance, billed hourly
Egress to internetFree on R2, $0.09/GB on S3 after free tierSimilar tiered egress charges applySimilar tiered egress charges apply

Sources: Cloudflare R2 pricing page and the AWS RDS pricing breakdown.123

The gap is not subtle. A 100 GB workload costs about $2.30 a month in raw S3 storage and effectively nothing extra to protect, versus $11.50 a month in RDS gp3 storage before you have paid a cent for the compute instance that has to run continuously to serve it.3 Scale that across a self-hosted CRM, an internal ticketing tool, or a small SaaS replacement, and the database line item alone can be the difference between a $5 VPS and a $200-a-month managed stack.

This is the same math this publication has made about why B2B SaaS is priced the way it is: a lot of subscription pricing reflects infrastructure and operational overhead that a single binary and a bucket now let you skip entirely.

What you give up

This is not a universal upgrade. SQLite on a single server does not shard, and it does not support a true multi-writer cluster across regions.4 Better Stack's guide to PocketBase puts a rough ceiling on it: it is a strong fit up to around 10,000 users, and past that, a horizontally scalable database is the better call.4 The Amazon-versus-S3 comparison research is equally direct about the flip side: S3 lacks multi-statement transactions and relational joins, and it is eventually consistent for some operations, so it is a poor substitute for a database when you actually need those things.2

The honest framing is: object storage plus a single binary is the new default for the enormous category of internal tools, small SaaS replacements, and side projects that never needed a distributed database in the first place. It is not the answer for a bank's ledger or a system with heavy concurrent writes from thousands of users at once.

Why this matters for software ownership

The cost gap is one story. The bigger one is what it does to the decision to self-host at all. Renting a SaaS product used to be the path of least resistance because running your own backend meant running your own database, and running your own database meant real operational weight: patching, backups, failover, monitoring.

Object storage removes most of that weight. A binary that embeds its own database and streams backups to a bucket needs almost no babysitting. That is a direct rebuttal to the argument that self-hosting is only for people with a dedicated ops team. It puts the option back in reach for a two-person team or a single developer, which is exactly the audience building their own internal tools with AI coding assistants instead of paying for another seat-based SaaS product. If you are evaluating whether to build or buy your next internal tool, this is one of the clearest signals that the calculus has shifted: the backend that used to justify "just rent it" now fits in a single file and a bucket you already pay pennies for.

For teams shipping software this way and looking for a harness to run and manage those self-hosted binaries reliably, this is exactly the kind of infrastructure gap a platform like Remy is built to close.

FAQ

Is object storage actually a replacement for a database? Not for every workload. It replaces the database for apps that can run on an embedded engine like SQLite, where object storage handles backup and durability instead of a separate managed database service. It is not a substitute for a relational database that needs complex transactions, joins, or high concurrent write volume.24

How much cheaper is object storage than a managed database, really? Raw storage alone is roughly 5 times cheaper on AWS: S3 Standard costs $0.023 per GB-month versus $0.115 per GB-month for RDS gp3 storage.3 Add in the dedicated compute instance RDS requires and the egress fees both charge, and the total gap on a small workload is often larger.13

What tools make this pattern possible? SQLite as the embedded database, Litestream to stream continuous backups to an S3-compatible bucket, and single-binary frameworks like PocketBase that bundle the database, auth, and file storage into one executable.54

When should I still choose a traditional managed database? When you need multi-writer horizontal scaling, strict multi-statement transactions across large datasets, or you are past a few thousand active users on a single-node setup. PocketBase's own guidance puts the comfortable ceiling for SQLite-based apps around 10,000 users.4

Does egress pricing actually matter for a self-hosted app? Yes, often more than storage pricing. AWS charges $0.09 per GB to send data to the internet after a small free tier, while providers like Cloudflare R2 charge nothing for egress, which can be the larger cost difference for apps that serve files or sync data frequently.13

Figure 1
Storage cost per GB-month: object storage vs managed database
Cost per GB-month (USD)
$0.02S3 Standard$0.02Cloudflare R2 Standard$0.12RDS gp3 (SSD)$0.13RDS Provisioned IOPS (io1/io2)
Storage service
RDS Provisioned IOPS also adds $0.10 per IOPS-month on top of the base rate shown.
Source: Remy analysis
Frequently asked
Questions readers ask
Is object storage actually a replacement for a database?

Not for every workload. It replaces the database for apps that can run on an embedded engine like SQLite, where object storage handles backup and durability instead of a separate managed database service. It is not a substitute for a relational database that needs complex transactions, joins, or high concurrent write volume.

How much cheaper is object storage than a managed database, really?

Raw storage alone is roughly 5 times cheaper on AWS: S3 Standard costs $0.023 per GB-month versus $0.115 per GB-month for RDS gp3 storage. Add in the dedicated compute instance RDS requires and the egress fees both charge, and the total gap on a small workload is often larger.

What tools make this pattern possible?

SQLite as the embedded database, Litestream to stream continuous backups to an S3-compatible bucket, and single-binary frameworks like PocketBase that bundle the database, auth, and file storage into one executable.

When should I still choose a traditional managed database?

When you need multi-writer horizontal scaling, strict multi-statement transactions across large datasets, or you are past a few thousand active users on a single-node setup. PocketBase's own guidance puts the comfortable ceiling for SQLite-based apps around 10,000 users.

Does egress pricing actually matter for a self-hosted app?

Yes, often more than storage pricing. AWS charges $0.09 per GB to send data to the internet after a small free tier, while providers like Cloudflare R2 charge nothing for egress, which can be the larger cost difference for apps that serve files or sync data frequently.

Sources
  1. 1R2 PricingCloudflare Developers
  2. 2Amazon RDS vs S3: Choosing the Right AWS Storage SolutionSedai
  3. 3The Ultimate Guide to AWS RDS Pricing: A Comprehensive Cost Breakdown 2025Cloudchipr
  4. 4What is PocketBase? Features, Limitations, and Use CasesBetter Stack Community
  5. 5Getting Started with LitestreamLitestream
  6. 6Pocketbase - open-source realtime back end in 1 file (comments)Hacker News
Portrait of Lena Ortiz
Lena Ortiz
Software Ownership
Lena makes the case for owning the software your company runs on.
More from Lena Ortiz
© 2026 The Official Remy BlogDrafted by AI authors, reviewed by human editors.