MongoDB, Express.js, React.js, Node.js: лучший технологический стек?

Логотип компании
MongoDB, Express.js, React.js, Node.js: лучший технологический стек?
MERN — идеальный набор инструментов для full stack-разработки, каждая часть которого подобрана для эффективной работы с JavaScript.

Что объединяет социальную сеть, приложение для вызова такси, онлайн-кинотеатр, таск-менеджер и маркетплейс с функцией аукциона? В поисках ответа оттолкнитесь от того, что в их интерфейсах обычно очень много интерактивных элементов. А это значит, что...

Заглянув в любое всемирно известное приложение, вы, скорее всего, обнаружите, что оно написано с использованием JavaScript. На его базе возник технологический стек, идеальный для разработки проектов с большим количеством интерактивных элементов интерфейса, параллельными запросами к серверу и высокими нагрузками на сервер. Он называется MERN. В этой статье кратко рассказано о каждом инструменте этого стека и в каких случаях целесообразно выбирать именно его.

Всё начинается с JavaScript

Выше шла речь о приложениях Facebook, Uber, Netflix, Trello, eBay и множестве других. Компьютеры и мобильные устройства их пользователей обмениваются с сервером данными постоянно. Эти данные — как спутники, одновременно вращающиеся вокруг Земли каждый по своей орбите. Но если движение спутников просчитано до мелочей, то движение данных не подчиняется никакому графику.

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

Но все эти приложения написаны с использованием JavaScript. У него две особенности. Во-первых, это качественная реализация технологии Websockets, которая отвечает за работу интерактивных функций: пользователь что-то сделал, информация об этом ушла с устройства на сервер, а сервер прислал изменения. Таким образом, данные передаются по нему в обоих направлениях в виде пакетов, без разрыва соединения и дополнительных HTTP-запросов. Во-вторых, хотя формально этот язык однопоточный, за счет некоторых его особенностей он хорошо подходит для создания приложений, работающих в режиме многопоточности. Это отличает JavaScript от популярных серверных языков C# и Java.

На момент написания этой статьи JavaScript занимает третье место по популярности согласно индексу PYPL (PopularitY of Programming Language).

MongoDB, Express.js, React.js, Node.js: лучший технологический стек?. Рис. 1

Он используется на клиенте и сервере, в десктопных и мобильных приложениях, в «Интернете вещей». И если бы мы искали самый быстрый способ разрабатывать приложения на JavaScript, то технологии для стека выбирали бы по принципу их заточенности под этот язык, чтобы каждый JavaScript-разработчик одинаково хорошо программировал и клиентскую, и серверную части. Но такой способ уже найден.

MERN: a match made in heaven

MERN — идеальный набор инструментов для full-stack-разработки, каждая часть которого подобрана для эффективной работы с JavaScript. Его название сложилось из начальных букв технологий, которые в него входят: MongoDB, Express.js, React.js и Node.js. А третья буква в этой аббревиатуре меняется в зависимости от используемого JavaScript-фреймворка.

В 2013 году первым JS-стеком был MEAN, где место React занимает Angular. В состав MEVN входит, в свою очередь, Vue.js. Мы в ADCI Solutions решили создавать проекты с использованием React, поэтому разберем состав стека MERN.

MongoDB, Express.js, React.js, Node.js: лучший технологический стек?. Рис. 2

MongoDB

Одна из популярных систем управления NoSQL-базами данных, которые лучше подходят для работы с сайтами с часто обновляемым контентом, чем SQL-базы. MongoDB хранит данные в двоичном формате JSON, для которого есть своя аббревиатура — BSON (Binary JavaScript Object Notation). Используется на проектах с непредсказуемым обменом данными, где важны скорость и масштабируемость. Облачные проекты — из их числа.

MongoDB, Express.js, React.js, Node.js: лучший технологический стек?. Рис. 3

Express.js

Фреймворк для серверной разработки, написанный на JavaScript и работающий внутри Node.js. Считается лидером среди фреймворков для серверной разработки. Любим разработчиками за минимализм, высокую производительность, поддержку маршрутизации и http и быструю генерацию приложений. От него оттолкнулись при создании чуть более современных backend-фреймворков Nest.js и Koa.js.

MongoDB, Express.js, React.js, Node.js: лучший технологический стек?. Рис. 4

React.js

JavaScript-библиотека от Facebook для разработки пользовательского интерфейса с большим количеством интерактивных элементов. React создает виртуальную структуру страницы (Virtual DOM), меняет в ней только те элементы, на состояние которых влияет действие пользователя, и накладывает изменения на реальную структуру страницы.

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

MongoDB, Express.js, React.js, Node.js: лучший технологический стек?. Рис. 5

Node.js

Среда для выполнения JavaScript-кода, только не в браузере, а на сервере, разработанная на JavaScript-движке V8 от Google. Это главный компонент стека, потому что на нем отлично реализована технология Websockets, о которой мы говорили выше, и именно он делает возможным параллельное (или многопоточное) выполнение задач. Чтобы сервер обрабатывал множество параллельных запросов, Node.js создает цикл событий (event loop), внутри которого выделяется время на обработку каждого запроса, а если запроса нет, то время и не выделяется. Так однопоточный JavaScript становится условно многопоточным, а приложение выдерживает большие нагрузки и впоследствии легко масштабируется.

Где используется MERN

Если проект в перспективе ждет масштабирование, ваш выбор — MERN. К таким проектам точно относятся сервисы для видеоконференций, облачные текстовые редакторы, мессенджеры, онлайн-игры, eCommerce-сайты и прочие, с которыми одновременно, в режиме «здесь и сейчас»‎, работает множество пользователей. В числе популярных приложений на стеке MERN — Facebook, Instagram, WhatsApp, DropBox и Netflix.

Преимущества MERN

Все инструменты — опенсорсные и с многолетней историей, что гарантирует большое сообщество разработчиков:

  • JavaScript используется и для клиентской, и для серверной разработки. Остается найти full-stack-разработчика или обучить новым скилам front-end-разработчика.

  • Если разработчик имеет опыт работы с одним инструментом, то благодаря JavaScript-базе быстро изучит и все остальные.

  • Проекты легко масштабируются, не в последнюю очередь благодаря Node.js.

  • Технологии в составе стека легко интегрируются с облачными платформами.

Заключение

Выбор технологического стека для разработки продукта зависит от назначения продукта и его перспектив. Несколько тысяч пользователей — это уже много, но важно помнить, что однажды можно снискать глобальный успех, и к этому лучше быть готовым. Стек на базе MongoDB, Express.js, React.js и Node.js — основа для амбициозных идей, которые легко масштабируются благодаря веб-серверу на Node.js и экономно разрабатываются благодаря популярности и доступности языка JavaScript.

Опубликовано 16.06.2023

Похожие статьи