Задать вопрос
svisch
@svisch

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

Здравствуйте. Делаю небольшой проект на Symfony, в котором среди прочего функционала есть загрузка пользователями файлов, их удаление, скачивание. Появилась дилемма, как хранить файлы. В моем понимании есть два варианта: сохранять их в файловой системе ОС и использовать файловый сервер, например Minio. К своему стыду к второму варианту я ни разу не прибегал.
Что думаю я на этот счет. Первый вариант - это простота реализации, тем более требуемый функционал наипростейший. Второй - это освоение новой технологии и вероятно иметь возможность хранить файлы на удаленной машине. Хотелось бы заменить, что масштабировать проект не планируется.
Хотелось бы узнать мнение бывалых, стоит ли тратить время на освоение новой технологии для себя учитывая требуемый простой функционал? Понимаю в этом ничего плохого нет, но уверен при более сложных задачах я его при необходимости освою в небольшие сроки. Или возможно есть какие-то другие подводные камни в использовании файловых серверов. Если посоветуете использовать при любых обстоятельствах именно их, то какие посоветуете в связке php и symfony?
  • Вопрос задан
  • 285 просмотров
Подписаться 2 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
@rPman
Чем больше зависимостей, тем сложнее поддержка в будущем.

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

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

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

Бонусом получаешь максимально ресурсоэффективный способ хранения и публикации файлов, минусом наверное только свой uploader писать (в наше время начинающие разработчики просто обязаны пройти через написание своих велосипедов типа upload файла, обслуживание очереди задач по времени и т.п. иначе такое городят, смотреть на этот кошмар невозможно)
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
У вас вопрос не "стоит ли использовать", а "стоит ли воспользоваться случаем, чтобы освоить новую технологию".
Тут надо выбирать между полученным опытом и кармой, которую подпортит человек, который будет поддерживать проект после вас - помянув недобрым словом за неоправданное усложнение.

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

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

Таким образом вы и задачу решите оптимальным способом (локально), и опыт получите (причём в первую очередь в программировании), и гибкость добавите - если вдруг надо будет перейти на облако (причём не обязательно именно на это) то это будет проще сделать просто написав ещё один адаптер, но не трогая основной код
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Drno
а webdav чем плох?
Minio это s3, сегодня масштабироваться не хотят, завтра захотят...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы