Проблема: 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+ проектов.







