Открыть сервис

API-шлюз

API-шлюз (англ. API Gateway) — это промежуточный сервер (или служба), который выступает единой точкой входа для клиентских запросов к внутренним микросервисам, API или бэкенд-системам. API-шлюз выполняет функции маршрутизации, аутентификации, авторизации, ограничения скорости (rate limiting), кэширования, трансформации протоколов и агрегации ответов, скрывая внутреннюю архитектуру от внешних клиентов.

История

Концепция API-шлюза возникла в конце 2000-х — начале 2010-х годов в связи с распространением архитектуры микросервисов. В монолитных приложениях единая точка входа не требовалась, так как все функции были частью одного процесса. С переходом к микросервисам, когда приложение разбивается на множество независимых сервисов, у каждого из которых может быть свой API, возникла необходимость в унифицированном интерфейсе для клиентов (веб-браузеров, мобильных приложений, внешних систем).

Первые коммерческие решения, такие как Amazon API Gateway (запущен в 2015 году) и Kong (изначально open-source, 2015), стали стандартом де-факто. В 2016 году Netflix опубликовал собственную реализацию API-шлюза — Zuul, которая позже вошла в экосистему Spring Cloud. Параллельно развивались шлюзы на основе NGINX и Envoy (2016), а также облачные сервисы от Google (Apigee, Cloud Endpoints) и Microsoft (Azure API Management).

Классификация

API-шлюзы можно разделить по способу развёртывания и функциональности:

По способу развёртывания

По функциональному назначению

Устройство и характеристики

Типичный API-шлюз состоит из следующих компонентов:

Характеристики

Применение

API-шлюзы используются в следующих сценариях:

Микросервисная архитектура

В микросервисной архитектуре API-шлюз является обязательным компонентом. Он скрывает от клиента сложность внутренней структуры, обеспечивает единую точку входа для всех сервисов, реализует сквозную аутентификацию и авторизацию, а также агрегирует ответы от нескольких сервисов в один. Например, при загрузке страницы интернет-магазина шлюз может одновременно запросить данные о товаре, цене, отзывах и наличии на складе, объединив их в один ответ.

Публикация внешних API

Компании, предоставляющие API сторонним разработчикам (например, платёжные системы, сервисы карт, погоды), используют API-шлюзы для управления доступом: выдача API-ключей, ограничение числа запросов, мониторинг использования, биллинг. Примеры: Amazon API Gateway, Google Cloud Endpoints, Yandex API Gateway.

Безопасность и контроль доступа

API-шлюз может выступать как единый барьер безопасности: проверять токены, блокировать подозрительные запросы, фильтровать SQL-инъекции и XSS-атаки, ограничивать частоту запросов от одного IP.

Трансформация протоколов

Шлюз может преобразовывать запросы из одного протокола в другой, например, из REST (HTTP/JSON) в gRPC (HTTP/2/Protobuf) или наоборот, что позволяет интегрировать старые системы с новыми.

Кэширование

Для часто запрашиваемых данных (например, список стран, курсы валют) шлюз может кэшировать ответы, снижая нагрузку на бэкенд и ускоряя ответ клиенту.

Примеры популярных API-шлюзов

Критика

Несмотря на широкое распространение, API-шлюзы имеют ряд недостатков:

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →