Build an S3-style distributed object store (12 scenes)
Scene 01 · Hello, object store: it's just a bucket
Bucket, object, key, PUT, GET — the flat key→bytes model, before we earn the word "forever."
Scene 01
Hello, object store: it's just a bucket
Diagram
A client on the left sends two requests into one box: PUT(key, bytes) writes some bytes under a name, GET(key) reads them back. The box is a bucket — a flat list of (key → bytes) tiles, never a folder tree. Peeking inside cracks it into two faint planes that the rest of the curriculum will fill in.
clientPUT(key, bytes)GET(key)PUTGETbucketflat namespace — no folder tree3 objectsempty bucketpeek inside OFF
A client stores some bytes under a name, then asks for that name back later. Watch the box on the right fill up, then hand the same bytes back. That box is the whole product — for now it looks like magic.
Implementation
Client.put
write some bytes under a key into a bucket
1# store bytes under a name; no folder is created
2s3.put_object(bucket, key, bytes)
3# key is one flat string: "logs/2026/app.log" != a path
Client.get
read exactly those bytes back by key
1# returns the exact bytes last stored under key
2bytes = s3.get_object(bucket, key)
Not sure what to ask? Tap a question — the staff engineer answers in the chat panel.