dev-tools
Словарь ↗API-шлюз (API Gateway)
API-шлюз — это сервер, стоящий перед одним или несколькими бэкенд-сервисами и выступающий единой точкой входа для всего API-трафика, централизованно решая сквозные задачи вместо дублирования этой логики в каждом отдельном сервисе. Типичные обязанности включают маршрутизацию запросов (отправку `/users/*` в сервис пользователей, а `/orders/*` — в сервис заказов), аутентификацию и авторизацию (проверку API-ключей или JWT до того, как запрос вообще достигнет бэкенда), ограничение частоты запросов (блокировку клиента, превысившего квоту), преобразование запросов/ответов и централизованное логирование и мониторинг. Популярные реализации варьируются от управляемых облачных сервисов (AWS API Gateway, Azure API Management) до опенсорсных/self-hosted решений (Kong, Tyk, Apache APISIX) и встроенного слоя API-шлюза в большинстве современных serverless- и edge-платформ. Почему это важно для разработчиков AI/SaaS: API-шлюз особенно критичен, когда у SaaS-продукта появляется несколько бэкенд-сервисов (микросервисная архитектура) или он хочет предоставить публичный API сторонним разработчикам, поскольку централизует политику безопасности и ограничения частоты запросов в одном месте, а не полагается на то, что каждый отдельный сервис реализует их правильно и согласованно. Это также естественное место для реализации монетизации API (учёт использования по API-ключу для биллинга) и для защиты именно AI-эндпоинтов от злоупотреблений, поскольку вызовы LLM API стоят гораздо дороже в расчёте на запрос по сравнению с типичными CRUD-эндпоинтами. Как это работает: каждый входящий запрос сначала попадает на шлюз. Шлюз проверяет запрос по настроенным правилам — валиден ли API-ключ? не превысил ли клиент лимит частоты запросов? допускает ли область действия JWT это действие? — и только если все проверки пройдены, перенаправляет (проксирует) запрос в соответствующий бэкенд-сервис, часто добавляя заголовки, идентифицирующие аутентифицированного клиента. Ответ бэкенда проходит обратно через шлюз, который может залогировать его, преобразовать или закэшировать перед возвратом исходному вызывающему. Практический пример: SaaS-компания запускает публичный API для сторонних разработчиков, позволяющий запрашивать данные аналитики, с оплатой за каждую 1000 запросов. Каждый вызов `api.example.com/v1/analytics` сначала попадает на их API-шлюз. Шлюз проверяет API-ключ вызывающего по базе данных, убеждается, что он не превысил месячную квоту своего тарифа (скажем, 100 000 запросов), увеличивает счётчик использования для биллинга и только после этого перенаправляет сам запрос во внутренний сервис аналитики — которому вообще не приходится реализовывать аутентификацию или ограничение частоты запросов, поскольку шлюз уже гарантировал, что до него доходят только валидные запросы в рамках квоты. Если вызывающий превышает квоту, сам шлюз возвращает `429 Too Many Requests`, даже не затрагивая внутренний сервис.
Похожие термины