api-gateway · сравнение с рынком
По скорости api-gateway не уступает Traefik, Nginx, Envoy и Kong — и при этом единственный из пяти понимает JWT, роли и права доступа прямо из коробки: без единого плагина и без отдельного auth-сервиса.
Сравнение с: Traefik v3.1 · Nginx 1.27 · Envoy v1.31 · Kong 3.7 Методология: одинаковый бэкенд, 2 vCPU / 768MB на гейтвей, wrk
| 10% разрыв с самым быстрым из пяти (Nginx) | 0 плагинов нужно для JWT, RBAC и прав доступа | 22–99% теряют конкуренты, добавляя такую же авторизацию |
Производительность
На уровне лидеров рынка
Пять гейтвеев, один и тот же бэкенд, одинаковый бюджет на CPU и память. Каждый — на дефолтных настройках из коробки: без плагинов, без ускорителей. api-gateway держится в одной лиге с Traefik, Envoy и Kong, а от самого быстрого — Nginx — отстаёт всего на 10%.
Ресурсы
Разумный расход памяти
Пиковая резидентная память в тесте на 300 соединений; потолок для всех одинаковый — 768MB. api-gateway занимает меньше памяти, чем Traefik и Kong, при том что оба уступают ему в возможностях аутентификации.
Возможности
Всё нужное — из коробки
Traefik, Nginx, Envoy и Kong — гейтвеи общего назначения: авторизацию в них приходится добавлять плагинами или внешними сервисами. api-gateway изначально задумывался как гейтвей с авторизацией внутри: JWT, роли, права доступа и аудит — без единого плагина.
| Возможность | api-gateway | Traefik | Nginx | Envoy | Kong |
|---|---|---|---|---|---|
| JWT-аутентификация | ✓ Встроено | • ForwardAuth/плагин | — нужен njs/Lua | • фильтр jwt_authn | ✓ плагин jwt |
| RBAC из claims токена | ✓ Встроено | — | — | • фильтр RBAC/OPA | • плагины ACL/OPA |
| Кэш permission-сервиса | ✓ Встроено, TTL-кэш | — | — | — | — |
| Аудит / webhook-события | ✓ NATS + HTTP, встроено | — | — | • access-log/tap | • через плагины |
| Rate limiting по роутам | ✓ | ✓ | • limit_req | ✓ | ✓ плагин |
| Circuit breaker | ✓ простой | ✓ | — | ✓ продвинутый | • плагин |
| Авто-TLS (ACME) | ✓ Встроено | ✓ Встроено | — | — | — |
| Service discovery | ✓ Docker/Podman по labels | ✓ ключевая фича | • ingress-контроллер | ✓ xDS/Consul/K8s | • ingress-контроллер |
| SPA / раздача статики | ✓ Встроено | • через file provider | ✓ основная сила | — | — |
| Экосистема плагинов | — | • небольшая | • на этапе компиляции | • WASM/Lua | ✓ большая |
✓ — есть из коробки · • — частично / через плагин или внешний сервис · — — нет
Service discovery
Находит сервисы сам — как Traefik, но по своим labels
Раньше api-gateway знал о бэкендах только из статического конфига. Теперь он подключается к Docker/Podman через socket, находит контейнеры по labels и сам строит из них таргеты и роуты. Сервис описывает себя сам:
labels:
gateway.enable: "true"
gateway.name: "blog"
gateway.port: "8085"
gateway.router.api.path_prefix: "/api/blog"
gateway.router.api.auth.required: "false"Обнаруженное дополняет статический конфиг — при конфликте приоритет у статики, поэтому миграция сервисов постепенная. На один сервис можно описать несколько роутов (gateway.router.<id>.*) с ролями и rate-limit, а изменения подхватываются по событиям контейнеров, без перезапуска гейтвея.
Почему это важно
Встроенное против пристроенного
У подхода «просто добавь плагин» есть своя цена. Мы измерили её двумя способами: у единственного конкурента с нативным аналогом (плагин jwt у Kong) и на схеме, к которой в реальности пришлось бы прибегнуть всем остальным, — отдельный сервис, который проверяет авторизацию на каждый запрос.
Тест на 300 соединений, на каждый запрос — валидный HS256-токен. Наш валидатор работает на том же проходе, на котором гейтвей и так разбирает заголовки для роутинга, а у Kong плагин jwt — это отдельная Lua-фаза на каждый запрос. Auth-сервис в этом тесте не делает ничего, кроме ответа «да», — мы замерили именно цену лишнего синхронного запроса по сети. Это структурный налог, который платит любой гейтвей без встроенной авторизации.
Итог
Зачем выбирать api-gateway
api-gateway работает на той же скорости, что и признанные лидеры рынка, — и делает это без единого плагина для авторизации, ролей и прав доступа. Это не выбор между скоростью и функциональностью: можно получить и то и другое.
- Со скоростью всё в порядке. На одинаковом железе api-gateway отстаёт от Nginx максимум на 10%, а от Traefik — в пределах погрешности измерений. При этом ни Nginx, ни Traefik не знают, что такое JWT-роль или кэш прав доступа.
- Функциональность уже в комплекте. JWT, RBAC, кэш прав и аудиторские вебхуки едут в коробке. Конкурентам то же самое обходится в 22–99% пропускной способности — в зависимости от того, какими обходными путями им приходится это делать.
- Сервисы находят себя сами. Service discovery по labels (Docker/Podman) избавляет от правок конфига при добавлении сервиса — как у Traefik, только авторизация и права доступа остаются внутри гейтвея.
- Один компонент вместо трёх. Не нужен отдельный auth-сервис, не нужен маркетплейс плагинов, не нужно отдельно поддерживать связку гейтвея с permission-сервисом — всё это уже внутри.
Локальный бенчмарк · wrk, Docker, ядра закреплены через cpuset · цифры из одиночных прогонов, подряд на одном и том же железе · полная методология