СЕРВЕРНЫЙ JAVASCRIPT - ПРЕИМУЩЕСТВА
И НЕДОСТАТКИ NODE.JS Чепегин И.Д. Email: Chepegin690@scientifictext.ru
Чепегин Илья Дмитриевич - студент, кафедра мультимедийных сетей и услуг связи, Московский технический университет связи и информатики, г. Москва
Аннотация: данная статья посвящена программной платформе Node.js. Рассмотрена его история появления, текущее положение в ряду систем, реализующий аналогичную функциональность, и приведены известные проекты, которые были на нем реализованы. Приведено описание функций веб-сервера, принципа работы с ним, и языка JavaScript, на котором происходит разработка подобных сервисов. Описаны его основные возможности и характерные особенности платформы. Выявлены преимущества и недостатки, а также перспектива платформы в будущем.
Ключевые слова: JavaScript, Node.js, веб-сервер.
Chepegin Ilya Dmitrievich - Student, DEPARTMENT OF MULTIMEDIA NETWORKS AND COMMUNICATION SERVICES, MOSCOW TECHNICAL UNIVERSITY OF COMMUNICATIONS AND INFORMATICS, MOSCOW
Abstract: this article focuses on the Node.js software platform. Its history of appearance, current position in a number of systems implementing similar functionality are considered, and known projects that have been implemented on it are given. It describes the functions of the web server, how to work with it, and the JavaScript language in which such services are developed. Its main features and features of the platform are described. The advantages and disadvantages, as well as the future perspective of the platform, have been identified. Keywords: JavaScript, Node.js, Web server.
Веб-сервер - это сервер, который принимает НТТР-запросы со стороны клиента, которые обычно являются веб-браузерами, и выдает НТТР-ответ, который в основном отправляется вместе с НТМЬ-страницей, изображением, файлом или другими данными. Основным принципом работы с веб-сервером, который изображен на Рисунке 1, является множественное использование функции запрос-ответ.
SERVER-SIDE JAVASCRIPT - ADVANTAGES AND DISADVANTAGES OF NODE.JS
Chepegin I.D.
УДК 004.428
1 звено
2 звено
запрос
Клиент
Сервер
ответ
Рис. 1. Принцип работы клиента с веб-сервером
Также к функциям веб-сервера можно добавить:
1. Автоматизацию работы веб-страниц;
2. Ведение журнала, в котором хранятся все или последние обращения пользователей к ресурсу;
3. Поддержка динамической генерации страниц;
4. Аутентификация и авторизация пользователей.
Node.js - это программная платформа, которая основана на движке V8, который разработан компанией Google и транслирующий JavaScript в машинный код. История платформы начинается с 1996 года, когда компания Netscape пытались создать серверный JavaScript, но в то время технология не получила достойного распространения. В 2009 году, после двух лет экспериментов над серверными веб-компонентами, разработчик Райан Даль разработал Node.js, и в ходе экспериментов установил, что традиционная модель параллелизма на основе потоков не подходит для дальнейшей разработки и вместо нее использовал событийно-ориентированные системы. Эта модель была выбрана из-за ее простоты, низких расходов, если сравнивать с идеологией, что один поток на каждое соединение, и быстродействия. Цель Райана Даль для создания Node.js была проста - предложить более простой способ построения масштабируемых сетевых серверов.
Текущее положение Node.js среди веб-серверных платформ можно увидеть в отчете StackOverflow за 2019 год [1], где можно увидеть, что платформа за 2019 год заработала первое место и набрала очень большое количество сторонников, а значит сообщество Node.js только расширяется, что стимулирует платформу развиваться очень быстро и перегонять уже технологии, которые использовались много лет.
Благодаря развитию платформы, на ней уже разработали свой веб-сервер такие крупные компании [2] как:
1. Walmart - сеть розничной торговли.
2. Netflix - самая крупная мировая платформа потокового видео фильмов и сериалов.
3. LinkedIn - социальная сеть.
4. Uber - приложения для поиска, вызова и оплаты такси.
5. Paypal - крупнейшая дебетовая электронная платежная система.
6. eBay - Интернет-аукцион и интернет магазин.
Разработка веб-серверов на платформе Node.js происходит на языке JavaScript, который до относительно недавнего времени считался языком только браузерным для создания динамичности страницы и запросов на веб-сервера. Одной из причин, почему Node.js стал так интересен разработчикам, является идея использования одного языка как на стороне клиента, так и сервера, что является одним из преимуществ Node.js.
Другие преимущества являются не менее существенными, так как в первую очередь, при появлении новой платформы, сообщество рассматривает фактор скорости, который и вызвал такую волну популярности и широкого использования. Как ранее было подмечено, веб-приложения следуют клиент-серверной архитектуре, то есть клиент запрашивает ресурс у сервера, а сервер отправляет ресурс в ответ клиенту. Значит, каждый запрос клиента на сервер должен быть обработан, на что тратятся память, процессорное время и т.д., из-за чего для обработки каждого последующего запроса клиента требуется дождаться завершения обработки предыдущего запроса. Node.js такую проблему путем модели thread-per-request, в которой для каждого запроса создается отдельный поток для его обработки. Под потоком в данном контексте понимаются время и ресурсы, которые CPU выделяет на выполнение инструкций. К другим преимуществам относят:
1. Легкость и скорость написания кода
2. Легковесность
3. NPM - огромная пакетная экосистема, которая позволяет скачивать библиотеки
Но преимущества могут оказывать и обратный эффект, например, преимущество гибкости и скорости развития порождает постоянное слежение за обновлениями, которые могут быть недостаточно протестированными. Также из недостатков стоит выделить сильную зависимость от пакетного менеджера NPM, в которой удаление зависимости может привести в нерабочее состояние уже разработанные сервисы.
Говоря о перспективе Node.js по сравнению с другими языками и технологиями, требуется отметить, что неизвестно, заменит ли Node.js все остальные технологии, так как язык и платформу принято выбирать по конкретную задачу и проблемы, которые требуется решить. Node.js показывает хорошую скорость и низкий порог входа, но существуют недостатки, которые покрываются решением другой платформы. Сейчас же мы можем утверждать, что платформа уже доросла до состояния взрослого инструмента и продолжает развиваться, и которую можно рекомендовать в качестве серверного решения для больших долгоживущих и нагруженных проектов.
Список литературы /References
1. Developer Survey Results 2019 // https://insights.stackoverflow.com/ [Электронный ресурс]. Режим доступа: https://insights.stackoverflow.com/survey/2019/ (дата обращения: 04.06.2020).
2. 10 самых популярных сайтов и мобильных приложений, созданных с помощью Node.js // https://techrocks.ru/ [Электронный ресурс]. Режим доступа: https://techrocks.ru/2018/05/20/web-sites-and-apps-built-with-node-js/ (дата обращения: 04.06.2020).