Файлы теперь лежат в ведрах

Photo 119@14 07 2025 23 50 49

Раньше, когда пользователь загружал картинки на сайт, картинки сохранялись в папку на том же сервере. У популярных сайтов диски быстро заполнялись и требовалось следить за этим. Далее серверы начали упираться в ограничения на количество файлов в папке и на количество папок на диске.

В 2006 Амазон запустили Simple Storage Service (S3) — сервис с простым хранением файлов в облаке, призванный решить все эти вопросы. Через API загружаем файл, сервис генерирует ссылку. Файл загружается в вёдро (bucket), а не на диск. Вёдра не имеют ограничений как у папок и могут быть распределены по разным серверам.

Сейчас S3-сервис можно создать на многих хостингах в пару кликов. Также можно развернуть своё S3-хранилище с помощью Open Source, например MinIO.

Для чего это нужно нам сейчас на практике?
— Загружать и хранить бэкапы — первое с чего обычно начинают.
— Хранить файлы отдельно от нод, обрабатывающих запросы.
— Отдавать статические файлы сайта (картинки, скрипты, файлы для скачивания) с отдельного сервиса.
— Избегать ситуации с переполненным диском на сервере за счёт переноса всех больших файлов в S3.
— Организовывать безразмерные хранилища файлов на терабайты с открытым и закрытым доступом.
— Для S3-хранилищ есть библиотеки на всех популярных языках.
— Все S3-совместимые хранилища работают по образцу Amazon S3, поэтому ко всем хранилищам нужна одна библиотека.
— Для разработки в docker-compose удобно использовать образ MinIO.

Может тарифицироваться:
— Стоимость хранения в гигабайтах.
— Стоимость трафика загрузки в облако (чаще всего бесплатно)
— Стоимость трафика выгрузки из облака.
— Запросы к файлам.
— Хранение старых версий файла (если работает с версионированием).

Для большинства проектов переход на S3 — шаг на пути к масштабированию и большим нагрузкам. Но нужно внимательно считать сценарий использования — может оказаться значительно дороже традиционного способа.