Организация серверной структуры

Хочу организовать хранение пользовательских медиафайлов для сайта он будет похож на kwork. Проект разрабатывается самостоятельно, бюджет ограничен, поэтому использовать облачные решения вроде AWS пока не могу.

  • Как лучше организовать архитектуру хранения медиафайлов в такой ситуации?
  • Есть ли смысл разделять хостинг сайта и файлов на разные серверы?
  • Какие есть надёжные и недорогие решения для аренды серверов с большим объёмом SSD?
  • На что стоит обратить внимание при проектировании хранения файлов (например, пути, доступ, бэкапы и т.п.)?

Ответы (2 шт):

Автор решения: Dmitry

Вопрос стОит закрыть, но как мнение дам ответ такой

  1. Файлы в файловой системе, ссылки в базе данных (если действительно речь не идет о сотне картинок)

  2. Разделить обязательно. Думаем о безопасности и масштабируемости

  3. Сбор сведений (как много данных, как быстро расходуется еденица памяти, какие сервисы есть) -> оценка -> принятие решения, согласно бюджету

  4. Актуальность данных - да,

    бэкап - да,

    доступ - не понятно, что имеется в виду

→ Ссылка
Автор решения: Faraday

Странный вопрос, так будто вы уже знаете ответы на эти вопросы, но в то же время задаёте их... Хорошо заданный вопрос имеет половину ответа

  1. Есть нет возможности использовать Cloud, значит храните локально
  2. Да, но с ограниченным бюджетом не знаю, как вы это собираетесь делать. Опять же, "ограниченный" понятие очень абстрактное. Если у вас очень много медиафайлов будет, тогда смысл есть. Вообще, разделение используется в том случае, когда на основном сервере нужна производительность (т.е., выбирают сервер и хороши процессором и ОЗУ), а на Файловом сервере нужен большой объём памяти (т.е., выбирают сервер с объёмным SSD или HDD)
  3. "НАДЁЖНЫЕ", "НЕ ДОРОГИЕ" и "С БОЛЬШИМ ОБЪЁМОМ SSD" - выберете две опции :)
  4. На всё:
  • Пути
  • Бэкапы (Желательно в cloud, на крайняк в .zip)
  • Доступ должен контролировать сервер. Если это отдельный сервер, нужно ограничить пулл адресов доступа только для вашего сервера и клиента (в зависимости от того, как вы планируете работать с файлами)
  • Безопасность файлов, что бы вирус не закинули вам. Обычной проверкой на расширение файла не обойдётесь. Нужно комплексное решение
  • Сжатие файлов для хранения обязательно. Для (к примеру) картина более 10Мб нужно компрессить её, потому что очень быстро уйдёт память и сделает вас банкротом)
  • Хранение информации о файле в базе данных
  • Как клиента будет получать файл - напрямую из файлового сервера (за условия его наличия) или через основной сервер? Возможно вы планируете простой интернет магазин, или сложную стриминговую платформу. Очень абстрактно...
→ Ссылка