Узнайте, что, почему и когда использовать Node.js от разработчиков node.js для вашего проекта и как получить максимальную выгоду. Примеры того, когда Node JS — отличный/посредственный/плохой вариант внутри.
Для чего используется Node.js?
Выбор стека технологий для вашего продукта — сложный процесс, который часто определяет будущий успех всей операции.
На этапе выбора технологического стека следует учитывать множество аспектов функциональности будущего веб-приложения.
Для проектов веб-приложений в большинстве случаев это будет оценка построения вашего стека вокруг JavaScript и инструментов, которые его используют. Скорее всего, для серверной разработки вы выберете платформу под названием Node.js.
Более половины опрошенных ежегодных разработчиков в опросе Stack Overflow используют технологию Node.js.
Первоначально Райан Даль, создатель Node.js, работал над созданием сайтов в реальном времени с возможностями push-уведомлений. Изобретенная им технология позволяет нам иметь веб-приложения с подключением в режиме реального времени, что обеспечивает свободный обмен данными. До Node.js клиент всегда должен был начинать общение.
В последнее время разработка веб-приложений сильно изменилась. Работающий на сервере и в браузере JavaScript, который раньше казался чем-то нереальным, теперь — повседневная реальность.
Мы поговорим о том, что такое Node.js и почему он так популярен, в следующей главе.
Далее в этой статье мы опишем ситуации, когда рекомендуется использовать Node JS. Мы также порассуждаем о том, когда предпочтительнее обратиться к другим вариантам серверной части вашего веб-приложения.
Что такое Node JS?
Вы, наверное, знаете, что такое Node.js. Пожалуйста, не будьте слишком строги к нам за то, что мы описываем это тем, кто этого не делает. Node.js — это среда выполнения JS с открытым исходным кодом для Chrome V8 — платформа для разработки веб-приложений.
Он идеально подходит для заполненных данными приложений реального времени, которые работают на нескольких устройствах распространения.
Если вам нужно быстрое масштабируемое сетевое приложение, которое прошло бы все возможные стресс-тесты для работы с большим количеством подключений с высокой пропускной способностью, выполняемых одновременно (т. е. масштабируемое решение), Node.js должен вам подойти.
Это сработало для Netflix, LinkedIn, Uber… Да, мы выбрали несколько случайных названий крупных компаний, но это не значит, что Node.js не будет лучшим выбором для вашего собственного проекта. Если у вас уже есть идеи на этот счет, поделитесь ими с Arisweb Studio здесь.
Среди неоспоримых плюсов Node.js — сравнительно простая кривая обучения для разработчиков, надежность и масштабируемость. Node.js — это проект с открытым исходным кодом, поэтому у него большое количество участников. Вы найдете множество повторно используемых ресурсов.
При этом вы не забываете, что Node.js — это платформа, идеально подходящая для выполнения конкретных задач, а также бывают ситуации, когда вы предпочитаете обращаться к другим инструментам.
Об этом мы поговорим в следующих частях этой статьи.
Примеры, когда Node JS — лучший вариант
Чаты/чатботы
Чаты будут наиболее распространенными приложениями реального времени, к которым одновременно будут обращаться несколько пользователей. Веб-приложение чата покажет вам все преимущества использования Node.js для его разработки и обработки.
Разработка чата была бы идеальным вариантом для обучения новичка в веб-дизайне. Какими бы простыми ни были чаты, для их создания разработчик должен использовать множество парадигм, которые работают в других приложениях Node.js.
А почему Node js? Ну, по сути, современные чаты — это многопользовательские приложения с интенсивным трафиком, интенсивным обменом данными, они работают на многих типах устройств, а чат-боты сейчас настолько популярны, что их используют практически все другие веб-приложения.
Входы в очередь
Node Js позволяет откладывать записи в базу данных и обрабатывать их позже. Вы будете действовать так, как если бы они были успешными, и это позволило бы сократить очередь ввода данных.
Базы данных становятся узким местом, если вы получаете огромное количество одновременных данных. Node js легко обрабатывает множество подключений, но доступ к базе данных часто блокирует операцию.
Если вы можете предсказать действия вашего клиента в веб-приложении, это будет способствовать решению проблемы.
Система будет поддерживать высокую способность реагирования в условиях интенсивного движения. Это может пригодиться, если клиенту не потребуется надежное подтверждение записи данных.
Операции, которые не нужно отображать мгновенно (счетчик «лайков» в LinkedIn, Facebook), где приемлема окончательная согласованность, служат примером этой операции.
Когда данные попадают в очереди в инфраструктуре кеширования (RabbitMQ, Apache Kafka) — они обрабатываются процессом пакетной записи базы данных. Node JS определенно не единственный вариант — того же можно добиться и с некоторыми другими языками, но пропускная способность будет не такой высокой, как у Node.js.
Такая высокая пропускная способность позволяет использовать node js для работы с обычными входными данными в очереди.
Потоковая передача данных
Веб-платформы, отличные от Node.js, часто рассматривают HTTP-запросы и ответы как изолированные события, в то время как все они служат потоками. Node.js видит данные, поступающие через поток, и обрабатывает их в режиме онлайн. Это делается для кодирования аудио- и видеофайлов в реальном времени и прокси между источниками данных.
Кодирование в реальном времени было введено еще в 2010 году, и основная функция заключается в кодировании видео во время его загрузки на сервер. Это приводит к увеличению скорости кодирования в 150 раз и даже больше.
Node.js был платформой для Netflix, Amazon Video, Hulu и многих других лидеров потоковых приложений по всему миру. Причиной этого являются скорость, легкое кодирование и загрузка.
В настоящее время многие интернет-магазины приветствуют на своих веб-сайтах видео, закодированные Node.
Серверная часть для социальных сетей/одностраничных приложений
LinkedIn и Medium построены на Node.js. Опять же, быстрая маршрутизация и безопасная аутентификация наряду с потрясающей масштабируемостью обеспечивают столь необходимое сочетание факторов для современных лидеров среди социальных сетей.
Но на самом деле это не обязательно должен быть сложный многомиллионный проект для использования Node.js. Node.js — очень универсальная платформа, поэтому ее можно использовать для создания динамического веб-сайта или почтового сервиса, даже если это одностраничное приложение.
Node.js идеально подходит для асинхронной обработки потоков данных на серверной части, что делает его вариантом номер один при разработке одностраничных приложений.
Прокси
Прокси-сервер на стороне сервера должен обрабатывать большое количество одновременных подключений, а не делать их забитыми и заблокированными. Актуально проксирование сервисов с разным временем отклика, а также сбор данных с разных входов.
Когда вы спросите себя, для чего используется Node.js — все вышеперечисленное будет в списке.
Вместо использования выделенных прокси-сервисов использование Node.js позволит вам найти решение для локальной разработки в инфраструктуре без прокси. Вы можете легко создать сервер разработки Node.js для прокси-запросов API.
Система мониторинга приложений
Мы продолжаем перечислять варианты использования Node.js с системами, используемыми для отслеживания и визуализации взаимодействия посетителей в режиме реального времени.
Все больше и больше компаний тратят огромные суммы денег на изучение поведения клиентов. Что может быть лучше в этих вопросах, чем система глубокой аналитики в реальном времени?
Статистика в реальном времени была введена давно, и теперь вы можете пойти дальше, создавая и используя новые каналы связи (или просто наблюдения) между вами и посетителями.
Двусторонние сокеты в режиме реального времени на нашей любимой платформе позволят вам сделать все это.
Панель мониторинга системы
Цикл событий Node.js позволяет создавать веб-панели мониторинга, которые дадут вам всю информацию о статусах сервисов, поступающую асинхронно. Это было бы полезно для страниц мониторинга сервисов.
Статусы внутренних и публичных служб можно было сообщать в режиме реального времени с помощью WebSockets. Это гораздо более удобный вариант, чем Java-апплеты. Открытый веб-стек, разработанный на Node.js, — это как раз то, что вам нужно для работы панели мониторинга системы.
Преимущества Node.js (примеры внутри) для успешных проектов
Вы включаете Node.js в свой технический стек, если вам нужно масштабируемое веб-приложение в реальном времени. Есть реальные примеры того, как Node.js заменял другие платформы для крупных корпораций и приносил с собой потрясающие преимущества.
PayPal был бы отличным примером.
Их технический блог содержит массу полезной информации, и те, кто читал его давно, знают, что Node.js не была изначальной платформой, которая использовалась для платежной системы.
Джефф Харрел, старший директор PayPal, признает, что с появлением Node.js специальности инженеров были унифицированы. Платформа позволяет быстрее реагировать на потребности клиентов.
Немного статистики: Node.js и приложение Java. Вдвое больше команда для последнего, первый имеет всего две трети строк кода и построен с меньшим количеством файлов на 40 процентов.
Они удвоили свои усилия по разработке Node.js, закрыв приложения Java. По словам Харрела, этому были рады даже разработчики Java. У нас есть обоснованные сомнения в этом, но все аргументы идут к JavaScript.
eBay, одна из крупнейших торговых площадок в мире, также была разработана с помощью Node.js.
Их основными проблемами были масштабируемость и огромные объемы трафика.
По словам Сентила Падманабхана, главного веб-инженера eBay, главная задача заключалась в том, чтобы сделать приложение максимально доступным в реальном времени. Вторая важная задача заключалась в организации специальных сервисов eBay, отображающих информацию на странице.
Это привело к быстрому и простому развертыванию установки.
Конечно, мы не можем не включить Netflix в этот список технологических гигантов.
Частично он обязан своим успехом тому факту, что их приложение чрезвычайно легкое и простое. Оно также очень легко настраивается, и пользователи довольны уровнем обслуживания, которое они получают за свои 11+ долларов.
В то же время их инфраструктура действительно сложна, и им нужны инструменты, чтобы максимально использовать и использовать весь их потенциал.
Все уровни доступа к данным в Netflix были перенесены на Node.js еще в 2017 году. Так же, как и весь пользовательский интерфейс за четыре года до этого.
Время запуска нового веб-приложения сократилось на 70 %, они оптимизировали процессы разработки и сократили время создания своих новых функций.
Все это со слов Ким Тротт, директора по разработке пользовательского интерфейса.
—
Короче говоря, если вам нужно масштабируемое веб-приложение в реальном времени, Node, js должен быть вашим выбором.
В следующих главах мы обсудим менее совершенные ситуации.
Пример опции Node JS «ОК»
Серверные веб-приложения с базой данных отношений на бэкэнде
Не заблуждайтесь, Express.js (инфраструктура Node.js) может использоваться для создания веб-приложений на стороне сервера. Если вы создаете проект на Javascript от начала до конца (приложение не может выполнять какие-либо вычисления с интенсивным использованием ЦП), это упростит проект.
При этом скорость отклика Node.js определенно будет заблокирована вычислениями, интенсивно использующими ЦП.
Резьбовая платформа была бы лучшим выбором. Масштабируйте вычисления, если вы решили выбрать исходный путь, но… Другие среды (Rails, Django, ASP.Net MVC) помогут вам выполнять реляционные операции, и вам будет разумнее выбрать любую из них вместо Node. .js.
Примеры, когда Node JS — не лучший вариант
Тяжелая обработка на стороне сервера
Node.js — не лучший выбор для выполнения тяжелых вычислений на стороне сервера. Его управляемая событиями модель и модель неблокирующего узла ввода-вывода блокируют входящие запросы. Эти потоки заняты вычислением чисел.
Node.js является однопоточным и использует только одно ядро ЦП. Это означает, что все операции с интенсивным использованием ЦП сводят на нет все преимущества пропускной способности, которые предлагает Node, что приводит нас к…
Вычисления с интенсивным использованием ЦП
Минималистичный подход Node.js позволяет платформе устанавливать рекорды производительности. В то же время Node.js остается однопоточным (извините, но приходится повторять это снова и снова), а тяжелые вычисления ЦП будут блокировать сервер, помогающий выполнять обработку.
Заключение — когда использовать Node JS
Мы попытались обобщить наши мысли о шаблонах использования Node js, которые мы наблюдаем в отрасли. Специализированные команды Arisweb Studio использовали платформу во многих наших внутренних и внешних проектах.
Наши консультанты по Node.js будут рады обсудить, подходит ли технология для вашего проекта. Кто знает, может быть, это станет вариантами использования Node JS для обоих наших портфолио.