Хабрахабр

[Перевод] Нет, вам не нужен Express в вашем REST API на Node.js

image

Об альтернативах Express, где и почему стоит отказаться от Express'a и небольшие замеры в переводе под катом

Express – простой, хорошо документированный, отлично поддерживаемый и наиболее скачиваемый фреймворк для Node.js
Если вы попробуете загуглить как сделать простейший HTTP сервер, то вам, скорей всего, первым запросом выдаст примерно такой код:

const server = require('express')() server.get('/', (req, res) => { res.send('Hello World!')
});
server.listen(3000);

В архитектуре приложений, которые разрабатываются компаниями, REST API и REST сервисы продолжают играть фундаментальную роль, так как HTTP до сих пор используется как основной протокол для коммуникации. Это значит, что программист, который собирается сделать новое приложение или микро-сервис, воспользуется REST API вместо, например, “очереди событий”.

Это влечет в себе то, что число конечных пунктов в разрабатываемом API будет возрастать прямо-пропорционально количеству микро-сервисов и для каждого простого действия будет своя конечная точка. С наступлением популярности использования микро-сервисов, REST API стремится к тому, что бы быть максимально маленьким и выполнять минимальное количество операций. Ред.).
Например, для того чтобы изменить данные пользователя в базе данных, сначала будет вызван метод /user/search для того, чтобы найти ID нужного нам пользователя, а уже затем будет вызван метод /user/update с указанием параметра возвращенного нам до этого ID, вместо того, чтобы выполнить эту операцию(Прим.

Да, REST API должны быть быстрыми, необходимо чтобы они были быстрыми!

Так же, при создании высоконагруженного приложения с использованием REST API, все чаще пользуются паттерном микро-сервисов. Такие приложения строятся на API Gateways. API Gateway – это, по сути, прокси сервер, к которому обращается пользователь, а этот прокси сервер уже обращается к наименее загруженному микро-сервису. Обычно API Gateway также решает небольшие задачи, такие как:

  • Обработка SSL сертификатов
  • Распределение нагрузки
  • Авторизация и аутентификация
  • Кэширование
  • Сжатие контента запроса
  • ...

Express великолепен, насыщен возможностями…, но он так же тяжелый и медленный для использования в небольших целях, как например REST API в микро-сервисы

16. Последняя версия библиотеки(4. 4) зависит от 30 модулей, которые в нее встроены, а в процессе разработки к этим модулем добавляется ещё около 20, что в итоге делает приложение слишком тяжелым для использования как микро-сервиса.

image

График снизу показывает сравнение выполнения простейшего запроса на получение JSON документа. В сравнении с другими библиотеками, Express слишком медленный для использования в минимальных целях, когда не нужно выполнять сложные запросы.

image

image

Замеры, которые показаны на последней картинке, не показывают, что Express медленный в общем, они показывают, что вам нужно удвоить производительность вашего процессора ради того, что бы выполнять простейшие операции… В следствие этого увеличиться месячный платеж за пользования AWS, Google Cloud, MS Azure или другого облачного сервиса, которым вы пользуетесь, а это перейдет в больший и зачастую необоснованный расход средств.

image

В Node.js есть много различных способов реализации REST API, ниже перечислены которые подойдут для вас, в зависимости от задачи:

  • Если вам нужна максимальная производительность, но при этом минимальные затраты, то Express точно не то, что вам нужно. Присмотритесь к Fastify.
  • Если вам нужна небольшая библиотека с минимальным необходимым набором функций, то вам явно стоит взглянут на restify, koa, polka или же restana
Теги
Показать больше

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть