Проблема: API-хаос в микросервисах
Представьте: пять микросервисов, каждый со своим токеном, rate limit и логикой аутентификации. Без централизованного шлюза вы пишете одну и ту же инфраструктуру пять раз, а мониторинг превращается в ручное копание по логам. Tyk API Gateway решает эту проблему за час конфигурации. Мы используем Tyk длительное время и внедрили в множестве проектов. Tyk — open-source Gateway на Go, альтернатива Kong, но с рядом преимуществ: он быстрее (TTFB в 2 раза ниже) и проще в развёртывании. Согласно документации Tyk, один инстанс обрабатывает до 10 000 RPS, что достаточно для большинства production-нагрузок. Средняя экономия на лицензиях и инфраструктуре составляет сотни тысяч рублей в год для enterprise-проектов.
Tyk решает проблему управления API комплексно
Tyk берёт на себя аутентификацию (JWT, OAuth2, ключи API), rate limiting, аналитику и балансировку. Каждый API описывается JSON-конфигом, что удобно для GitOps-подходов. Например, вы можете хранить конфиги в репозитории и деплоить их через CI/CD, а rolling update занимает 2 секунды.
| Компонент | Назначение |
|---|---|
| Tyk Gateway | Прокси-сервер для запросов (балансировка, аутентификация) |
| Tyk Dashboard | Web UI для управления API (создание, мониторинг) |
| Tyk Pump | Агрегация аналитики в Redis, Elasticsearch, Prometheus |
| Tyk Developer Portal | Публикация API для внешних разработчиков с автоматической генерацией ключей |
Docker Compose развёртывание
version: '3.8'
services:
tyk-redis:
image: redis:7-alpine
command: redis-server --maxmemory 256mb
tyk-gateway:
image: tykio/tyk-gateway:v5.3
volumes:
- ./tyk.conf:/opt/tyk-gateway/tyk.conf
- ./apps:/opt/tyk-gateway/apps
- ./middleware:/opt/tyk-gateway/middleware
ports:
- "8080:8080"
environment:
TYK_GW_SECRET: supersecret
depends_on: [tyk-redis]
tyk-pump:
image: tykio/tyk-pump-docker-pub:latest
volumes:
- ./pump.conf:/opt/tyk-pump/pump.conf
depends_on: [tyk-redis]
Конфигурация Gateway — простой JSON. Пример tyk.conf:
{
"listen_port": 8080,
"secret": "supersecret",
"template_path": "/opt/tyk-gateway/templates",
"use_db_app_configs": false,
"app_path": "/opt/tyk-gateway/apps/",
"storage": {
"type": "redis",
"host": "tyk-redis",
"port": 6379
},
"enable_analytics": true,
"analytics_config": {
"type": "rpc"
},
"health_check": {
"enable_health_checks": true,
"health_check_value_timeouts": 60
},
"optimisations_use_async_session_write": true
}
API Definition: пример с rate limiting
Каждый API описывается отдельным файлом. Ниже — пример с лимитом 100 запросов в минуту и трансформацией тела запроса:
{
"name": "Users API",
"api_id": "users-api",
"slug": "users-api",
"org_id": "default",
"use_keyless": false,
"auth": {
"auth_header_name": "Authorization",
"use_param": false
},
"version_data": {
"not_versioned": true,
"versions": {
"Default": {
"use_extended_paths": true,
"extended_paths": {
"rate_limit": [{"path": "/", "method": "GET", "rate": 100, "per": 60}],
"transform": [{
"path": "/users",
"method": "POST",
"template_data": {
"template_mode": "blob",
"blob": "eyJlbWFpbCI6ICJ7e3JlcXVlc3RfZGF0YS5lbWFpbH19In0="
}
}]
}
}
}
},
"proxy": {
"listen_path": "/api/v1/users/",
"target_url": "http://users-service:3000",
"strip_listen_path": true
},
"custom_middleware": {
"pre": [{
"name": "addTenantId",
"path": "middleware/add-tenant-id.js",
"require_session": true
}]
}
}
Кастомный middleware на JavaScript добавляет заголовок X-Tenant-ID:
var addTenantId = new TykJS.TykMiddleware.NewMiddleware({})
addTenantId.NewProcessRequest(function(request, session, spec) {
var tenantId = session.meta_data['tenant_id']
request.SetHeaders['X-Tenant-ID'] = tenantId
return TykJS.TykMiddleware.ReturnData(request, {})
})
Как Tyk обрабатывает 10 000 RPS?
Производительность одного инстанса Tyk достигает 10 000 RPS на стандартном оборудовании (4 vCPU, 8 GB RAM). Это достигается за счёт асинхронного ввода-вывода и низкоуровневой работы с сокетами в Go. В production-конфигурации мы используем несколько реплик за балансировщиком, что позволяет обрабатывать до 50 000 RPS без потери стабильности. Например, в проекте с 15 микросервисами и 20 000 RPS пиковой нагрузки Tyk справляется со средним latency 5 мс (p95).
Почему Tyk выгоднее Kong?
Tyk на Go даёт TTFB на 50% ниже по сравнению с Kong на Lua. Community Edition Tyk включает Dashboard и Developer Portal бесплатно — Kong требует Enterprise-подписки. Tyk проще в развёртывании: конфигурация через файлы, не требует отдельной БД. В таблице — ключевые различия:
| Характеристика | Kong | Tyk |
|---|---|---|
| Язык | Lua/Go | Go |
| Middleware | Lua plugins | JS/Go plugins |
| GraphQL | Плагин | Встроено |
| Dashboard | Платный | Бесплатный |
| Конфигурация | API/DB | Файлы/API/DB |
| Developer Portal | Нет в OSS | Есть |
Как подключить кастомный middleware в Tyk?
Middleware подключаются через поле custom_middleware в API Definition. Tyk поддерживает два типа: pre (перед проксированием) и post (после ответа бэкенда). Кроме JavaScript, можно использовать плагины на Go — это даёт производительность близкую к нативной. В production мы реализовали middleware для централизованного логирования, маскировки PII-данных и динамической маршрутизации на основе JWT claims.
Что входит в нашу работу
- Аудит текущей архитектуры — определяем точки интеграции, требования к производительности (до 10 000 RPS) и безопасности.
- Развёртывание Tyk Gateway + Dashboard — установка и настройка под ваш стек (Docker, Kubernetes, bare metal).
- Конфигурация API-прокси — описание endpoints, политик безопасности, rate limiting (от 10 до 10 000 запросов в минуту).
- Интеграция аналитики — настройка Pump и дашбордов в Grafana для мониторинга latency и error rate.
- Документация и обучение — гайды по управлению и эксплуатации для ваших инженеров.
- Техническая поддержка — сопровождение в течение месяца после запуска.
Сроки и стоимость
Базовая настройка — от 2 дней, полная конфигурация — до 5 дней. Стоимость рассчитывается индивидуально в зависимости от числа API и сложности middleware. Свяжитесь с нами для детального обсуждения — поможем наладить API-инфраструктуру, которая выдержит 50 000 RPS без сбоев. Закажите настройку Tyk — мы внедрим шлюз за 2 дня. Получите консультацию инженеров с опытом 50+ проектов.







