Я уже давно экспериментирую с нодой и разными модулями, но делаю это для интереса и никогда не разрабатывал что-то серьезное для продакшена. Мне интересен опыт людей, использующие ноду как основной инструмент для серверной разработки. Хотя бы в двух словах - какие модули используете, какие бывают проблемы.
В других языках - python, ruby, php есть один или несколько эдаких монолитных веб-фреймворков, на основе которых в большинстве случаев пишут приложения. С нодой в этом плане довольно необычно - у нас есть множество модулей, каждый из которых решает (иногда даже хорошо) свою задачу, но задача связать их воедино ложится на плечи самого разработчика. Есть ли какие-то "правильные практики" или же каждое приложение в каком-то смысле совершенно не похоже на своего соседа, в отличии от приложений, к примеру, на тех же рельсах? Насколько тогда затягивается погружение нового разработчика - ему приходится объяснять архитектуру считай с нуля?
Есть интересный проект - Sailsjs. Что-то вроде "всё в одном". Но он еще довольно сырой, как мне кажется - версия 0.10 со связями между таблицами в бд зарелизилась совсем недавно.
Использую ноду и только ноду уже 2 года для разработки реальных проектов и всю команду нашу тоже подсадил. Проблемы в ноде три: модульный плюрализм (который все хвалят, но это ад), обработка ошибок (не всегда в распечатке стека удается получить файл, строчку и сообщение), и отсутствие централизованной архитектуры приложений. Я сторонник монолитных централизованных систем и тоталитаризма вообще, поэтому мы сделали свой сервер приложений: https://www.npmjs.org/package/impress
Что по вашему есть "монолитный фреймворк"? Типа куча кода без особых зависимостей? В свое время в php это было нормой ибо небыло нормального менеджера пакетов, сейчас там есть composer и все серьезные и претендующие на эту роль фреймворки стараются по возможности не изобретать велосипеды. Хотя эта культура разработки еще только проникает в умы PHP-щников. У Python или Ruby разработчиков с использованием модулей все хорошго. В JS есть свои проблемы на этот счет. То какой-то разработчик забьет на поддержку своего модуля, то не особо парятся по поводу BC... Словом, жизнь боль.
Я использовал node.js только в качестве демона (обработчики очередей на node.js) и как push-сервер (по сути тот же демон обработчик очередей, очередь сообщений связывает ноду и основное приложение). Делать на нем что-то жирное и большое считаю дурной затеей. Маленькие web-сервисы еще можно. но есть свои нюансы при деплое.