Что такое API Gateway
Кратко:
- API Gateway - это решение для интеграции микросервисной архитектуры и разрозненных API.
- Yandex API Gateway - часть serverless-экосистемы Yandex Cloud, предоставляющая функциональность прокси-сервера и масштабируемость.
- Сервис позволяет описывать API в стандартном виде с помощью спецификации OpenAPI и применять интеграционные решения на основе расширений OpenAPI.
- API Gateway работает по модели PaaS и гарантирует доступность вашего API в соответствии с SLA.
- Сервис принимает запросы по HTTPS и использует механизм сервисных аккаунтов для подключения к другим сервисам Yandex Cloud.
- API-шлюз может обрабатывать запросы пятью разными способами.
- Тарификация для этого сервиса - 120 рублей за 1 млн запросов в месяц, первые 100 000 запросов в месяц не тарифицируются.
Что такое API Gateway
Представим, что вы разрабатываете интернет-магазин с микросервисной архитектурой. Клиент открывает сайт или приложение вашего магазина и переходит на страницу товара — делает один запрос. Чтобы сформировать ту же карточку товара с набором корректных данных, системе нужно сделать несколько запросов, например:
-
Получить из базы данных название и подробные характеристики товара.
-
Получить из базы данных номинальную стоимость товара.
-
Выяснить, нет ли у клиента персональной скидки на товары этой категории, а затем пересчитать конечную стоимость и показать её в карточке рядом с номинальной.
-
Выяснить, есть ли этот товар на складе или в офлайн-магазинах и в каком количестве.
-
Рассчитать длительность доставки в город, который указал клиент.
Каждый из этих запросов выполняет отдельный микросервис со своим API. Если же вы хотите после оформления заказа и получения оплаты передавать клиенту трекинг почтового отправления, то вам придётся передать всем логистическим компаниям — партнёрам единый API для работы с вашей информационной системой.
Такое решение можно построить с нуля на базе веб-сервера NGINX или с помощью специализированных решений, которые, как правило, ориентированы на определенные стеки технологий и среды выполнения. В дальнейшем вам придется самостоятельно администрировать всю инфраструктуру: настраивать маршрутизатор и балансировку запросов по виртуальным машинам, обеспечивать горизонтальное масштабирование при росте посещаемости и т. д.
Вместо этого вы можете воспользоваться сервисом Yandex API Gateway, который работает по модели PaaS. Сервис предоставит:
- функциональность прокси-сервера, масштабируемость и отказоустойчивость инфраструктуры;
- возможность описывать API в стандартном виде с помощью спецификации OpenAPI;
- возможность применять интеграционные решения на основе расширений OpenAPI.
Давайте разберёмся с базовыми концепциями сервиса.
Знакомство с Yandex API Gateway
В основе этого сервиса лежит классический паттерн программирования: внутреннее представление отделено от способа взаимодействовать с ним через прокси. Мы не афишируем нашу реализацию и отдаём наружу некий контракт.
Yandex API Gateway — важная часть serverless-экосистемы в Yandex Cloud. Он позволяет интегрировать компоненты микросервисного приложения и разрозненные API.
По своей сути Yandex API Gateway является управляемым RESTful API. Он находится между внешним пользователем и сервисами, которые обрабатывают запросы этого пользователя. Его основное преимущество — возможность свести в единую точку взаимодействие пользователей с ресурсами, которые расположены как в Yandex Cloud, так и на других серверах. Допустим, у вас есть три сущности:
-
Файлы в Object Storage.
-
Сайт на базе WordPress, развёрнутый на виртуальной машине.
-
API, который реализован с помощью Cloud Functions.
API Gateway позволит организовать взаимодействие со всеми тремя ресурсами через обращение к одному домену с единым API. Без него вам бы пришлось самостоятельно разворачивать шлюз или обратный прокси-сервер и администрировать его.
Поскольку API Gateway работает по модели PaaS, он гарантирует доступность вашего API в соответствии с SLA. А ещё HTTP/HTTPS-запросы ваших пользователей будут выполнены вне зависимости от их количества.
Логика работы Yandex API Gateway
Сервис принимает запросы по HTTPS через служебный поддомен
apigw.yandexcloud.net
или через подключение к вашему домену через Certificate Manager, разбирает эти запросы и определяет их путь и параметры. Кроме того, он использует механизм сервисных аккаунтов для подключения к другим сервисам Yandex Cloud.Созданный API-шлюз может обрабатывать запросы пятью разными способами:
- Автоматически формировать статический ответ на запрос. Ответ будет разным в зависимости от параметров запроса.
- Вызывать функцию, созданную в сервисе Yandex Cloud Functions, которая передаёт параметры запроса и возвращает результаты вызова в ответе.
- Обращаться к сервису Yandex Object Storage, чтобы раздавать статические файлы.
- Отправлять запрос на другой URL и формировать ответ как есть.
- Вызывать ноду DataSphere, развёрнутую в виде отдельного микросервиса.
Общая схема работы сервиса выглядит следующим образом:

Запрос пользователя попадает в API-шлюз, который в соответствии с правилами в спецификации перенаправляет его по другим путям, таким как выполнение облачной функции, получение файла из Object Storage и т. д.
Например, на запрос
https://<домен>/GetFileList
может быть дан статический ответ со списком файлов, а на запрос https://<домен>/static/<file>
— возвращён файл из Yandex Object Storage.Тарификация
Модель тарификации для этого сервиса — 120 рублей за 1 млн запросов в месяц.* Работает free tier: первые 100 000 запросов в месяц не тарифицируются.
Давайте посчитаем стоимость использования API-шлюза с количеством запросов из примера выше:
120×((2000000–100000)/1000000)=228 ₽ в месяц
Для сравнения создадим виртуальную машину (ВМ) с самыми скромными возможностями, чтобы запустить на ней NGINX для терминирования TLS и проксирования запросов. Пусть это будет Ubuntu 20.04 c HDD объёмом 13 ГБ, Intel Ice Lake, 2 vCPU с гарантированной долей 20% и RAM 1 ГБ. Ежемесячная стоимость ВМ с такой конфигурацией составит 1 045,96 ₽.
* Актуальные тарифы могут отличаться от приведенных в примерах выше.
Обратите внимание: функционально сравнение этих двух решений не будет корректным. Отказоустойчивость API-шлюза, работающего на базе NGINX в ВМ, будет предельно низкой, и у вас уйдёт заметно больше времени на настройку маршрутов.
Более подробную информацию вы найдёте в документации.
На следующем уроке мы разберём основы конфигурации Yandex API Gateway.