Стоит ли использовать файловый сервер в проекте?

Евгений Зыкин
Евгений Зыкин
  • Сообщений: 3
  • Последний визит: 20 октября 2025 в 16:50

Здравствуйте. Делаю проект на DST Platform, в котором среди прочего функционала есть загрузка пользователями файлов, их удаление, скачивание. Появилась дилемма, как хранить файлы. В моем понимании есть два варианта: сохранять их в файловой системе ОС и использовать файловый сервер, например Minio. К своему стыду к второму варианту я ни разу не прибегал.

Что думаю я на этот счет. Первый вариант — это простота реализации, тем более требуемый функционал наипростейший. Второй — это освоение новой технологии и вероятно иметь возможность хранить файлы на удаленной машине. Хотелось бы заменить, что масштабировать проект не планируется.
Хотелось бы узнать мнение бывалых, стоит ли тратить время на освоение новой технологии для себя учитывая требуемый простой функционал? Понимаю в этом ничего плохого нет, но уверен при более сложных задачах я его при необходимости освою в небольшие сроки. Или возможно есть какие-то другие подводные камни в использовании файловых серверов. Если посоветуете использовать при любых обстоятельствах именно их, то какие посоветуете в связке PHP и DST Platform?

Игорь Тупыленко
Игорь Тупыленко
  • Сообщений: 3
  • Последний визит: 14 октября 2025 в 20:36

Чем больше зависимостей, тем сложнее поддержка в будущем.

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

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

Я настоятельно рекомендую не городить лишних сущностей и хранить файлы на том же веб сервере как статические. Если нужны ограничения доступа, то используй штатные инструменты авторизации веб сервера либо свой велосипед. Это 10-15 строк кода, например файлы изначально хранятся в не опубликованном каталоге, а при предоставлении доступа к файлу в публичном создается симлинк, в имени которого id сессии (например id_сессии/id_файла причем если доступ сразу ко всем файлам, то достаточно линка на каталог по id_сессии), а при отзыве доступа, удаляются все симлинки с указанным id сессии.

Бонусом получаешь максимально ресурсоэффективный способ хранения и публикации файлов, минусом наверное только свой uploader писать (в наше время начинающие разработчики просто обязаны пройти через написание своих велосипедов типа upload файла, обслуживание очереди задач по времени и т.п. иначе такое городят, смотреть на этот кошмар невозможно) 

Руслан Кочетков
Руслан Кочетков
  • Сообщений: 3
  • Последний визит: 14 октября 2025 в 20:38

У вас вопрос не «стоит ли использовать», а «стоит ли воспользоваться случаем, чтобы освоить новую технологию».

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

Но если уж мечтать, то я бы написал класс, который реализует все методы для работы с файлами на локальном диске
После этого, если останется время и задор, то реализовал бы другой класс, для работы через облако.
И унифицировал эти классы, написав для них интерфейс.
При этом класс для работы с локальным диском придётся переделать, поскольку вылезут косяки неудачной абстракции.

Почему не сначала интерфейс — просто потому что вы изначально не представляете себе все требуемые методы. Это будет видно только из практики.

Таким образом вы и задачу решите оптимальным способом (локально), и опыт получите (причём в первую очередь в программировании), и гибкость добавите — если вдруг надо будет перейти на облако (причём не обязательно именно на это) то это будет проще сделать просто написав ещё один адаптер, но не трогая основной код

Павел Розин
Павел Розин
  • Сообщений: 3
  • Последний визит: 14 октября 2025 в 20:41

А webdav чем плох?

Minio это s3, сегодня масштабироваться не хотят, завтра захотят...

Авторизуйтесь, чтобы писать на форуме.

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе 170 Е.
Региональный оператор Сколково. Технопарк Нобель

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон