Field guide · HTTP server

HTTP-сервер Node.js: что важно в production?

Короткий ответ

Начинайте не с throughput, а с явных границ: маршрутизация должна иметь предсказуемый порядок, чтение body - лимит, async handler - timeout и путь ошибки, а остановка - отдельный drain-контракт. swm-core 5.1.2 собирает эти границы в HTTP/WebSocket server layer поверх нативного транспорта.

5.1.2
swm-core
HTTP + WS
один server instance
22 / 24
Node.js

Границы ответа

Это не рейтинг фреймворков. Страница описывает проверяемый контракт @swarmmachina/swm-core 5.1.2 для Node.js 22/24; TLS, reverse proxy и развёртывание остаются внешними границами системы.

Минимальный контракт HTTP-сервера Node.js

ОбластьЯвный контрактПроверка до запуска
МаршрутыПорядок сопоставления, method и fallback не зависят от случайной регистрации handlers.Покройте статические, параметризованные, method mismatch и not-found пути.
Request bodyЛимиты определены для всего сервера и при необходимости для отдельного route.Проверьте oversized body, отсутствующий content-length и остановку чтения после отказа.
ЗаголовкиPrefetch берёт только нужные headers, а transport.trustedProxy отдельно задаёт header и точное число hops.Проверьте отсутствие лишнего чтения, подмену forwarded-заголовков и fallback к upstream peer.
Async-работаTimeout и путь ошибки не оставляют request context или response в неопределённом состоянии.Интеграционный тест покрывает таймаут, отклонённый promise и двойной ответ.
НаблюдаемостьОшибки передаются асинхронно и не превращают delivery path в неограниченную очередь.Проверьте counters, redaction и поведение при медленном обработчике ошибок.
ОстановкаНовые запросы прекращаются, активная работа получает время на drain, затем сокет закрывается.Запустите тест с долгим запросом и зафиксируйте результат до истечения shutdown timeout.

Как выбрать уровень абстракции

  1. 01

    Нужен API-сервис с HTTP и WebSocket

    Начинайте со swm-core

    Routing, контексты, body budgets, timeouts, backpressure и shutdown уже входят в server contract.

  2. 02

    Нужен только совместимый низкоуровневый API

    Смотрите swm-uws

    Тогда application layer самостоятельно владеет routing, admission control и lifecycle.

  3. 03

    Сравниваете производительность

    Сначала зафиксируйте сценарий

    Throughput без payload, concurrency, tail latency и resource limits не отвечает на вопрос о production-годности.

Что не следует обещать по одной цифре

  • Быстрый response на пустом GET не доказывает безопасную обработку body, ошибок или медленных клиентов.
  • TLS, ограничения reverse proxy и admission control должны быть согласованы за пределами Node.js process.
  • Не включайте trustedProxy на публичном listener: ближайший proxy должен перезаписывать или очищать выбранный заголовок.
  • Выборочный prefetch уменьшает работу на запросе, но не заменяет измерение на собственном трафике.

Первичные источники

Заявленные возможности привязаны к фиксированному README и package metadata опубликованного релиза.