Pull to refresh

Node.js — руководство по убеждению начальства

Reading time 5 min
Views 24K
Original author: Felix Geisendörfer
От переводчика: Я только начинаю присматриваться к Node.js, и, обнаружив это руководство, сильно пожалел, что оно не попалось мне на глаза раньше. Надеюсь, что этот перевод поможет многим разобраться, что же такое Node, и с чем его едят.

У вас уже чешутся руки попробовать Node.js и пора начинать обрабатывать начальство? Не торопитесь! Для некоторых компаний, которые я консультировал на предмет того, подходит ли им Node.js, правильный ответ был — «Нет!»

Это руководство — набор основанных на моём личном опыте советов для тех, кто хочет узнать, имеет ли смысл применять Node у себя в компании, и, если да, то как убедить в этом начальство.


Плохие варианты


Тяжелые вычисления

Хоть я и люблю Node.js, но есть несколько случаев, когда его применение лишено смысла. Самый очевидный из них — приложения с длительными сложными вычислениями и небольшим количеством операций ввода-вывода. Так что если вы собираетесь писать перекодировщик видео, искусственный интеллект или ещё какую цифродробилку, пожалуйста, не используйте Node.js. Это в принципе возможно, но лучше писать на C/C++.

С другой стороны, node.js позволяет легко писать дополнения на C++, так что вы, конечно, можете использовать его как скриптовой движок поверх ваших сверхсекретных алгоритмов.

Простые приложения CRUD/HTML

Хотя Node.js может со временем стать классным инструментом для любых типов веб-приложений, пока не стоит надеяться, что он даст вам больше преимуществ по сравнению с PHP, Ruby или Python. Да, ваше приложение может получиться немного лучше масштабируемым, но то, что оно сможет справляться с большим потоком трафика, не значит, что этот поток вдруг увеличится только от того, что вы использовали Node.

Несмотря на то, что сейчас уже появляются неплохие фреймворки для Node, пока ещё и близко нет ничего сравнимого с Rails, CakePHP или Django. Если ваше приложение в основном занимается заполнением шаблонов HTML данными из базы, Node.js пока не даст вам каких-либо ощутимых преимуществ.

NoSQL + Node.js + Всякая модная фигня

Если архитектура вашего будущего приложения напоминает сборник рецептов из серии «Кухни народов NoSQL», выдохните, сделайте паузу и прочтите следующий абзац.

Да, Redis, CouchDB, Cassandra, MongoDB, Riak и так далее выглядят очень аппетитно. Примерно, как то яблочко, которым соблазнилась Ева. Вы уже рискуете, используя Node.js, и вам не стоит усугублять этот риск еще одной новой технологией, в которой вы, скорее всего, пока не разобрались до конца.

Конечно, можно найти много аргументов в пользу документ-ориентированных БД, но если ваше приложение должно приносить прибыль, надежность использования проверенных технологий (Postgres или MySQL) должна быть для вас важнее возможности поднять своё гиковское ЧСВ и похвастаться перед друзьями.

Хорошие варианты


JSON API

Node.js блестяще справляется с построением легковесных REST / JSON интерфейсов.
Неблокирующй ввод-вывод и JavaScript делают Node отличным вариантом для написания обертки вокруг базы данных или веб-сервиса, которая общается с клиентом в формате JSON.

Одностраничные приложения

Если вы пишете сложное AJAX-приложение вроде Gmail, Node тоже очень хорош. Для современных веб-приложений, делающих большую часть работы в браузере, отлично подходит сервер, который может одновременно обрабатывать тысячи запросов и имеет низкое время отклика. Возможность повторного использования одного и того же кода, например валидации, на сервере и клиенте — тоже плюс.

Использование инструментов командной строки

Пока Node.js еще очень молод, есть соблазн написать специально для него всё, что только может понадобиться. Но может оказаться гораздо более выгодным использовать огромный выбор уже существующих инструментов командной строки. Node способен порождать тысячи дочерних процессов и работать с их выходными потоками данных, что может дать серьёзные преимущества тем, кто не хочет изобретать велосипеды.

Потоковая обработка данных

Традиционные стеки веб-приложений обычно трактуют запросы и ответы HTTP, как атомарные события. Но на самом деле это потоки, и приложения Node.js могут воспользоваться этим фактом. Отличные примеры — обработка файлов во время загрузки на сервер или передача данных между разными слоями.

Системы мягкого реального времени

Ещё одна отличная черта Node.js — легкость, с которой можно создавать системы мягкого реального времени. Я имею в виду штуки вроде Твиттера, чатов, приема ставок на спортивные события или интерфейсов к IM-протоколам.

Только будьте осторожны! Это JavaScript, и время отклика может сильно варьировать, если вдруг вклинится сборщик мусора (который, увы, блокирует поток выполнения JavaScript). Так что не пытайтесь построить на Node систему жесткого реального времени с гарантированным временем отклика. Для этого гораздо лучше подойдет Erlang.

Как же убедить начальство?


Теперь, если вы уверены, что Node.js вам подходит, пора убедить начальство попробовать.

Сделайте прототип

Лучший способ начать наступление — предложить за недельку набросать прототип системы или её части. Обычно начальник легко соглашается, так как это его ни к чему не обязывает.

А когда у вас на руках будет работающий прототип и результаты тестов — это уже гораздо более убедительные аргументы в пользу Node.js.

Где взять разработчиков?

Что бы вы ни думали о JavaScript, он становится универсальным единым языком веб-программирования. Один или несколько интерпретаторов JavaScript есть практически на каждом компьютере в составе браузеров и любой веб-разработчик почти наверняка хоть немного знает JavaScript.

Это означает огромный выбор программистов на любой вкус и цвет на рынке труда, да и у вас в компании скорее всего уже есть нужные кадры. Так что если вы работаете в растущей компании, которая активно нанимает, это ещё один аргумент в пользу Node.js.

Активное сообщество

Сообщество Node.js сейчас растет с бешеной скоростью, привлекая лучших разработчиков в отрасли. Это значит, что растет и экосистема Node, всё легче получить поддержку бесплатно или на коммерческой основе.

Производительность

Этот аргумент лучше не форсировать, но если производительность критична для вашего приложения, то Node.js есть что предложить. Лежащий в основе Node движок V8 от Google уже очень быстр, и становится всё лучше с каждым днем, ведь сейчас все пять крупных игроков на рынке браузеров (Mozilla, Google, Apple, Microsoft и Opera) стремятся создать движок JavaScript круче, чем у конкурентов.

Если учесть еще и неблокирующую модель ввода-вывода Node, то вам придется постараться, чтобы написать тормознутое приложение. Большинство приложений Node легко справляются с тысячами одновременных соединений на вполне обычном железе.

Поддержка крупных корпораций

Один из рисков при использовании молодого Open Source проекта — отсутствие долгосрочных гарантий от авторов. Но это не проблема для Node.js. Joyent наняла Райана Дала (Ryan Dahl) и еще нескольких ключевых разработчиков Node и спонсирует проект, так что сейчас будущее Node.js гарантирует серьезная экономическая сила.

Во многом благодаря этому, такие компании, как Yahoo! и HP уже решились использовать Node в своих новых продуктах, так что вы можете придать своему боссу дополнительной уверенности, приводя их в пример.

Как убедить клиента?


Если вы фрилансер или работаете в небольшой компании, делающей сайты на заказ, то действовать, убеждая клиентов, надо немного по-другому. Ведь они очень сильно зависят от ваших решений и надеются на то, что вы будете поддерживать написанное вами приложение.

Мой совет — будьте более консервативными, лучше проверьте дважды, действительно ли Node им подходит. Если да, то убедитесь, что у вас достаточно времени и ресурсов для поддержки. Новые версии Node выходят часто, и стоит учесть необходимость обновляться каждые 3-6 месяцев.

Твиттер и блог автра.
Tags:
Hubs:
+52
Comments 102
Comments Comments 102

Articles