Задать вопрос
@itrushkoff

Перевод бэкенда с PHP на NodeJs?

Суть вопроса: есть бэкенд на PHP, есть бизнес-требование перейти на JS. Основной вопрос заключается в том, какие технологии стека Nodejs сейчас проверены коммерцией? Чтобы не столкнуться через пару дней с тем, что "ой, а сокеты надо самим с нуля писать", "ой, а обработки ошибок как таковой не предусмотрено" и прочее, что почему-то опускается во всяких "Hello world"-курсах на ютубах.

Сам код переписать - проблемы не вызывает. Но, покопавшись в интернете, понял, что бэк на js - тот же зоопарк, что и фронт на js. В связи с чем нужна помощь.

Краткая вводная по бэку

  • Немного HTTP-запросов (токен получить, еще парочка каких-то ручек)
  • Практически все общение через WS-соединение (в связи с чем хотелось бы не пилить свой велосипед для этого)
  • Схема БД относительно простая - примерно 10 таблиц для сущностей и несколько промежуточных
  • Некоторые изменения в БД прилетают не с фронта, а из внешней очереди (пока не знаю, RabbitMQ там или еще что, но в целом суть одна)
  • Ожидаемое количество одновременных подключений - от 20 до 100
  • Фронт отдается статикой html+js
  • Много работы с файловой системой, включая работу с архивами и генерацией PDF



Основные мои хотелки, как человека, который будет это делать

  • Самое важное - есть уже существующая БД, мне как-то надо подцепиться к ней так, чтобы своими миграциями не снести там все. Как фронта, меня это больше всего напрягает
  • Иметь внятные способы/библиотеки для WS-соединений, работы с архивами и генерации PDF без нужды описывать с нуля
  • Иметь вменяемый механизм обработки ошибок и недопустимость полного падения либо возможность само-перезапуска в случае, если совсем "ой"
  • Выбранные технологии должны подходить для коммерческого продукта с реальными пользователями и иметь хотя бы пару-тройку лет проверки временем (больше - лучше). Стильно-модно-молодежно оставим для "Hello World"



Уточняющие вопросы, если суть вопроса покажется размытой

  1. Какой фреймворк имеет меньше костылей в коммерции? Nest, Fastify, Adonis, что-то другое? Повторюсь, вопрос от фронта, который просто "погуглил" - если что-то из перечисленного просто библиотека, прошу прощения.
  2. Как правильно сейчас в коммерции общаются с БД? TypeORM, Prisma, что-то другое? Помню, на pet-проектах с ними работал и был неприятно удивлен отсутствием некоторых очевидных вещей из коробки (не помню точно, но что-то с count там было при операциях то ли создания, то ли обновления). Возможно, вне "курсиков с ютубчика" есть что-то иное, с чем работают в коммерции?
  3. Как правильно при этом подцепиться к уже имеющейся БД, не снеся там ничего? На руках имеются написанные миграции на PHP Laravel
  4. Есть ли смысл использовать bun вместо стандартного nodejs? Или прирост производительности заметен только для тестов "из пробирки"?

  • Вопрос задан
  • 431 просмотр
Подписаться 1 Простой 13 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Skillbox
    Node.js
    2 месяца
    Далее
  • Javascript.ru
    Курс по Node.js
    5 недель
    Далее
Решения вопроса 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
1-2: Фреймворк/ОРМ не принципиальны — накосячить и страдать можно абсолютно с любым или без. Определитесь для начала с вашими конкретными требованиями к нему, а уже потом собираете список подходящих под ваши требования, щупаете каждый и выбираете тот, что вам больше нравится.

3: Описать в ОРМ модели на текущий момент времени и дальше новые миграции делать в рамках данной ОРМ. Ну и проверять на тестовой БД перед деплоем, конечно же.

4: Нет, смысла нет. Сегодня оно есть — завтра нет или ещё что. А ещё есть проблемы совместимости и сама незрелость проекта. Производительность — понятие относительное. Если она вам нужна — для этого есть такие вещи как "Нагрузочные тесты", "Профилирование", "Оптимизация" и прочее. И использовать это надо тогда, когда у вас встанет такой вопрос. Ну или осваивать Go/Rust/C#/C++.

Иметь внятные способы/библиотеки для WS-соединений

uWebSocket — потому что на сях и активно развивается.

возможность само-перезапуска в случае, если совсем "ой"

pm2 или аналоги типа luster.

бэк на js - тот же зоопарк, что и фронт на js. В связи с чем нужна помощь.

Зоопарк сейчас вообще везде. Вот именно для помощи в вашем конкретном случае вам следует нанять опытного NodeJS разработчика как минимум для первичной консультации и регулярного общего контроля хотя бы. А именно: собрать ваши требования и детали по проекту, подготовить как минимум общее ТЗ и уже по результатам консультации принимать какие-то конкретные решения.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Everything_is_bad
Ответ на текущий вопрос в том виде, как он задан - нанять опытного JS-бэкендера. Но всё таки еще раз напомню, сюда надо прибегать с одной конкретной проблемой, а не вываливать весь список проблем.
Ответ написан
@Zerg89
Переход на nodejs без спеца по ним, может стоить всего бизнеса или его части из-за репутацинных потерь в случае факапа с npm пакетами котрые за последние несколько лет показывали много скандалов подделок пакетов и их изменения было
Ответ написан
Ваш ответ на вопрос

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

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