05 / 25 · §3
Где хранить файлы
Метаданные — в базе, бинарные файлы — в object storage, доставка — через CDN.
Нажми на схему, чтобы открыть в полном размере.
Главное
- Object storage: S3, Cloudflare R2, GCS, Azure Blob. Дёшево, почти безлимитно, устойчиво.
- Postgres хранит только метаданные: кто загрузил, имя, права, ссылка на файл.
- CDN кэширует контент рядом с пользователем: images, video, JS/CSS, downloads.
- Signed URLs — клиент грузит и скачивает напрямую в хранилище, минуя твой API.
- У R2 нулевой egress, а egress у S3 часто главная статья счёта.
Загрузка фото
User → API → PostgreSQL (metadata)
→ S3 (сам файл)
User в Бали → CDN Singapore → S3 (US origin) Не делай так
Фото пользователей не кладут в Postgres без веской причины: раздувается база, бэкапы и репликация.