Как лучше организовать хранение пользовательских файлов?
Коллеги, приветствую.
Необходимо решить задачу с хранением пользовательских файлов.
Основные критерии, это репликация, масштабирование и цена решения.
Файлы будут до 15 Мб, но начальный размер может быть произвольный.
Нагрузка первое время будет небольшой, но необходимо иметь возможность легко масштабировать, желательно без сложной переконфигурации и миграции.
Самих файлов со временем будет достаточно много.
Сейчас рассматриваются в основном 2 решения, это GridFS и распределенная FS (GlusterFS, Ceph)
В случае Монги, есть возможность настроить необходимый уровень репликации, но смущает вопрос с масштабированием (шардирование).
В плане цены для минимального шарда в продакшен нужно как минимум 3 сервера под реплику + 3 общих конфига + сервер под mongos, причем для того чтобы доставить еще один шард, необходимо развернуть еще 2-3 сервера минимум.
Также смущает вопрос производительности, для высоконагруженного проекта я думаю это будет не лучшее решение.
В случае с распределенными FS, ситуация такая, что по отзывам складывается впечатление, что работают они достаточно нестабильно, и серебряной пули нет. К тому же нужен канал от 1Gbit для каждой ноды, если делать распределенное хранилище по нескольким дата центрам, то такое решение может быть очень затратное.
Есть еще вариант решения с использованием СХД, но честно, опыта решения данных проблем аппаратными средствами у меня нет, интересно услышать мнения экспертов.
Собственно, хотелось бы услышать мнения людей, которые решали подобные задачи и выбрать оптимальное решение.