Планирую разработку веб-проекта, в котором будет функционал по типу как в Reddit, Quora - то есть общение пользователей, профили, подписки, рассылки и т.д. Предполагаемая посещаемость в сутки от 50к., но в будущем планируется масштабирование проекта и посещаемость уже может быть и 100к и 200к. Начинаем с веб-приложения, далее планируется доработка мобильных приложений, в связи с чем нужно иметь возможность удобно дописать API под мобайл.
Понимаю, что такой проект можно реализовать на любом языке/фреймворке. Но я хорошо знаю PHP и Laravel, хуже знаю (но готов подтянуть) Node JS, не знаю, что интересно было бы попробовать Django.
Вопрос к знающим, какой фреймворк выбрать (Laravel, Express либо Koa, Django) и почему.
Важна производительность, поэтому и стал вопрос о переходе от PHP/Laravel. И может, кроме Laravel, Express либо Koa, Django кто-то аргументировано посоветует что-то еще (возможно, Golang). Спасибо!
Важна производительность, поэтому и стал вопрос о переходе от PHP/Laravel
Тут вообще нет связи. Узким горлышком в таких проектах является не язык, на котором приложение написано, а база данных. Если медленно выполняются запросы, то хоть на ассемблере бэкенд напиши - быстрее сервер отвечать не будет. Ну может пару миллисекунд выиграете, но на фоне времени выполнения запроса в БД и сетевых издержек это смешные цифры - даже не заметите разницу. А если речь идёт о Django, то это вообще не про производительность, потому что этот фреймворк довольно тяжёлый сам по себе, да и Python - это далеко не самый производительный язык даже среди скриптовых.
Если речь идёт про большие нагрузки, то тоже язык тут не особо при делах, потому что обеспечиваются они масштабированием, кешированием и оптимизацией запросов к БД. Язык приложения тут вообще не при чём - разве что памяти какой-то больше жрёт, какой-то меньше. 200к в сутки - это в среднем всего лишь 2-3 запроса в секунду - то есть вообще ни о чём. Понятно, что распределение посещаемости вряд ли непрерывное равномерное, но тем не менее 200к даже если за один час - это всего лишь 140 запросов в секунду. С такой нагрузкой справится любой современный язык и фреймворк даже без масштабирования, кстати.
И это всё при том, что масштабировать НТТР бэкенд, даже если он вдруг станет узким местом - как два пальца об асфальт, просто тупо докидывается еще один сервак. Или 10. поскольку он не хранит состояние.
Это самая простая проблема с производительностью, которая решается с пол-пинка, даже разработчиком уровня автора вопроса.
А вот чтобы базу масштабировать - тут уже начинаются совсем другие галеры.
На каждом из перечисленных стеков существуют гораздо более нагруженные проекты, чем 200к хитов.
Выбирайте или то что вам уже знакомо, или то, что хотите изучить (если ваш заказчик готов оплачивать ваше саморазвитие).
При масштабировании упор будет в хранение данных (БД) и взаимодействие сервисов. А на чем написаны сами сервисы не так важно, хоть все на разных языках.
Началось в колхозе утро.
Очередной юный мечтатель ковыряет в носу и рассуждает, из чего бы сделать лопату, которой грести денежки.
При том что из активов у него только то, что из носа и наковырял.
Нагрузок у него нет, веб-проекта, в котором будет функционал по типу как в Reddit - нет, пользователей нет, рассылок нет, нагрузки даже в 10 пользователей в сутки нет. Как и объяснения, почему пользователи вдруг повалят именно на этот проект.
Но зато мы уже стррррашно озабочены проблемами с производительностью.
Поэтому мы убьём в 10 раз больше времени, поднимая на каком-нибудь экзотическом языке прототип, чтобы убедиться что этот проект таки никому не нужен.
Александр Гримашевич, ну, среди ITшников очень много токсичных людей. Но что касается трафика, то его реально не так-то просто нагнать. Ну то есть если вы сделаете проект и выложите его в сеть, то не ожидайте, что туда народ будет валить. 1-2 человека в день первые месяцы - это норма. То есть, скорее всего, трафик закупать придётся. Если этого не делать, то посещаемость в любом случае будет ниже обозначенных вами чисел. Т.е. 200к без финансовых вложений в раскрутку вряд ли будут. Даже в 200 раз меньше вряд ли будет, увы.
У меня много личных сайтов с высоким траффом + я работаю с клиентскими сайтами, где посещаемость только с поиска 50к, 200к и даже на одном под 1 миллион в сутки была. И все сайты эти на ВП/Ларавель. Без мощных серверов и Redis они очень тугими были, а тот что под миллион перенесли давно уже на Node JS (но его веду не я). Вот исходя из такого опыта и задал изначально вопрос о выборе технологий для очередного проекта.
Мне нравится это сочетание, "ВП/Ларавель" . Я сначала даже не сообразил, что это за "ВП".
"Я автогонщик, гонялся на многих трассах, и на всех машина либо Запорожец, либо БМВ" :)))
Александр Гримашевич, "тот что под миллион перенесли давно уже на Node JS" - очень часто разработчики, столкнувшись с тормозами в проекте, приходят к "гениальному" решению его переписать. При этом, поскольку меняется в таком случае почти всё, оптимизируется в том числе и база данных. И появляются байки вида "php - тормозной, переписали всё на <название любого языка> - всё стало летать". А то, что в базе данных были индексы добавлены, где надо, запросы на чтение вынесены на отдельную реплику и т.п. - это всё фигня, конечно же, которая ни на что не влияет, ага. По факту это объясняется лишь неопытностью разработчиков, которые не смогли замерить время выполнения частей приложения и диагностировать проблему с производительностью. Любой, даже самый тормознутый код на php, работает очень быстро. Если там нет, конечно, всяких запросов к БД в циклах и прочих непотребностей - но тут не в php дело, т.к. так можно сделать где угодно. Можете сами замерить и убедиться в этом.
Да чем же тебя бедный php не устроил с ларавелем(((
Тебе даже до 10К в сутки расти и расти еще.
Справиться php с такими нагрузками. И не с такими нагрузками справляется php. Многое от сервера зависит, от архитектуры....
Если у тебя ужасная архитекутра тебе ни python не поможет, ни java.