Связанная книга
Building Microservices
Sam Newman подробно описывает роль API Gateway в микросервисной архитектуре.
API Gateway — единая точка входа для всех клиентских запросов в микросервисной архитектуре. Это критически важный компонент, который обеспечивает маршрутизацию, безопасность, трансформацию запросов и множество cross-cutting concerns.
Зачем нужен API Gateway?
Функциональные требования
Routing
- Path-based routing (/users → User Service)
- Header-based routing (A/B testing)
- Query parameter routing
- Weighted routing (canary deployments)
Security
- JWT/OAuth2 validation
- API key management
- IP whitelisting/blacklisting
- mTLS для service-to-service
Rate Limiting
- Per-user/per-IP лимиты
- Per-endpoint throttling
- Burst handling
- Quota management
Transformation
- Request/Response modification
- Protocol translation (REST → gRPC)
- Response aggregation
- Schema validation
Связанный кейс
Rate Limiter
Детальный разбор алгоритмов rate limiting: Token Bucket, Sliding Window.
Нефункциональные требования
< 10ms added
Latency
P99
100K+ RPS
Throughput
на инстанс
99.99%
Availability
SLA
Horizontal
Scalability
stateless
Высокоуровневая архитектура
Mobile App
Web App
Partner API
IoT Devices
Load Balancer
L4/L7
Gateway 1
Gateway 2
Gateway N
User Service
Order Service
Payment Service
External Services
Нажмите на клиента или запустите анимацию для визуализации потока запроса
Ключевые паттерны
Backend for Frontend (BFF)
Отдельный API Gateway для каждого типа клиента, оптимизированный под его потребности.
Backend for Frontend Pattern
Отдельный BFF для каждого типа клиента
КЛИЕНТЫ
Mobile App
Оптимизирован под мобильные
Web App
Полный функционал
Admin Panel
Расширенные права
BFF LAYER
MICROSERVICES
API Composition
Gateway агрегирует данные из нескольких сервисов в один ответ.
Преимущества:
- Уменьшение количества round-trips
- Скрытие внутренней структуры
Риски:
- Увеличение latency
- Сложность обработки ошибок
Связанная книга
Release It!
Michael Nygard — автор паттерна Circuit Breaker и других stability patterns.
Circuit Breaker в Gateway
Защита от каскадных сбоев при недоступности downstream сервисов.
Circuit Breaker Simulation
Паттерн защиты от каскадных сбоев
CLOSED
Нормальная работа. Запросы проходят к сервису.
State Transitions
Configuration
0
Total Requests
0
Successful
0
Rejected (Fast)
Fail Fast
Мгновенный отказ вместо ожидания timeout
Cascading Prevention
Защита от распространения сбоев
Self-Healing
Автоматическое восстановление через timeout
Документальный фильм
Inside Envoy: The Proxy for the Future
История создания Envoy Proxy и его роль в service mesh экосистеме.
Популярные решения
Kong
- Plugins ecosystem
- Lua/Go extensibility
- Declarative config
AWS API Gateway
- Lambda integration
- WebSocket support
- Pay-per-request
Envoy
- L7 proxy
- Service mesh ready
- xDS API
NGINX Plus
- High performance
- Native modules
- Active health checks
Traefik
- Auto-discovery
- Let's Encrypt
- Kubernetes native
Apigee (Google)
- Analytics
- Developer portal
- Monetization
Советы для интервью
1. Начните с "почему"
Объясните, зачем нужен API Gateway: single entry point, security, cross-cutting concerns. Не просто "это стандарт в микросервисах".
2. Обсудите stateless vs stateful
Gateway должен быть stateless для горизонтального масштабирования. Состояние (rate limits, sessions) — в Redis/external store.
3. Рассмотрите single point of failure
Gateway — критический компонент. Обсудите: multiple instances, health checks, graceful degradation, fallback responses.
4. Не делайте Gateway слишком "умным"
Избегайте бизнес-логики в Gateway. Он должен заниматься только cross-cutting concerns: auth, routing, rate limiting.
Ключевые выводы
- API Gateway — единая точка входа, обеспечивающая routing, security и observability
- Должен быть stateless для горизонтального масштабирования (состояние в Redis)
- Backend for Frontend (BFF) — отдельный gateway для каждого типа клиента
- API Composition уменьшает round-trips, но добавляет latency и сложность
- Circuit Breaker защищает от каскадных сбоев downstream сервисов
- Избегайте бизнес-логики в Gateway — только cross-cutting concerns
