Какой язык/фреймворк выбрать для разработки бэкэнда для SPA приложения?

Добрый день!
Начал разрабатывать SPA веб-приложение (назначение: CRM/рабочее место), на фронтенде планирую использовать VueJS + TypeScript.
Бэкэнд должен являться REST сервером, в дальнейшем возможен переход на Web Socket подключение. Не могу определиться с выбором языка (технологии) на базе которого его разрабатывать.
На данный момент рассматриваю NodeJS или Java.

В NodeJS привлекает его простота, единый язык с фронтендом. К минусам - отсутствие жесткой типизации и структур ООП (частично решается ES6 и/или TypeScript), производительность (пишут что ниже чем в Java, если не использовать биндинги к C/C++ библиотекам).

В Java привлекает привычное ООП, строгая типизация. Но на данный момент пока не ясно как реализовывать REST/WS сервер в плане многопоточности. Нужно ли самому реализовывать многопоточность и управлять потоками и распределять нагрузку? Реализована ли многопоточность под капотом в REST и подобных фреймворках так, что мне не нужно будет об этом заботиться? Или вообще здесь можно и нужно использовать асинхронный подход как в NodeJS?

Хотелось бы услышать за и против относительно nodejs и java для решения данной задачи, а также хорошие практики.
  • Вопрос задан
  • 882 просмотра
Пригласить эксперта
Ответы на вопрос 7
tsepen
@tsepen
Фронтенд разработчик React & Redux
Если на фронте Typescript, имеет смысл на беке использовать тоже самое, это удобно и надежно. Удобно работать с сокетами, производительность хорошая, ресурсов потребляет меньше чем java, разрабатывать быстрее, можно использовать серверный рендеринг для vue, в общем выбор очевиден.
Ответ написан
1) Java - серьезно? Ты потратишь недели две, чтобы тупо разобраться в том, как поднять хеллоу-ворд на условном Spring. Еще столько же, чтобы настроить мавин, подключить БД и создать первую пачку классов. Все это будет сопровождаться анальной болью и сомнениями в том, а не тупой ли ты часом, и зачем тебе это все надо.

P.s. Java - это самая кровавая технология, что есть. За неё платят хорошие деньги именно за то, что там можно все настроить, и ты будешь все настраивать.

2) Хочешь что-то простое и удобное, возьми

  • Django + Django Rest/ (если могешь в питон)

  • Symfony(само поднятие и всякие автоваринги не очень то просто, но рест пишется приятно)/

  • .net Core (там на удивление рест-приложения поднимаются очень просто).
Ответ написан
mtix
@mtix
Front-end developer
Задавался тоже вопросом производительности java, nodejs. Хороший, раскрытый ответ нашел здесь.
Ответ написан
MDiMaI666
@MDiMaI666
Талантливый программист
посмотри тут если надо готовое решение vue + laravel + websoket на ноде
https://github.com/iluminar/goodwork/blob/master/r...
там еще куча полезных кусков. я поднимал но так и не воспользовался. мне не понравилось.
а еще у меня есть решение, которое мы с вами можем обсудить. если интересно
напишите на почту mdimai666@mail.ru
Ответ написан
@plutoject
Год назад стояла примерно таже задача, где взаимодействие с API должно быть по WS. Выбор пал на NodeJS, но из-за того, что NodeJS однопоточный в случае броадкаста или синхронизации ws клиентов вам придеться или пилить самому балалайку на Redis для pub/sub или использовать уже готовые решения по типу ClusterWS, Socket.io которые предоставляют синхронизацию ws по разным нодам.
Конечно не только по этим причинам, а и в том числе из-за статической типизации и серьезном приросте в перфомансе и снижении памяти, был осуществлён переход на Go. Тотже gobwas/ws в раз 50 будет эффективней socket.io если не больше, опять же все зависит от вашего приложения, и кол-ва нагрузки, если у вас будет 10к коннектов то я думаю смысла от Go в плане перфоманса не будет, но с точки зрения перфоманса я бы советовал вам выбрать Go, и более того не слушайте людей, которые пишут об одном и том же контексте когда ты пишешь фронт и бек на js, если вы пишите отдельное клиентское приложение, а оно так и выходит вы особо от этого не выигрываете ибо по хорошему этим клиентом и сервером должны заниматься разные люди, я это говорю как человек который писал на стеке Nodejs (Typescript) + VueJS (Typescript) и при смене на Go, разницы в плане контекста я особо не заметил. С другой стороны вы не рассматриваете go поэтому скорее советую выбрать java, хотя кто-то верно сказал порог вхождения и скорость написания там будет пониже чем на nodejs. И да производительность nodejs на порядок ниже Java, и C++ биндингами вы это неполечите, да и само наличие этих биндингов говорит о том, что быстрее решение на nodejs должно быть не на самом nodejs, поэтому мой вам совет выбирайте на основе этих факторов: Nodejs вы выиграете в скорости написания так или иначе, но проиграете по перфомансу и удобству в плане статической типизации (тайпскрипт чекает только на этапе компиляции), если вы в будущем планируете разрабатывать свое приложение не один то вам тут тоже будет выиграшь т.к человека который знает js на порядок дешевеле и проще найти. Хотите перфоманс, больше безопасности берите Java/Go
Ответ написан
@aidarkhanov
Fullstack Web Developer
Это зависит от проекта. Для такого проекта я бы использовал NodeJS(Express) и в дальнейшем подключить socket.io
Ответ написан
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы