Стоит ли ставить крупный сайт на node.js? Не рано ли?

Доброго времени суток, друзья!
Буквально на днях были переговоры с крупными заказчиками, который хотят хай-лоад проект. Сайт будет запущен и раскручен под крылом сайта с посещаемостью более 180 тыс. человек / сутки. Подумали, решили ставить на node.js, хотя с другой стороны есть альтернатива в виде python. Насколько я знаю, нода еще не обкатана, но технология улетная и явно превосходит что php(глупое сравнение), что тот же python. Вроде как очевидно, что, по-идее, нода - это явное будущее серверной разработки, но, честно говоря, не было еще такого проекта у нас, где реально можно было увидеть все преимущества и недостатки ноды. Поэтому возникает вопрос : на сколько осмысленно сейчас ставить крупные проекты на ноду и стоит ли ждать чего-то неприятного? Заранее благодарен!
  • Вопрос задан
  • 4636 просмотров
Решения вопроса 1
@mx2000
Берите python, если не имеете опыта в node.js. Или erlang, раз уж всё равно хотите попробовать что-то новое для себя.

Мы в свое время (2011 год, node.js 0.3.x) намучились с callback-hell в коде, утечками памяти и прочим геммороем вида "есть либа А, делает вроде как, что нам нужно, давайте прикрутим", а через 2 месяца автор либы говорит "я потерял интерес, пилить дальше не буду". И приходилось садиться и самим править чужие баги.

Сейчас, скорее всего ситуация изменилась в лучшую сторону (я не слежу), но какой хайлоад вы хотите получить от однопоточного приложения?) Нода хороша в определенной нише - как full duplex шина данных между клиентами и сервером, если надо, например, чатик а-ля vk.com запилить, или котировки валют обновлять. Работа с базой удобна до определенного момента, вычисления, фильтрация, мэппинг данных - медленные, любой блокирующий вызов (обработка данных) - и 100500 клиентов курят бамбук...
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
нода - это явное будущее серверной разработки

в чем же будущее? Быстрее, да, но ничего нового и уж точно я бы не хотел такого будущего. В python том же есть реализации event loop (тот же twisted, вот например бенчмарк который я просто так кидаю ибо толку от них не так много на самом деле), как и в PHP (ReactPHP) и в Ruby (Cool.io к примеру). Если говорить о высокопроизводительных системах, то стоит уже брать полноценные языки типа go, d, rust и т.д. которые изначально ориентировались на распределенные приложения. Но web приложение обычно не так критично к скорости рантаймов, все можно поправить более быстрым I/O и архитектурными решениями.

Лучше подумайте об архитектуре, о том как реализовать репликацию базы, о том что можно кешировать в памяти, о том как это все будет деплоиться на несколько серверов и т.д. А прирост производительности в каких 20%-30% не сможет вам обеспечить должного RPS на одном сервере (а может и сможет, если нагрузка будет более мение равномерной).
Ответ написан
rumkin
@rumkin
Работал над крупным проектом с охватом аудитории в несколько миллионов пользователей в сутки, использовался nodejs. Полет нормальный, единственный минус – кадры. Нужен сильный nodejs программист в комманде.
На том же express (django для ноды) работают очень нагруженные сайты, например MySpace. Полный список: expressjs.com/applications.html.
Ответ написан
@s1dney
Я бы никогда не стал писать проект на ноде, как вспомогательный инструмент - возможно.
Вопрос даже не в том, что быстро/медленно, а в том, что JS это самый уродливый и неполноценный язык для серверного программирования, который только можно представить.
Ответ написан
begemot_sun
@begemot_sun
Программист в душе.
Простите, а у вас там есть вебсокеты или просто сокеты ? Получить запрос и отдать страничку может любой nginx+php-fpm (python + wsgi что-то там, я просто не вкурсе). Чего вы выиграете от Node.js ?
Cможете лучше реализовать бизнес логику ? я что то сомневаюсь. Поэтому выбирайте из того что лучше знаете, а не из того "потянет оно лучше или нет"
Ответ написан
@betula
Если вам нужен стандартный ORM, миграции, ACL, MVC, тогда однозначно не берите node.js, возмите любую платформу претендующую на enterprise, Django, RoR, Symfony. Если вам нужен полный enterprise, берите Java Spring. Node.js надежна только если вы прекрасно умеете программировать, отлично понимаете все серверные взаимодействия и максимально не будете использовать сторонние библиотеки вроде миграций или ORM и тд, на ней пока еще нужно писать многое самому, либо быть готовым дописать любую из используемых либ, в случае обнаружения ошибки на продакшине. Лично я бы рекомендовал ноду для comet приложений и как прослойку между ZeroMQ/RabbitMQ и внешними сервисами, того же SES, а для обычного веба используйте всё же что-то более традиционное и устоявшееся.
Ответ написан
amerov
@amerov
Web Developer
Попробуйте playframework.
- На нем писать асинхронный код удобней чем в ноде;
- Скалится хорошо;
- Компилируется в байткод JVM;
- Статическая типизация лучше для больших проектов;
Из минусов - время компиляции.
Ответ написан
Ваш ответ на вопрос

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

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