Every Tiffin restaurant uploads photos of its dishes. A good photo is 2 to 4 MB. With 60,000 restaurants and 40 dishes each, that's around 7 TB of images, plus resized copies, receipts as PDFs, and rider ID documents. None of that belongs in your database. Storing 4 MB blobs in Postgres bloats backups, slows replication and wastes expensive disk.
The answer in almost every design is object storage: Amazon S3, or the equivalents from Google Cloud Storage, Azure Blob Storage and Cloudflare R2, or self-hosted options such as Ceph and Garage. This lesson uses S3 because its API became the standard everyone copies.
What it's best at
Object storage is the right home for large, write-once, read-many files:
- user uploads: photos, videos, documents
- static website assets
- backups and database snapshots (Module 5)
- logs and data lake files (Parquet, CSV) for batch jobs (Module 17)
- anything you want to keep for years cheaply
It's built for enormous scale and durability, not for low latency or small frequent updates.