api gateway

API Gateway — это сервер, выступающий единственной точкой входа для клиентских запросов к backend-сервисам. Он принимает запросы, выполняет кросс-функциональные задачи — аутентификацию, маршрутизацию, rate limiting, кеширование, логирование — и перенаправляет запросы к соответствующим upstream-сервисам. API Gateway скрывает сложность внутренней архитектуры за единым публичным интерфейсом.

Зачем нужен API Gateway

В монолитном приложении клиент общается с одним сервером. В микросервисной архитектуре за каждой функцией стоит отдельный сервис. Без API Gateway клиент должен знать адреса всех сервисов, а каждый сервис должен самостоятельно реализовывать аутентификацию, логирование и другие сквозные функции.

API Gateway централизует эти задачи: клиент общается с одним адресом, а «умная» маршрутизация направляет запрос нужному сервису. Изменения во внутренней архитектуре — добавление сервиса, смена адреса — прозрачны для клиентов.

Функции API Gateway

Маршрутизация

Запрос GET /users/{id} направляется в User Service, POST /orders — в Order Service, /products — в Catalog Service. Маршрутизация по URL, методу HTTP, заголовкам, версии API.

Аутентификация и авторизация

Gateway проверяет JWT-токен или API-ключ до передачи запроса сервису. Сервисы не занимаются аутентификацией — доверяют gateway. Downstream-сервис получает запрос с заголовком X-User-Id, добавленным gateway.

Rate Limiting

Ограничение числа запросов от клиента: 100 запросов в минуту на пользователя, 1000 на IP. Защита от злоупотреблений и DDoS. Алгоритмы: token bucket, sliding window, leaky bucket.

Трансформация запросов и ответов

Gateway может изменять заголовки, трансформировать тело запроса, агрегировать ответы нескольких сервисов в один (API composition/aggregation).

Кеширование

Популярные GET-запросы кешируются на уровне gateway, разгружая backend.

Логирование и трассировка

Каждый запрос логируется с correlation ID. Это единственное место, через которое проходит весь трафик — идеальная точка для сбора метрик и трейсов.

Популярные API Gateway решения

Kong — популярный open source API Gateway на базе Nginx + Lua. Плагины для аутентификации, rate limiting, трансформаций. Enterprise-версия с GUI.

AWS API Gateway — managed сервис Amazon. Глубокая интеграция с Lambda, IAM, Cognito. REST API, HTTP API, WebSocket API.

Traefik — cloud-native reverse proxy с нативной интеграцией с Kubernetes (Ingress Controller). Автоматическое обнаружение сервисов.

Nginx / Nginx Plus — классический выбор для API Gateway с расширенными возможностями в Plus-версии.

Envoy — высокопроизводительный L7 прокси, ядро Service Mesh (Istio), применяется как API Gateway в Kubernetes.

Apollo Federation — специализированный API Gateway для GraphQL: объединяет несколько GraphQL-схем в единый граф.

API Gateway и BFF (Backend for Frontend)

BFF — специализированный API Gateway для конкретного клиента. Вместо одного универсального gateway — отдельный для мобильного приложения, отдельный для веб. Каждый BFF оптимизирован под потребности своего клиента: возвращает именно те поля и в том формате, которые нужны фронтенду, без лишних данных.

Риски и ограничения

API Gateway — потенциальная единая точка отказа. Требует высокой доступности: несколько инстансов, балансировка. Может стать узким местом по производительности при неправильной конфигурации. Сложные трансформации и логика в gateway затрудняют отладку и поддержку — gateway должен быть «тупым», логика — в сервисах.

Частые вопросы

  • API Gateway и Load Balancer — одно и то же?

    Нет. Load Balancer работает на L4 (TCP) или L7 (HTTP) и распределяет трафик между инстансами одного сервиса. API Gateway работает на L7 и маршрутизирует запросы между разными сервисами по семантике API: URL, методу, заголовкам. API Gateway часто использует Load Balancer внутри.

  • Нужен ли API Gateway для монолита?

    Обычно нет — монолит имеет один адрес. Но даже для монолита gateway полезен для SSL-терминации, rate limiting, аутентификации вне приложения, версионирования API. При переходе к микросервисам gateway становится необходимостью.

  • Что такое service mesh и чем он отличается от API Gateway?

    API Gateway — точка входа для внешних клиентов. Service mesh (Istio, Linkerd) управляет коммуникацией между внутренними сервисами: mTLS, observability, retries, circuit breaking. Оба часто используются вместе: gateway на границе, mesh — внутри.

Не хватает деталей?

Напишите, что уточнить по теме «api gateway» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).

Поделиться