Код
#статьи

API Gateway: что это и зачем нужно

Если кратко, то это цифровой «официант» для веб-сервисов и приложений.

Иллюстрация: Оля Ежак для Skillbox Media

Представьте, что вы заказываете еду в ресторане, обращаясь к официанту. Заказ принимает кухня с поварами, и через некоторое время блюдо оказывается на вашем столе. От вас требовался только запрос, а всю организационную работу взял на себя официант: принял пожелания, передал их поварам, проконтролировал готовность и вынес готовое блюдо в зал.

API Gateway (или API-шлюз) — цифровой «официант», который связывает пользователей с микросервисами приложения и возвращает результат. В этой статье детально разберём, как он работает.

Содержание

Что такое API Gateway

API Gateway — это служба для управления запросами к API веб-сервисов и приложений. Шлюз служит посредником между пользователем и онлайн-сервисами, предоставляя единую точку входа и направляя запросы от клиентов туда, куда нужно.

Если вернуться к примеру с рестораном и рассмотреть заведение как приложение, то в нём будут следующие действующие лица:

  • Ресторан — полноценное веб-приложение, объединяющее в себе несколько микросервисов (кухню, склад и доставку).
  • Кухня — микросервис, отвечающий за приготовление еды.
  • Посетитель — клиент, который обращается к веб-приложению.
  • Официант — API Gateway, связывающий клиента с другими частями сервиса.

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

Зачем нужен API Gateway

Большинство современных приложений строятся на базе микросервисов — небольших независимых модулей, каждый из которых выполняет конкретные задачи. Например, в приложении службы доставки еды может использоваться сразу три микросервиса: для авторизации, обработки заказов и регистрации ресторанов-партнёров.

В одном приложении может быть несколько десятков микросервисов. Всем им нужно быстро обмениваться данными между собой. С решением этой задачи помогает API Gateway, но шлюз также выполняет и другие функции:

  • Маршрутизация запросов. Шлюз получает запросы от клиентов и направляет их в нужный микросервис. Благодаря этому платежи всегда обрабатывает банк, а новые заказы — сервис ресторана.
  • Агрегация данных. API Gateway собирает ответы из нескольких микросервисов и возвращает их клиенту. Это позволяет сразу получить всю нужную информацию, а не делать несколько запросов подряд.
  • Управление доступом. Шлюз может ограничивать доступ пользователям, если у них нет на это прав. Например, все клиенты маркетплейсов могут делать заказы, но публиковать товары могут только продавцы.
  • Управление трафиком. Шлюз может ограничивать количество запросов от одного клиента, чтобы предотвратить перегрузку системы. Это полезно в периоды пиковой активности — например, когда все пытаются заказать мандарины и оливье за пару часов до Нового года.
  • Мониторинг и логирование. API Gateway также собирает статистику и формирует журналы запросов, чтобы отслеживать работу системы. С помощью этой информации проще находить ошибки в системе.

Как работает API Gateway

Теперь пришло время пошагово разобрать, как работает API-шлюз.

Клиент делает запрос. На этом этапе пользователь, например, хочет узнать адреса всех магазинов для животных рядом с домом. Для этого он открывает онлайн-карты и отправляет свой запрос.

Маршрутизация запроса. Запрос сначала попадает в API Gateway, чтобы система могла решить, куда его отправлять. Для этого обычно используют специальные пути маршрутизации, которые настраивает разработчик или администратор.

Сбор ответов. Запрос отправлен, и теперь нужно получить ответ. Он может быть как от одного микросервиса, так и от нескольких. В последнем случае API Gateway соберёт несколько ответов в один, чтобы их было проще передать и показать пользователю.

Защита. В процессе приёма и передачи запросов API Gateway защищает сервер от перегрузок, ограничивая количество запросов от каждого пользователя, и оптимизирует работу с помощью кэширования. Возможно, вы замечали, что, если некоторые сайты перезагрузить несколько раз подряд, на время к ним пропадает доступ — это может быть результатом защиты API Gateway.

Плюсы и минусы API Gateway

У API шлюза есть сильные и слабые стороны. Начнём с плюсов:

  • Единая точка входа. У всех запросов есть единая точка входа, что упрощает обеспечение безопасности и сбор статистики.
  • Кэширование данных. Часто запрашиваемые данные кэшируются, что позволяет избежать их повторной загрузки.
  • Управление нагрузкой. Можно управлять количеством запросов от одного клиента для равномерного распределения нагрузки на сервер.

Теперь перечислим основные минусы:

  • Риск отказа. Поскольку у всех запросов одна точка входа, сбой API Gateway может привести к остановке работы всего приложения.
  • Сложность настройки. API Gateway может быть сложно настроить, особенно в крупных системах.
  • Проблемы с производительностью. Без должной оптимизации API Gateway может замедлить работу всего приложения.

Итоги

  • API Gateway — важный инструмент, который упрощает и улучшает работу современных приложений, построенных на основе микросервисов.
  • Он выполняет роль посредника между клиентами и микросервисами, управляя запросами, проверяя доступы и собирая статистику.
  • Все запросы проходят через API Gateway. Это упрощает работу с системой, но, если шлюз выйдет из строя, это может остановить работу всей системы.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована