Какой стек технологий лучше всего подойдет для работы с объемными базами данных?

Приветствую. Хочу сразу оговориться, что я не разработчик а заказчик, поэтому заранее извиняюсь за криво сформулированный вопрос. Для большего понимания я постараюсь всесторонне (но кратко) описать ситуацию и начну с предыстории.
Моя цель - сделать сайт который, скажем, имея каталог продуктов из 1000 наименований, будет собирать и обрабатывать данные пользователей в контексте их предпочтений, на основе данных взятых из личного кабинета, а также отзывов клиентов (будет принципиальное разделение на положительные и отрицательные отзывы по заранее фиксированным критериям). То есть система постоянно собирает статистику и по запросу, к примеру, по артикулу №367 может предоставить следующую информацию:
1. Процентное соотношение покупателей по полу/возрасту (прим. 20% это женщины в возрасте 25-35 лет, 15% это мужчины 45+ и тд)
2. “Расшифровка” отзывов - при написании отзыва будут обязательные к заполнению пункты (прим. шкала 1-10 баллов о каком-то аспекте продукта) Пример: 40% положительных отзывов о продукте №367 содержат отметки о факторе “Х” оценку 7 или выше. Аналогично и с негативными отзывами.
3. Сравнение изменений по сравнению с прошлыми месяцами/кварталами и т.п. - Прим: за зиму 2022г. Количество/процентное соотношение положительных отзывов сократилось на _____ а средняя оценка фактора “Х” снизилась на 0,7 балла.
4. Возможность сопоставить показатели двух товаров из одной категории друг к другу.
Помимо сбора, хранения и обработки данных, система также должна постоянно обновлять эту информацию на сайте для внимания посетителей.
В конечном итоге, при наличии большой аудитории (а проект планируется на 100 к+ посетителей в месяц) объем данных получается немалым.

Из разговоров с разработчиками (а я по счету уже дошел до 7-й компании) мне предлагают два варианта - полный самопис 150к+ (я это не тяну) или же сайт на Laravel +MySQL а дальше варьируется. Первое что меня смущает это троекратная разбежка ценников, кто-то готов за 20 к наваять, а некоторые даже за 60 урезают мои запросы вполовину и говорят: “или так или 5-15+ к за каждый дорабатываемый модуль”. Второй момент это вопрос нагрузки, некоторые разработчики заранее предупреждают что если аудитория достигнет условных 100 тысяч в месяц Лара начнет потихонечку задыхаться от нагрузки, другие говорят что если мне не нужен второй “фейсбук” все будет ок. В итоге у меня складывается впечатление что абсолютно все конторы вешают мне лапшу на уши в той или иной мере, и просто продвигают те решения на которых у них “набита рука”.

С учетом последних событий ситуация абсолютно непредсказуема и я пока решил поставить проект на паузу и потратить время на то чтобы вникнуть в предмет хотя бы на минимальном уровне, сижу вот книги читаю, первые строки кода пишу)) пытаясь понять базовые принципы.
Ну и наконец сам вопрос: исходя из вышеизложенного, какой бы стек технологий вы бы выбрали как разработчик чтобы решить вышеописанную задачу? Чтобы и конечная цена разработки не так кусалась, но и чтобы нагрузку выдерживала.
Заранее всех сердечно благодарю за нормальные ответы.
  • Вопрос задан
  • 460 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега Веб-разработка
{PHP, MySql, HTML, JS, CSS} developer
исходя из вышеизложенного, какой бы стек технологий вы бы выбрали как разработчик чтобы решить вышеописанную задачу?

Для начала немного контекста - 2 важных примечания:
1) Описанная задача решается на любом упомянутом стеке, + еще десяток возможных вариантов (Java/Spring, питон, нода, дотнет, голанг и т.д.).
2) Быстродействие системы зависит от ее самой медленной части, и в 95% случаев самая медленная часть - БД, просто в силу специфики работы: много данных со сложными связями, выборки с сортировкой и фильтрацией из большого массива и вот это все, в то время как язык бэкенда в основном выполняет достаточно простые манипуляции с уже готовыми наборами данных (за редчайшими исключениями, которых в вашем кейсе нет, или они не описаны в вопросе).

В вашем случае:
- база можно сказать совсем небольшая, до 1 миллиона записей условный мускуль ворочает весьма шустро, если железо соответствует.
- задача сбора метрик достаточно тривиальная, особого ума в сохранении действий пользователя не надо, бОльшая часть работы - вывод в красивые графики и написание быстрых запросов с хитрыми выборками/агрегациями, немного пошаманить с формулами, возможно делать какие-то сводные выборки с денормализованными результатами для отчетов и прочие мелочи. Работа не сложная, но нудная, и ее много.

Насчет стоимости и условий:
полный самопис 150к+ (я это не тяну) или же сайт на Laravel +MySQL а дальше варьируется.
полный самопис - либо маркетинг, либо идиотизм, писать на голом языке не будет ни одна нормальная студия, в принципе в данном случае либо используется фреймворк и заказчику преподносится как "сделано вручную программистами девственниками под светом серебряной луны", либо разработчики идиоты, мнящие себя круче всех (нет). В первом случае это то же что и "сайт на Laravel +MySQL" (норма и стандарт для среднего уровня студий), во втором - развод на мани на пустом месте и попытка продать г**но в обертке "иксклюзивнасти".

По цене - на сегодняшний день, если я не ошибаюсь, 150к деревянных это +- 1000уе. Цена приемлемая за нормальную работу, если найдете дешевле "на Laravel" - думаю будет вообще ок. Опять же, цены штука такая, кто-то за копейки сделает хорошо, кто-то за дорого каку сляпает. Влияет так же регион, понятно что в Мск цена будет серьезно больше чем в условном Челябинске...

Важный момент - нормальное ТЗ в разы упрощает как поиск исполнителя, так и оценку работы. Я бы на вашем месте погрузился именно в тему создания качественного ТЗ, нежели в дебри современных технологий.

UPD:
проект планируется на 100 к+ посетителей в месяц...
предупреждают что если аудитория достигнет условных 100 тысяч в месяц Лара начнет потихонечку задыхаться от нагрузки,
ок, пусть будет 200к для наглядности.
В среднем, если это маркетплейс, то постоянных посетителей будет не много, думаю около 10%, так что ими можно пренебречь. Условно - 200к / 30 дней = 6600 в сутки, при активных 10-12 часах посещения это ~600 в час. Пусть на 1 посетителя будет 5 запросов страниц, это 600*5=3000 в час = 50 в минуту или менее 1 запроса в секунду.
Даже если умножить это на 30 (допустим такая пиковая нагрузка), 30rps вообще "ниачем". Не знаю кто там вам считал то это проблема, любое современное железо среднего уровня вытягивает без напряга.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
присмотритесь к готовым
https://www.webmasters.by/articles/review-po/1137-...
в этом случае правки будут минимальными, а варианты на ларе это тоже самопис, только другой уровень абстракции.
И в общем то ценник в 150к не кажется мне большим. Зарплаты у программеров знаете какие?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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