API-проксі (API Gateway як проксі)
Що таке API-проксі
API-проксі (API Gateway) — це проміжний сервер, який отримує API-запити від клієнтів, обробляє їх та перенаправляє до бекенд-сервісів. На відміну від звичайних HTTP-проксі, API Gateway спеціалізується на управлінні API-трафіком: маршрутизації, автентифікації, обмеженні швидкості, трансформації та моніторингу.
API Gateway є ключовим компонентом мікросервісної архітектури та важливим інструментом для безпечного надання API зовнішнім споживачам.
Ролі API-проксі
1. Єдина точка входу
Клієнти звертаються до однієї адреси (api.example.com), а шлюз маршрутизує запити до відповідних мікросервісів:
- api.example.com/users → user-service
- api.example.com/orders → order-service
- api.example.com/products → product-service
2. Автентифікація та авторизація
Шлюз перевіряє API-ключі, JWT-токени та OAuth-облікові дані до того, як запит досягне бекенду. Це розвантажує мікросервіси.
3. Обмеження швидкості (Rate Limiting)
Обмеження кількості запитів від одного клієнта/IP протягом певного періоду часу. Захист від зловживань та перевантаження.
4. Трансформація запитів
Модифікація заголовків, параметрів та тіл запитів/відповідей. Наприклад, перетворення XML на JSON для застарілих сервісів.
5. Кешування
Кешування відповідей API для зменшення навантаження на бекенд та прискорення відповідей.
6. Моніторинг та логування
Збір метрик для кожної API-точки: кількість запитів, затримка, частота помилок.
API Gateway у контексті проксі
Відмінності від звичайного зворотного проксі
| Параметр | Зворотний проксі (Nginx) | API Gateway |
|---|---|---|
| Фокус | HTTP-трафік загального призначення | API-специфічний трафік |
| Маршрутизація | За URL/хостом | За API-шляхом, версією, заголовками |
| Автентифікація | Базова | OAuth, JWT, API-ключі, HMAC |
| Обмеження швидкості | Просте (на IP) | Розширене (на користувача, на тарифний план) |
| Трансформація | Мінімальна | Повна (JSON/XML, протокол) |
| Версіонування | Ні | Маршрутизація /v1/, /v2/ |
| Портал розробника | Ні | Документація, ключі, моніторинг |
API Gateway як проксі для зовнішніх API
Крім того, що API-проксі виступає як фронтенд-шлюз для власних сервісів, його можна використовувати для доступу до зовнішніх API:
- Агрегація — об'єднання запитів до кількох API в один
- Обхід обмежень швидкості — розподіл запитів через пул IP-адрес
- Кешування — зменшення кількості фактичних запитів до API
- Відмовостійкість — перемикання між постачальниками API
Популярні рішення API Gateway
З відкритим вихідним кодом
| Рішення | Мова | Особливості |
|---|---|---|
| Kong | Lua/Go | Найпопулярніший, плагінна архітектура |
| Tyk | Go | Вбудована аналітика та портал |
| KrakenD | Go | Надшвидкий, безстатусний |
| APISIX | Lua | Apache Foundation, динамічна маршрутизація |
| Gravitee | Java | Event-native, на основі політик |
Хмарні
| Рішення | Провайдер | Особливості |
|---|---|---|
| AWS API Gateway | Amazon | Інтеграція з Lambda, повністю керований |
| Azure API Management | Microsoft | Портал розробника, комплексна платформа |
| Google Cloud Endpoints | gRPC-native, інтеграція з Cloud Run | |
| Cloudflare API Shield | Cloudflare | Захист від DDoS, розгортання на периферії |
Патерни використання API-проксі
Композиція API
Шлюз об'єднує відповіді від кількох мікросервісів в одну відповідь для клієнта.
Backend for Frontend (BFF)
Окремі API Gateways для різних клієнтів (мобільний додаток, веб, IoT). Кожен оптимізований під свій тип клієнта.
Версіонування API
Маршрутизація запитів до різних версій бекенду:
- /api/v1/users → старий сервіс
- /api/v2/users → новий сервіс
Автоматичний вимикач (Circuit Breaker)
Автоматичне відключення проблемного бекенду при перевищенні порогу помилок. Запити повертають запасну відповідь.
Тіньове копіювання запитів (Request Shadowing)
Дублювання трафіку на тестовий бекенд для навантажувального тестування без впливу на продакшн.
API-проксі для обходу обмежень
Проксіювання платних API
Створення проксі перед платним API для:
- Додавання кешування (зменшення витрат)
- Моніторингу використання
- Відкату до альтернативного API
- Обмеження швидкості на стороні клієнта
Обхід CORS
API-проксі на вашому домені вирішує проблеми CORS при доступі до зовнішніх API з браузера.
Трансформація протоколів
Перетворення між REST, GraphQL, gRPC, SOAP через API Gateway. Клієнт спілкується за одним протоколом, а бекенд — за іншим.
Безпека API Gateway
Ключові заходи
- TLS termination — HTTPS на точці входу
- Валідація вхідних даних — перевірка параметрів запиту
- IP whitelisting — обмеження доступу за IP
- JWT validation — перевірка токенів
- Обмеження розміру запиту — лімітування розміру запитів
- Захист від SQL-ін'єкцій — фільтрація шкідливих запитів
Інтеграція з WAF
API Gateway часто інтегрується з Web Application Firewall для додаткового захисту від атак.
Висновок
API-проксі та API Gateways — це спеціалізовані типи проксі для управління API-трафіком. Вони забезпечують безпеку, масштабованість та спостережуваність API. У мікросервісній архітектурі API Gateway є незамінним компонентом, а в контексті роботи із зовнішніми API — потужним інструментом для оптимізації та контролю.