Обновлено: 8 апреля 2026 г. в 17:05

API Gateway

средний

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

API Gateway упрощает вход в систему ровно до того момента, пока сам не становится самой тяжёлой точкой маршрутизации, безопасности и политик доступа.

Глава раскладывает gateway на отдельные обязанности: маршрутизацию, аутентификацию, лимиты, преобразование запросов и защиту внутренних сервисов от внешнего хаоса.

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

Центральная точка политик

Через gateway удобно собирать аутентификацию, лимиты и правила доступа, но любая ошибка в этом месте сразу масштабируется на весь внешний трафик.

Критический путь запроса

Gateway стоит на пути каждого внешнего вызова, поэтому его задержка, квоты и преобразование трафика сразу становятся частью пользовательского SLA.

Отказные режимы

Нужно заранее определить, что происходит при сбое Redis, провайдера авторизации, конфигурации или зависимого сервиса: что блокируем, что упрощаем, что пропускаем.

Эксплуатационная цена

Мониторинг, трассировка, поэтапные выкладки и управление конфигурацией на gateway-слое требуют не меньше дисциплины, чем сами микросервисы.

Связанная книга

Building Microservices

Sam Newman подробно разбирает роль шлюза API в микросервисной архитектуре.

Читать обзор

- это не просто единая точка входа для клиентских запросов. Здесь сходятся маршрутизация, безопасность, лимиты запросов, преобразование трафика и контроль над входным потоком. Поэтому удачный шлюз API делает внешний контур системы проще, а неудачный быстро превращается в перегруженную центральную точку.

Зачем нужен шлюз API?

Одна входная точка вместо прямых вызовов во все внутренние сервисы
Централизованная аутентификация, авторизация и применение политик
Лимиты запросов и базовая защита от злоупотреблений и DDoS
Преобразование запросов и ответов для разных клиентов
Агрегация данных из нескольких сервисов в один ответ
Общие точки для мониторинга, журналирования и трассировки запросов

Функциональные требования

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

  • Маршрутизация по пути, например /users → User Service
  • Маршрутизация по заголовкам, например для A/B-экспериментов
  • Маршрутизация по параметрам запроса
  • Взвешенная маршрутизация для канареечных релизов

Безопасность

  • Проверка JWT- и OAuth2-токенов
  • Управление API-ключами
  • Белые и черные списки IP-адресов
  • mTLS для межсервисных вызовов

Лимиты и квоты

  • Лимиты на пользователя и IP-адрес
  • Ограничения для отдельных эндпоинтов
  • Обработка кратковременных всплесков нагрузки
  • Управление квотами и планами доступа

Преобразование трафика

  • Преобразование запросов и ответов
  • Преобразование протоколов, например REST → gRPC
  • Агрегация нескольких ответов в один
  • Проверка схем и базовая валидация контракта

Связанный кейс

Rate Limiter

Подробный разбор алгоритмов ограничения запросов: Token Bucket, Sliding Window.

Читать кейс

Нефункциональные требования

< 10 ms

Дополнительная задержка

P99

100K+ RPS

Пропускная способность

на инстанс

99.99%

Доступность

договорный уровень

Горизонтальное

Масштабирование

без локального состояния

Высокоуровневая архитектура

Нажмите на клиента для симуляции
КЛИЕНТЫ

Мобильное приложение

Веб-клиент

Партнерский API

IoT-устройства

Балансировщик

L4/L7

Шлюз 1

Шлюз 2

Шлюз N

Пользователи

Заказы

Платежи

Внешние сервисы

Redis(Кэш и лимиты)
Конфигурация(etcd / Consul)
Метрики(Prometheus)
Готов

Нажмите на клиента или запустите анимацию, чтобы посмотреть путь запроса

Активный клиент
Активный шлюз
Целевой сервис

Ключевые паттерны

Бэкенд для фронтенда

Отдельный для каждого типа клиента. Так мобильное приложение, веб-клиент и админ-панель получают собственный фасад над одними и теми же внутренними сервисами.

Паттерн Backend for Frontend

Отдельный BFF для каждого клиентского интерфейса

КЛИЕНТЫ

Мобильное приложение

Оптимизировано под телефон

Веб-клиент

Полный пользовательский сценарий

Админ-панель

Расширенные права и обзор

СЛОЙ BFF

Мобильное приложение BFF
Веб-клиент BFF
Админ-панель BFF

МИКРОСЕРВИСЫ

Пользователи
Заказы
Платежи
Склад
Аналитика
Настройки

Композиция API

Шлюз API может собрать данные из нескольких сервисов в один ответ, чтобы клиенту не приходилось делать серию отдельных вызовов.

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

  • Меньше отдельных сетевых походов со стороны клиента
  • Внутренняя структура сервисов скрыта от клиента

Риски:

  • Растёт задержка ответа и цена каждого дополнительного запроса
  • Усложняется обработка частичных ошибок и таймаутов

Связанная книга

Release It!

Michael Nygard подробно описывает размыкатель цепи и другие паттерны устойчивости.

Читать обзор

Размыкатель цепи в шлюзе API

защищает шлюз API от каскадных отказов, когда недоступность одного зависимого сервиса начинает затрагивать весь входной слой.

Circuit Breaker Simulation

Паттерн защиты от каскадных сбоев

CLOSED

Нормальная работа. Запросы проходят к сервису.

Failures: 0/3

State Transitions

CLOSED
failures ≥ 3
OPEN
timeout 5s
HALF-OPEN

Configuration

Failure Threshold3
Reset Timeout5s
Base Failure Rate30%

0

Total Requests

0

Successful

0

Rejected (Fast)

Recent Requests
No requests yet

Fail Fast

Мгновенный отказ вместо ожидания timeout

Cascading Prevention

Защита от распространения сбоев

Self-Healing

Автоматическое восстановление через timeout

Документальный фильм

Inside Envoy: The Proxy for the Future

История Envoy Proxy и его роли рядом со шлюзами API и ingress-архитектурами.

Смотреть фильм

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

Kong

Открытый код, есть коммерческая версия
  • Экосистема плагинов
  • Расширение через Lua и Go
  • Декларативная конфигурация

AWS API Gateway

Управляемый сервис AWS
  • Интеграция с Lambda
  • Поддержка WebSocket
  • Оплата за запрос

Envoy

Открытый код
  • L7-прокси
  • Подходит для service mesh
  • xDS API

NGINX Plus

Коммерческая версия NGINX
  • Высокая производительность
  • Нативные модули
  • Активные health checks

Traefik

Открытый код
  • Автообнаружение сервисов
  • Интеграция с Let's Encrypt
  • Нативная работа с Kubernetes

Apigee (Google)

Корпоративная API-платформа
  • Аналитика
  • Портал для разработчиков
  • Монетизация API

Советы для интервью

1. Начните с причины существования шлюза API

Объясните, какую проблему он решает: единая входная точка, защита внутренних сервисов, централизованные политики и единая обработка клиентского трафика.

2. Покажите, где живёт состояние

Сам шлюз API обычно держат без локального состояния, чтобы его можно было горизонтально масштабировать. Сессии, лимиты и другие общие данные выносят во внешнее хранилище, например в Redis.

3. Разберите отказ как у критичной входной точки

Gateway легко становится центральной точкой отказа, поэтому важно проговорить несколько инстансов, проверки здоровья, мягкую деградацию и понятное поведение по умолчанию при сбоях зависимостей.

4. Не превращайте шлюз API в бизнес-сервис

Он должен заниматься платформенными функциями: маршрутизацией, безопасностью, лимитами и преобразованием трафика. Бизнес-логика внутри шлюза API быстро делает его слишком тяжёлым.

Ключевые выводы

  • Шлюз API даёт единую входную точку, где сходятся маршрутизация, безопасность, лимиты запросов и наблюдаемость.
  • Шлюз API обычно держат без локального состояния, чтобы его можно было масштабировать горизонтально и безопасно обновлять.
  • Бэкенд для фронтенда помогает дать разным клиентам свой фасад без утечки внутренней структуры сервисов.
  • Композиция API уменьшает число клиентских вызовов, но повышает задержку ответа и усложняет обработку ошибок.
  • Размыкатель цепи защищает входной слой от каскадных отказов зависимых сервисов.
  • Чем больше бизнес-логики внутри шлюза API, тем выше риск превратить удобный платформенный слой в новую точку перегрузки.

Для дополнительной практики по паттерну шлюза API полезно посмотреть microservices.io: API Gateway pattern и AWS API Gateway Developer Guide.

Связанные главы

  • System Design Primer (краткий обзор) - даёт базовые принципы декомпозиции, проектирования API и отказоустойчивости, на которых обычно строят gateway-слой.
  • Continuous API Management (short summary) - расширяет тему жизненного цикла API, управления политиками и контрактного контроля вокруг gateway-платформы.
  • Customer-friendly API: удобное API для клиентов - показывает, как строить клиентский фасад над внутренними сервисами и где отдельный слой под клиента действительно оправдан.
  • Rate Limiter - детализирует алгоритмы ограничения трафика и управление квотами, которые часто реализуют на уровне gateway.
  • API Security Patterns - дополняет разговор о безопасности gateway: аутентификация, авторизация, работа с токенами и применение политик доступа.
  • Inter-Service Communication Patterns - показывает, где заканчивается ответственность gateway и начинается внутренняя синхронная или асинхронная коммуникация сервисов.
  • Архитектура сервисной сетки (service mesh) - помогает развести роли внешнего gateway и service mesh внутри микросервисной платформы.
  • Inside Envoy: The Proxy for the Future - даёт практический контекст по Envoy как одной из типовых L7-основ для gateway и ingress-архитектур.
  • Resilience Patterns - усиливает разделы про таймауты, повторные попытки, размыкатель цепи и мягкую деградацию на уровне gateway.
  • Zero Trust - связывает gateway с моделью непрерывной проверки, политиками доступа и минимизацией доверия.
  • Kubernetes Fundamentals - объясняет, как gateway разворачивают в Kubernetes: ingress, автомасштабирование, обнаружение сервисов и поэтапные обновления.
  • Notification System - показывает, как gateway работает перед многоканальной системой доставки и управляет внешним API-трафиком.

Чтобы отмечать прохождение, включи трекинг в Настройки