Что такое «нода сервера» (server node)
Слово Node по-английски означает «узел». Интуитивно понятно, что узел, в контексте сетей и ИТ, это некая точка в сети, куда сходятся сетевые линии (связи, линки передачи пакетов, запросы приложений и пр.).
Server Node – это сервер, соединённый с другими серверами в некое сообщество, называемое «кластером». В свою очередь, кластер – это область с общими функциями, задачами и пр. Несколько серверов могут быть объединены, например, в кластер вычислений, кластер хранения с файловой системой, кластер базы данных и пр. Причем этот кластер может быть не ограничен пределами одной локальной сети, а простираться на несколько разнесённых площадок.
Например, на рисунке ниже показаны кластеры вычислений и хранения с несколькими нодами серверов.

Рисунок 1. Пример кластеров с нодами серверов.
Есть ещё одно понимание термина Sever Node – это сервер (платформа) Node.js. Это уже интереснее. Рассмотрим её подробнее.
Платформа Node.js.
Node.js — это кроссплатформенная среда с открытым исходным кодом для разработки серверных и сетевых приложений, транслирующая код на языке JavaScript непосредственно в машинный код, который может понимать процессор сервера.
Node.js называется сервером несколько условно, т.к. в нём нет конфигурационных файлов, как, например, в Apache. Однако, Node.js взаимодействует с различными устройствами ввода-вывода при помощи кодов JavaScript через свой интерфейс прикладного программирования (API), написанный на C++. Кроме того, он может подключать различные библиотеки, написанные на других языках, при помощи вызовов непосредственно из кода JavaScript.
Такая модель была создана для снижения «накладных расходов» программного кода (по сравнению с подходом «один поток на каждое соединение») и для повышения быстродействия.
Веб-приложения, написанные с использованием клиент-серверной архитектуры, работают примерно так: клиент запрашивает нужный ресурс у сервера, и сервер отправляет ресурс в ответ. После этого сервер прерывает соединение, поскольку каждый запрос занимает ресурсы сервера (память, процессорное время и т.д.) и их нужно освободить для следующего запроса. Для того чтобы начать обрабатывать каждый следующий запрос от клиента, сервер должен завершить обработку предыдущего. Пока сервер обрабатывает текущий запрос, вновь поступившие запросы ждут, как клиенты в очереди, поскольку обычный сервер может обрабатывать только один запрос за раз.
То есть, при использовании традиционных серверов каждый запрос выполняется в отдельном потоке, но сам поток блокируется до завершения операции. Все это время поток находится в состоянии ожидания и блокирует занятые им ресурсы.
В Node.js использован принцип обработки очередей, знакомый нам по многофункциональным центрам (МФЦ). На входе клиент берёт талончик и смотрит на экран, где отображается очередь к различным окнам обслуживания. Когда высвечивается его номер, клиент идёт с талончиком к означенному окну и излагает свой запрос.
Точно так же, когда сервер Node.js получает новый запрос, он создаёт отдельный поток для его обработки в Node.js. Таким образом, сервер может обрабатывать несколько запросов одновременно, но в одном потоке.

Рисунок 2. Принцип работы сервера Node.js.
Node.js использует модель, ориентированную на события и архитектуру неблокирующего ввода-вывода. Платформа Node.js обладает рядом преимуществ относительно традиционных серверных инструментов. Среди таких достоинств – скорость, асинхронность и др.
Модель Node.js более эффективно использует ресурсы и существенно экономит время выполнения запроса. Любая операция ввода-вывода не блокирует работу системы в целом, и позволяет системе выполнять и другие действий во время обработки очередного запроса.
Применение Node.js
Node.js, чаще всего, выполняет роль веб-сервера. Однако, есть возможность разрабатывать на Node.js различные приложения для пользовательских компьютеров, а также программировать микроконтроллеры для управления различными периферийными устройствами и техпроцессами.
Приложения Node.js могут выполняться в средах Mac OS X, Windows и Linux. Node.js отлично подходит для масштабируемых проектов с высокими нагрузками. С его помощью также можно создавать синхронные кроссплатформенные решения — например, когда сообщение с телефона, отображается и в веб-версии мобильного приложения, и в десктопной.
Node.js используется, главным образом, для создания веб-серверов, однако может применяться и в других сценариях. Например, для программирования различных «умных» гаджетов – фитнес-трекеров, навигаторов, датчиков и сенсоров, других устройств «Интернета вещей». С помощью Node.js можно создавать быстрые сетевые приложения, которые могут хорошо масштабироваться. Эта платформа выгодна при разработке различных стартапов: интернет-магазинов, систем управления контентом CMS, лендинг-страниц и т.п.
Неблокирующая модель Node.js идеально подходит для разработки приложений с использованием данных в реальном времени, например, чат-ботов. Node.js используют такие компании как eBay, Uber, Netflix.
Если разработчик уже использует JavaScript и знает, архитектуру «клиент-червер», то он легко освоит Node.js. Можно найти соответствующие описания в свободном доступе, кроме того, можно пройти специальные курсы. Эти знания Node.js позволят реализовывать все части приложения конечного приложения, а не заниматься разработкой отдельных фрагментов большого проекта под руководством менеджера проекта.
Почему Node.js так популярен
Node.js пользуется популярностью у разработчиков программного обеспечения за счёт следующих факторов:
- Асинхронность на основе событий. Все API-интерфейсы библиотеки Node.js являются асинхронными, то есть они не блокируют загрузку других запросов. Поэтому сервер Node.js никогда не ожидает возврата данных от API. После вызова он переходит к следующему API, а механизм уведомлений Events помогает получить ответ от предыдущего вызова;
- Скорость выполнения приложений. Код JavaScript в среде Node.js может работать в два раза быстрее, чем написанный на компилируемых языках, таких как C или Java, и в несколько раз быстрее интерпретируемых языков, например, Python или Ruby. Причиной этого является неблокирующая архитектура;
- Однопоточность в сочетании с масштабируемостью. Механизм Event помогает серверу реагировать на запросы без блокирования очередного запроса, образом и обеспечивает высокую масштабируемость, в отличие от традиционных серверов, с ограниченным числом потоков обработки запросов. Однопоточная программа Node.js может обслуживать гораздо большее количество запросов, чем традиционные серверы, такие как Apache HTTP Server.
- Библиотеки и экосистема. Благодаря простоте и удобству Node.js его экосистема быстро расширяется. Имеется более полумиллиона пакетов открытого кода, которые любой разработчик Node.js может свободно использовать;
- Отсутствие буферизации. Приложения в Node.js не буферизуют данные, а выводят их по частям в едином потоке;
- Простота. Платформа Node.js очень легка в освоении и использовании, что особенно это заметно в сравнении с некоторыми другими серверными платформами.
В заключение можно добавить, что разработчики на Node.js в настоящий момент пользуются большим спросом и без работы обычно не сидят. На рекрутинговом сайте hh.ru объявляемая для них заработная плата часто превышает 100 тыс. рублей. Причем, это не только в Москве, но и в других регионах нашей страны.