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