Компьютерные сети
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
Предварительные знания
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?