Your Mental Model of S3 Is Years Out of Date
Strong consistency, compare-and-swap, and real directories quietly turned AWS's blob store into a database substrate.
Ask most engineers what Amazon S3 is and you'll get the 2015 answer: a flat key-value blob store over HTTP. Eventually consistent, no real directories, dumb but durable — put your backups there and keep the interesting state in a database. Explainers still circulating this year repeat that model almost verbatim, right down to "eventually consistent for overwrites."
Every clause of that model is now wrong, and the gap matters. S3 stopped being eventually consistent in December 2020. It grew real hierarchical directories in 2023. And in 2024 it gained compare-and-swap, which quietly deleted the main reason you needed a database sitting next to it. If you're still architecting around the folk version of S3, you're paying for infrastructure the storage layer now gives you for free.
The machine under the flat namespace
The "simple" in Simple Storage Service describes the API, not the system. Under the hood, S3 is hundreds of microservices fronting tens of millions of hard drives. The storage nodes run ShardStore, an LSM-tree-based engine Amazon built in Rust and validated with lightweight formal methods — they published the details in a SOSP paper, which is worth reading if you want to see what "we really don't want to lose your bytes" looks like as an engineering practice. Objects are erasure-coded across drives and infrastructure, and the eleven-nines durability figure isn't a static math result: it's continuous auditing, re-replication, and checksumming racing against constant disk failure at fleet scale.
The scale numbers reframe what individual buckets get for free. As of re:Invent 2024, S3 holds over 400 trillion objects and handles peaks of 150 million requests per second. Your workload — even your "big" workload — is statistical noise inside that fleet, which is precisely why S3 can absorb bursty access patterns that would melt a provisioned system: your heat is decorrelated against millions of other customers' cold data on the same spindles.
That's the real answer to "what is S3": not a hash map in the sky, but a workload-multiplexing machine whose core trick is spreading every customer thin across an enormous fleet.
The consistency fix nobody updated their notes for
For its first fourteen years, S3 was eventually consistent for overwrites and lists, and an entire cottage industry grew up around the gap: Hadoop's S3Guard, EMRFS consistent view, homegrown "write a manifest to DynamoDB" patterns. In December 2020, AWS made all of it obsolete — strong read-after-write consistency for every object and list operation, in every region, at no cost and with no flag to flip.
That this still surprises people in 2026 tells you how sticky infrastructure folklore is. S3Guard was literally removed from Hadoop because it no longer had a job. If your team's design docs still say "remember S3 lists can be stale," you're carrying complexity for a failure mode that no longer exists.
Compare-and-swap changed what S3 is for
Strong consistency made S3 trustworthy. Conditional writes made it a coordination primitive. In August 2024, S3 added If-None-Match: * on PUT — the write fails with a 412 if the key already exists. November 2024 added If-Match on an ETag: a true compare-and-swap, where your overwrite lands only if nobody else modified the object since you read it. October 2025 extended conditions to copy operations.
# Only one concurrent writer wins this — the rest get HTTP 412
aws s3api put-object \
--bucket my-bucket --key leases/leader.json \
--body candidate.json --if-none-match '*'
This is a bigger deal than it looks. Distributed leases, exactly-once manifest commits, multi-writer log coordination — the things you previously bolted a DynamoDB table or a ZooKeeper cluster onto S3 to get — are now one HTTP header. Delta Lake's multi-writer story on S3 historically required an external DynamoDB lock table; Iceberg catalogs existed partly to arbitrate commits. A whole generation of new systems — SlateDB, WarpStream-style architectures, most of the "diskless" Kafka clones — is being designed on the assumption that the object store itself is the arbiter. That assumption became safe roughly eighteen months ago.
AWS clearly knows what it built, because it's now shipping the higher-level versions itself: S3 Tables (December 2024) are fully managed Apache Iceberg tables with automatic compaction, and S3 Vectors (preview July 2025, GA that December) puts approximate-nearest-neighbor queries directly in the storage layer. The blob store is climbing the stack toward the database.
Even "flat namespace" has an asterisk now
The one architectural fact everyone learns — S3 has no real folders, / is a lie — is no longer universally true either. S3 Express One Zone (November 2023) introduced directory buckets: actual hierarchical namespaces with single-digit-millisecond first-byte latency, aimed at workloads like ML training and log analytics where general-purpose S3's tens-of-milliseconds floor hurts. Different trade-offs — one availability zone, different pricing — but it breaks the "S3 is always flat and always slow-ish" catechism.
What you should do differently
Concretely: next time you reach for DynamoDB purely to serialize writers over S3 data, check whether an If-Match loop does the job. The trade-offs are real but legible. CAS on S3 gives you single-key atomicity only — no multi-key transactions — and contention costs money, since every losing writer burns a PUT at $5 per million and retries. Latency on general-purpose buckets still floors in the tens of milliseconds, so it's a coordination primitive, not a lock service for hot paths. And if you run S3-compatible storage — MinIO, Ceph RGW — verify conditional-write support in your version before depending on it; compatibility matrices lag AWS by months to years, and CAS is exactly the feature where "mostly compatible" bites.
The judgment call: this isn't hype. The 2020 consistency change plus 2024 conditional writes are a genuine phase shift — S3 crossed from "durable bytes, bring your own coordination" to "storage substrate you can build databases on," and the ecosystem's most interesting new data systems are the proof. The losers are the accessories: lock tables, consistency layers, and the parts of streaming and catalog infrastructure that existed only to work around guarantees S3 didn't offer. The folk model of S3 was accurate for a long time. It's costing you money now.
Sources & further reading
- What Is Amazon S3, Really? (2026) — dev.to
- Amazon S3 now delivers strong read-after-write consistency automatically for all applications — aws.amazon.com
- Amazon S3 adds new functionality for conditional writes — aws.amazon.com
- Building and operating a pretty big storage system called S3 — allthingsdistributed.com
- Announcing Amazon S3 Tables - Fully managed Apache Iceberg tables — aws.amazon.com
- Introducing Amazon S3 Vectors (preview) — aws.amazon.com
Emeka has spent over a decade tracking threat actors, vulnerability disclosures, and the evolving landscape of application security, bringing a sharp continent-spanning perspective to his reporting. He's known for translating dense CVE advisories into clear, actionable context that developers and security teams alike actually read.
Discussion 0
No comments yet
Be the first to weigh in.