Как навести порядок в API без головной боли при помощи Gravitee
Представьте ситуацию: у вас в компании десяток микросервисов, каждый со своим API. Кто-то стучится в них напрямую, кто-то забыл про авторизацию, а фронтенд-разработчики постоянно спрашивают, где взять актуальную документацию. Знакомо? В таких случаях обычно приходят к мысли, что нужен API Gateway или полноценный менеджмент-инструмент.
Недавно я разбирался с Gravitee API Management (или просто Gravitee APIM). Это опенсорсная штука на Java и Vert.x, которая берет на себя роль «умного» шлюза между вашими сервисами и внешним миром. В отличие от некоторых тяжеловесных корпоративных решений, Gravitee ощущается довольно легким, но при этом закрывает почти все хотелки DevOps-инженера или системного архитектора.
Что это вообще такое
Если вкратце, Gravitee — это такая прослойка, через которую проходят все запросы к вашим API. Она умеет проверять токены, ограничивать частоту запросов (rate limiting), логировать трафик и даже трансформировать данные на лету.
Интересно, что проект не ограничивается только шлюзом. В комплекте идет полноценная консоль управления для админов и отдельный портал для разработчиков. То есть вы не просто пробрасываете порты, а создаете витрину своих API, где другие команды могут найти описание методов и получить ключи доступа.
В чем реальная польза для разработчика
Я выделил несколько моментов, которые кажутся мне наиболее полезными в повседневной работе.
Гибкое управление потоками через Flow
В Gravitee есть концепция Flow (потоков). Это способ настраивать логику обработки запроса без написания кода. Вам нужно добавить заголовок ко всем ответам? Или проверить специфическое условие в теле запроса? В консоли доступно около 50 готовых политик, которые можно комбинировать. Это избавляет от необходимости писать кастомные фильтры внутри самих микросервисов.
Портал как точка входа
Часто документация API живет где-то в Confluence или, в лучшем случае, в Swagger-файле, который еще надо найти. С Gravitee вы получаете Developer Portal. Это каталог, где разработчики (и внутренние, и внешние) регистрируют свои приложения, подписываются на нужные API и сразу видят документацию. Получается такой внутренний магазин интерфейсов.
Аналитика из коробки
Вместо того чтобы настраивать дашборды в Grafana с нуля, можно использовать встроенную аналитику. Она показывает, кто чаще всего дергает ваши ручки, какие методы отдают 500-е ошибки и каков средний latency. Для быстрой диагностики это спасает, когда что-то пошло не так, а лезть в логи ELK слишком долго.
Планы и безопасность
Вы можете создавать разные «планы» для одного и того же API. Например, бесплатный план с ограничением 100 запросов в час и платный — без лимитов, но с обязательной проверкой API-ключа или OAuth2. Все это настраивается в пару кликов в консоли управления.
Техническая сторона вопроса
Проект написан на Java с использованием Vert.x, что объясняет его быстродействие. В качестве базы данных для хранения конфигураций и метаданных по умолчанию предлагается MongoDB, но для аналитики можно подключить Elasticsearch.
Архитектура состоит из четырех основных компонентов:
- Gateway — само «сердце», принимающее трафик.
- Management API — бэкенд для управления всем этим хозяйством.
- Console UI — веб-интерфейс для администраторов.
- Portal UI — интерфейс для потребителей API.
Как попробовать быстро
Разработчики Gravitee подготовили отличный docker-compose файл для быстрого старта. У меня запуск занял ровно пять минут.
Сначала клонируем репозиторий:
git clone --depth=1 https://github.com/gravitee-io/gravitee-api-management
cd gravitee-api-management/docker
Запускаем всё через make (если он установлен) или напрямую через Docker:
cd quick-setup/mongodb && docker compose up -d
После этого по адресу localhost:8084 будет доступна консоль админа, а на localhost:4100 — портал для разработчиков. Стандартный логин/пароль — admin / admin. Можно сразу зайти и попробовать создать свой первый API, проксирующий, например, какой-нибудь публичный сервис.
Кому это пригодится
Gravitee точно стоит пощупать командам, которые уже выросли из простых прокси-серверов типа Nginx, но не готовы платить огромные деньги за энтерпрайз-комбайны.
Он подходит, если:
- Вам нужно централизовать безопасность и не реализовывать проверку JWT в каждом сервисе.
- Вы хотите дать другим командам удобный инструмент для самообслуживания (получение ключей, чтение доков).
- Нужно быстро внедрить квоты и лимиты на использование ресурсов.
Конечно, для совсем маленьких пет-проектов это может быть оверкиллом из-за необходимости держать MongoDB и Elasticsearch. Но в условиях средней компании переход на такой API Management сильно разгружает разработчиков бэкенда от рутины, связанной с инфраструктурными задачами.

Что в итоге
Проект живой, активно обновляется (коммиты прилетают чуть ли не каждый час) и имеет внятное комьюнити. Если вы ищете способ навести порядок в своих интерфейсах и сделать жизнь тех, кто пользуется вашим API, чуть проще — Gravitee определенно заслуживает того, чтобы развернуть его хотя бы в локальном Docker для тестов.
