Добавить в корзинуПозвонить
Найти в Дзене

Куда складывать файлы для сайта и приложения, чтобы сервер не лёг

Пользователи заливают фото, документы, видео — и в какой-то момент сайт начинает тормозить. Диск на сервере красный, бэкапы не помещаются, админ снова «чистит место». Знакомо? Проблема не в том, что «много пользователей». Проблема в том, где лежат их файлы. Сервер создан для работы сайта: открывать страницы, обрабатывать заказы, ходить в базу. Когда туда же складывают тысячи файлов пользователей, происходит следующее: Это как складировать архив всей компании в рабочем кабинете директора. Технически возможно. Потом дорого. Вынести файлы пользователей в облачное S3-хранилище. Схема простая: Сервер остаётся лёгким. Файлы растут отдельно. Если файлы загружают люди, а не только программисты вручную — облако почти всегда правильнее диска сервера. Раньше так и было. Сейчас — нет. S3 — стандарт: одни и те же библиотеки и инструменты, что у крупных сервисов. Ваш разработчик (или подрядчик) подключает за день-два. Если разработчика нет — можно начать вручную через кабинет: загружать файлы в брау
Оглавление

Пользователи заливают фото, документы, видео — и в какой-то момент сайт начинает тормозить. Диск на сервере красный, бэкапы не помещаются, админ снова «чистит место».

Знакомо? Проблема не в том, что «много пользователей». Проблема в том, где лежат их файлы.

Почему хранить вложения на сервере — плохая идея

Сервер создан для работы сайта: открывать страницы, обрабатывать заказы, ходить в базу.

Когда туда же складывают тысячи файлов пользователей, происходит следующее:

  • диск забивается — серверу не на что дышать;
  • бэкап сервера раздувается до гигантских размеров;
  • один сбой диска — и пропали и сайт, и все вложения;
  • при росте проекта приходится срочно переносить файлы «на ходу».

Это как складировать архив всей компании в рабочем кабинете директора. Технически возможно. Потом дорого.

Что делать вместо этого

Вынести файлы пользователей в облачное S3-хранилище.

Схема простая:

  1. Пользователь загружает файл на сайт.
  2. Сайт сохраняет его в облако (в «бакет» — отдельную папку в S3).
  3. В базе остаётся только ссылка на файл, не сам файл на диске сервера.
  4. Когда нужно показать файл — сайт отдаёт временную ссылку или проксирует из облака.

Сервер остаётся лёгким. Файлы растут отдельно.

Кому это нужно

  • Интернет-магазин — фото товаров, чеки, вложения к заказам.
  • Сервис с личным кабинетом — аватары, документы, сканы.
  • CRM, тикеты, заявки — файлы клиентов.
  • Медиа-проекты — превью, исходники, подкасты.
  • Мобильное приложение — всё, что пользователь «прикрепляет».

Если файлы загружают люди, а не только программисты вручную — облако почти всегда правильнее диска сервера.

«Это сложно и только для программистов?»

Раньше так и было. Сейчас — нет.

S3 — стандарт: одни и те же библиотеки и инструменты, что у крупных сервисов. Ваш разработчик (или подрядчик) подключает за день-два. Если разработчика нет — можно начать вручную через кабинет: загружать файлы в браузере и раздавать по ссылкам.

На s3data.ru:

  • S3-совместимое хранилище;
  • личный кабинет;
  • ключи доступа для сайта;
  • документация с готовыми примерами.

Как это выглядит на практике (без кода)

Шаг 1. Регистрация на s3data.ru, пробный период — 30 дней, до 100 ГБ.

Шаг 2. В кабинете, раздел «Хранилища», создайте бакет — например myshop-uploads. Имя на латинице, 3–63 символа.

Шаг 3. В разделе «Ключи доступа» создайте пару для сайта. Лучше:

  • привязать к одному бакету;
  • дать только нужные права (запись и чтение для загрузок).

Шаг 4. Разработчик подключает бакет по адресу https://s3.s3data.ru, регион ru-1. Готовые настройки — в «Документация → Быстрый старт» (boto3, AWS CLI и др.).

Шаг 5. Проверка: загрузить тестовый файл → скачать → убедиться, что открывается.

Пока нет разработчика — можно загружать файлы прямо в браузере в кабинете (до 5 ГБ на файл).

Частые вопросы

Файлы будут доступны всем в интернете?
Нет, если вы сами не откроете доступ. По умолчанию бакет закрыт. Сайт отдаёт файлы через
временные ссылки из кода — так делают нормальные сервисы.

Сервер всё равно нужен?
Да, для сайта. Но он
не хранит тяжёлые файлы — только работает с ними.

Что когда пользователей станет в 10 раз больше?
В облаке
заказываете больший объём — без покупки нового сервера и ночных переездов.

А если облако «упадёт»?
Данные лежат на стороне хранилища с репликацией. Сервер сайта может перезагрузиться — файлы пользователей при этом на месте.

Три признака, что пора переносить файлы из сервера

  • Диск сервера заполнен больше чем на 70%
  • Бэкап сайта занимает часы и сотни гигабайт
  • При росте пользователей вы думаете «надо бы ещё один сервер»

Две галочки и больше — пора выносить вложения в S3.

Начинать не обязательно со всего: сначала новые загрузки — в облако. Старые файлы — по мере сил.