Компьютерные сети

API Gateway

В микросервисной архитектуре клиент не должен знать о десятках внутренних сервисов. API Gateway - единая дверь: один URL, единая аутентификация, консистентный API. Это обязательный компонент production microservices.

  • **Netflix Zuul/Zuul2**: обрабатывает миллиарды запросов в день, dynamic routing, canary releases
  • **Stripe API**: единый endpoint для платежей, все cross-cutting concerns на gateway уровне
  • **AWS API Gateway + Lambda**: serverless архитектура для стартапов без ops overhead

Предварительные знания

  • Reverse Proxy
  • Rate Limiting

API Gateway Pattern

**API Gateway** - единая точка входа для всех клиентских запросов. Вместо прямых вызовов к микросервисам, клиент общается только с gateway, который маршрутизирует, аутентифицирует и трансформирует запросы.

**API Gateway ≠ Load Balancer**: LB распределяет нагрузку. Gateway добавляет бизнес-логику: auth, transformation, aggregation. Gateway обычно использует LB под капотом.

Паттерн Backend For Frontend (BFF): разные gateways для разных клиентов. Mobile BFF оптимизирует payload, Web BFF возвращает больше данных. Каждый BFF знает особенности своего клиента.

Главное преимущество API Gateway для микросервисной архитектуры?

Kong Gateway

**Kong** - популярный open-source API gateway на базе Nginx/OpenResty. Расширяется плагинами: auth, rate limiting, logging, transformation. Конфигурируется через Admin API.

**Kong плагины**: 100+ официальных и community плагинов. Rate Limiting, JWT/OAuth, CORS, Request Transformer, Prometheus, Zipkin tracing. Можно писать свои на Lua или Go.

Kong DB-less mode: конфигурация в YAML файле, без PostgreSQL/Cassandra. Проще деплой, идеально для Kubernetes (ConfigMap). Kong Ingress Controller интегрируется с k8s native.

Когда использовать Kong вместо простого Nginx reverse proxy?

AWS API Gateway

**AWS API Gateway** - managed service для создания REST, HTTP и WebSocket APIs. Интеграция с Lambda, EC2, любым HTTP endpoint. Pay-per-request модель, автоматическое масштабирование.

**Lambda + API Gateway** - serverless архитектура. Нет серверов для управления, платите только за использование. Cold start ~100-500ms для Node.js, можно уменьшить через provisioned concurrency.

Когда выбрать AWS HTTP API вместо REST API?

Gateway Authentication

API Gateway - идеальное место для **централизованной аутентификации**. Вместо проверки токенов в каждом сервисе, gateway валидирует и передаёт downstream verified user info.

**Security**: сервисы доверяют headers только из internal network. External запросы напрямую к сервисам должны быть заблокированы (network policies в k8s, security groups в AWS).

Почему authentication на gateway лучше чем в каждом сервисе?

Request/Response Transformation

Gateway может **трансформировать** запросы и ответы: изменять headers, преобразовывать body, агрегировать ответы от нескольких сервисов в один. Это позволяет адаптировать internal API для разных клиентов.

**API Composition** (aggregation) - gateway собирает данные от нескольких сервисов. Клиенту нужен один запрос вместо пяти. Особенно важно для mobile с медленной сетью.

Трансформация помогает версионированию API: gateway преобразует v1 запросы в формат нового сервиса, поддерживая backwards compatibility. Старые клиенты продолжают работать.

API Gateway - это просто умный reverse proxy

API Gateway - architectural pattern для microservices: единая точка входа, инкапсуляция, cross-cutting concerns (auth, rate limit, transform), часто с service discovery интеграцией

Reverse proxy только маршрутизирует. Gateway добавляет application-level логику: проверку JWT, rate limiting per user, request transformation, API versioning. Это другой уровень абстракции.

Главный use case для API aggregation на gateway?

Итоги

  • **API Gateway**: единая точка входа, инкапсуляция внутренней архитектуры
  • **Cross-cutting concerns**: auth, rate limiting, logging централизованы
  • **Kong**: open-source, plugin-based, self-hosted или Kong Cloud
  • **AWS API Gateway**: managed service, pay-per-request, Lambda интеграция
  • **Transformation**: адаптация API для разных клиентов, aggregation

Связанные темы

API Gateway - центральный компонент в современной архитектуре:

  • Reverse Proxy — Gateway строится поверх reverse proxy концепции
  • Rate Limiting — Централизованный rate limiting на gateway
  • Authentication Flow — JWT/OAuth валидация на gateway

Вопросы для размышления

  • Когда API Gateway становится bottleneck и как это решить?
  • Как реализовать canary releases через gateway?
  • Gateway per team (BFF) vs central gateway - trade-offs?

Связанные уроки

  • sd-10-microservices
API Gateway

0

1

Войти