RadarTrek
Home/Courses/Object Storage for Builders
🪣Intermediate8 lessons · 3 free

Object Storage for Builders

Saving uploaded files to your server's local disk works fine in development and fails the first time you redeploy, scale to a second instance, or actually need the durability guarantees a real storage provider gives you. This course teaches you how object storage actually works — buckets, keys, the S3 API that most providers now share — how to upload and serve files correctly, how to avoid the egress fees that quietly inflate a bill, how to lock down access so a bucket is never accidentally public, and how to choose between Amazon S3, Cloudflare R2, Backblaze B2, and the rest. By the end you will have real files flowing through a real bucket, served correctly and priced predictably.

Prerequisites: Some programming experience, a deployed (or deployable) app
Start free lessons
$59one-time · lifetime access

What you'll learn

Why saving uploads to a server disk breaks on redeploy and at scale
How buckets, keys, and the S3 API actually work
Uploading and serving your first real file from object storage
Choosing between Amazon S3, Cloudflare R2, Backblaze B2, Wasabi, DigitalOcean Spaces, and MinIO
Avoiding the egress fees that quietly inflate a storage bill
Locking down access with presigned URLs so a bucket is never accidentally public
Pairing storage with a CDN to cut both egress and latency
The production checklist: lifecycle rules, versioning, and a tested restore

Course outline

Full course — $59 one-time

04

Choosing an Object Storage Provider

S3, R2, Backblaze B2, Wasabi, DigitalOcean Spaces, MinIO — what actually differs

8 min
05

Egress Fees — The Hidden Cost

The bill that looks fine in month one and explodes once real users show up

8 min
06

Access Control and Avoiding Public Bucket Leaks

Presigned URLs, private-by-default buckets, and the misconfiguration that keeps making headlines

9 min
07

Pairing Object Storage with a CDN

Cutting egress cost and latency at the same time by serving from the edge

8 min
08

The Production Object Storage Checklist

Access, cost, lifecycle, and the disaster-recovery question most teams never actually test

8 min

Get the full course

8 lessons — from your first bucket upload to a production-grade access, cost, and recovery checklist.

8 lessons✓ Real code-along setups✓ Certificate
$59one-time

About this course

Saving uploaded files to a server's local disk works in development and breaks the first time you redeploy, scale past one instance, or actually need the durability guarantees a real storage provider gives you. Learning object storage means understanding the bucket-key-object model that Amazon S3 popularized and most providers now share, how to upload and serve files correctly through that shared S3-compatible API, how to avoid the egress fees that quietly inflate a storage bill, and how to lock down access with presigned URLs so a bucket is never accidentally left public.

This course is for developers whose current upload flow writes to a server disk or "/tmp" and breaks on redeploy. After completing it you will be able to upload and serve a real file from S3-compatible storage, choose between Amazon S3, Cloudflare R2, Backblaze B2, Wasabi, DigitalOcean Spaces, and MinIO based on real cost and egress tradeoffs, generate short-lived presigned URLs so uploads never touch your server unnecessarily, pair a bucket with a CDN to cut both cost and latency, and run a production checklist covering lifecycle rules, versioning, and a tested restore.

Frequently asked questions

Why does saving uploads to my server's disk stop working in production?

Most modern hosting platforms run on ephemeral filesystems — anything written to disk during a request can be gone on the next deploy, and the moment you run more than one server instance, a file uploaded to one instance is invisible to the others. Object storage exists independently of any single server, so every instance reads and writes the same bucket regardless of how many are running.

What is the difference between a bucket, a key, and an object in object storage?

A bucket is the top-level container with a unique name. An object is the actual file you store. A key is the full path-like string that identifies that object inside the bucket — for example uploads/2026/06/invoice.pdf. There are no real nested folders; a bucket is a flat namespace of keys that tools display as folders for convenience only.

Why does the S3 API matter if I am not using Amazon S3?

Cloudflare R2, Backblaze B2, Wasabi, and DigitalOcean Spaces all implement the same S3 API that Amazon popularized, using the same SDKs and request signing. This means switching providers can be close to a one-line endpoint change, and it is why these providers compete mainly on price and egress fees rather than on API differences.

What is egress and why does it matter more than storage price?

Egress is what you pay to transfer data out of a bucket — to an end user's browser or to another cloud. Storage cost scales with how much you keep; egress scales with how much gets viewed, which is why a popular file can generate meaningful charges on a per-GB-billed provider like Amazon S3 even though storing it costs almost nothing. Cloudflare R2 and Wasabi charge zero egress, which can change the total bill by an order of magnitude for content-heavy apps.

How do I make sure my bucket never gets accidentally exposed publicly?

Set buckets to private by default and grant access explicitly through short-lived presigned URLs rather than making a whole bucket public. A publicly readable bucket containing user uploads or backups is one of the most common and most avoidable data exposure incidents in production software — treat "should this be public" as a deliberate per-bucket decision, never a default you forgot to change.

RadarTrek Intel — monthly score updates

We track 40+ tools so you don't have to. Score changes, new tools, and new guides — once a month, no spam.