👩💻 NodeJS: ловушка простоты, особенно в эпоху ИИ
Прочитал
статью Матео Коллины, и она просто в точку описала мои мысли последних лет по поводу ноды
Мало кто знает, но я писал на Express, NestJS, работал фулл-стеком и был в сообществе Тимура Шемсединова, где мы разбирали, как правильно писать код на ноде
Так вот, NodeJS – это как ребенок, которого легко родить, но чертовски сложно вырастить. Звучит странно, но это так 🤷♂️
В чем подвох?
Прикол ноды в том, что любой фронтендер может за выходные научиться писать бэкенд. JavaScript знакомый, экосистема та же, npm под рукой – красота! Пару туториалов – и ты уже лепишь API.
НО ☝️
На ноде легко написать приложение, которое круто работает на твоем ноуте, но разваливается в продакшене
И почти все проекты на ноде это просто ужас в плане качества кода
А потом пришел ИИ и всё стало еще хуже
Серьезно, с появлением ChatGPT и его друзей всё только усугубилось. Теперь вообще без знаний можно запилить приложение. Попросил ИИшку – готово!
И вот представь: человек, который даже не знает, что такое замыкание в JS, клепает с помощью ИИ целый проект. Всё работает отлично! ...на его MacBook с локальным сервером и тремя запросами в минуту.
А потом приходит боевой трафик и начинаются проблемы со:
- Сборкой мусора (а что это вообще такое?)
- Утечками памяти (магия какая-то)
- Асинхронными операциями (почему мои промисы умирают?)
- Блокировкой event loop (что за зверь такой?)
И вот сидит человек в 3 часа ночи 👨💻, гуглит "почему node js приложение падает под нагрузкой" и не понимает, что для решения его проблем нужно годами изучать Computer Science, понимать как работает V8, как устроены сетевые стеки в ОС и прочие скучные штуки, на которые никто не обращает внимания, когда пишет свой первый "hello world" на Express
Что я решил для себя
Когда в сообществе у Тимура обсуждали эту проблему, многие склонялись к тому, что для серьезных бэкенд-задач лучше смотреть в сторону Go, Java, C#. Там эти проблемы решены на уровне фреймворков, и уровень инженерной культуры выше
Серьезно, на других платформах многие "грабли" Node.js просто не существуют. Там изначально думали про высокие нагрузки, многопоточность и прочие штуки.
В итоге многие советуют: хочешь использовать Node.js – делай его "прослойкой" между фронтом и настоящим бэкендом на "взрослом" языке
Выводы:
Если вы планируете делать что-то большое и с нагрузкой, у вас есть три пути:
1. Найти реально крутых Node.js-разработчиков (и их прям мало)
2. Самому вложить месяцы в изучение CS и внутренностей V8/NodeJS
3. Забить и взять технологию, которая для бэкенда подходит лучше