Disappearing infrastructure

Something strange has been happening to infrastructure. It’s disappearing.

I don’t mean companies are shutting down servers. I mean the complexity that used to be visible to developers is sinking below the surface. The best infrastructure is the kind you forget exists. Bun and Railway are making that possible for storage.

Consider how Bun treats S3 storage. When Bun 1.2 shipped earlier this year, it included a native S3 client baked into the runtime itself. Not an npm package. A standard library feature, like fetch.

import { s3 } from 'bun'
await s3.file('photo.jpg').write(imageData)

That’s it. No SDK installation. No credential boilerplate. The runtime just knows how to talk to S3.

This probably seems like a minor convenience. But when a capability moves from userspace libraries into the runtime, it changes how developers think about it. It stops being a thing you set up and starts being a thing that’s just there.

The old way was genuinely awful. You had to pull in the massive AWS SDK, instantiate a client object, construct command objects, and handle credentials in a way that felt surprisingly brittle for how common the operation is. That was fifteen lines of code for putting a file somewhere.


Railway’s new Storage Buckets feature shows the platform side of this shift. It went generally available in late November. You click a button, name your bucket, pick a region, and you’re done. The credentials inject themselves into your services automatically.

The pricing is worth paying attention to. Railway charges $0.015 per GB-month. All S3 API operations are free. Egress is free.1 Compare that to the mental overhead of managing IAM policies in the AWS console. For most projects, the simplicity is worth more than any cost savings you’d get from rolling your own.

But the interesting thing isn’t really the pricing. It’s how little you have to think.

When you combine a runtime that treats storage as first-class with a platform that makes provisioning effortless, a lot of architectural complexity just goes away. You can build an image upload service or a file backup system with almost no setup. The gap between having an idea and having it running shrinks to almost nothing.


The most radical pattern this enables is what I’ll call the no-database architecture. Instead of Postgres, you store everything in the object store. When you create something, you write two files. The actual content and a JSON file with metadata. When you need to read it back, you list the bucket.

We’re conditioned to reach for Postgres immediately. But for append-only workloads, S3 works fine. It’s durable and cheap. The trade-off is search. If you need complex queries, you need a search index or a real database. But for simple lists sorted by timestamp? This is enough.

I’m not saying you should do this for everything. But it’s interesting that you can do it at all. A few years ago this would have felt like a hack. Now it feels like a reasonable choice for certain problems.


What’s happening here is that capabilities are diffusing downward into the platform. This is a pattern throughout computing history. Memory management used to be manual. HTTP clients used to be libraries. Now the garbage collector handles memory and fetch is built into every browser.

Each step feels minor in isolation. But the cumulative effect is dramatic. The surface area of things you need to understand keeps shrinking.

I keep calling this “infrastructure disappearing” but that’s not quite right. The infrastructure is still there. It’s just that you don’t have to think about it anymore. You’re consuming it as a fluid medium rather than assembling it from parts.

This changes what’s possible for small teams. Things that used to require a dedicated operations person can now be done by anyone. Things that took days of setup happen in minutes.

The recent Anthropic acquisition of Bun suggests this trend will accelerate.2 When a company whose main product depends on a runtime decides to buy that runtime, they have strong incentive to make it excellent. And Bun remaining open source means everyone benefits.

The stack is softening until it disappears. For most of us, that’s exactly where it should be.

Footnotes

  1. There’s a catch. Egress from your services to buckets still counts as service egress. So if your backend uploads files, that traffic is billed. But serving files directly to users via presigned URLs is free. Railway is being clever here. They’re encouraging the pattern that’s both cheaper for them and architecturally better for you.

  2. Bun’s founder Jarred Sumner put it well. Instead of going through “Bun, the VC-backed startup tries to figure out monetization,” they can skip that chapter entirely. For users, long-term stability matters more than theoretical independence.