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

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 — шаг на пути к масштабированию и большим нагрузкам. Но нужно внимательно считать сценарий использования — может оказаться значительно дороже традиционного способа.