JavaRush /Курсы /Модуль 5. Spring /Лекция 241: Введение в API Gateway: зачем нужен и как раб...

Лекция 241: Введение в API Gateway: зачем нужен и как работает

Модуль 5. Spring
25 уровень , 0 лекция
Открыта

Представьте, что у вас есть огромный ресторан со множеством кухонь (каждая кухня — это микросервис). Клиенты (пользователи) заходят в ресторан, и вы не хотите, чтобы они метались между кухнями, выясняя, где делают суши или где готовят пиццу. Что вы делаете? Вы нанимаете официанта (API Gateway), который принимает заказы, передаёт их на нужную кухню и приносит клиенту готовое блюдо. API Gateway — это тот самый официант для вашего микросервисного ресторана.

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

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


Основные функции API Gateway

  1. Маршрутизация запросов.
    Представьте API Gateway как диспетчера, который решает, куда именно направить запрос. Например, запросы на /users отправляются в микросервис "Пользователи", а запросы на /orders — в микросервис "Заказы".
  2. Безопасность.
    API Gateway может реализовывать аутентификацию и авторизацию. Например, проверить, есть ли у клиента валидный токен JWT и имеет ли он право вызывать определённый эндпойнт.
  3. Балансировка нагрузки.
    Когда у нас много экземпляров одного микросервиса (например, три контейнера с микросервисом "Платежи"), API Gateway может распределять запросы между ними, чтобы избежать перегрузок.
  4. Мониторинг и логирование.
    API Gateway также может собирать статистику о количестве запросов, их типах, ошибках и времени обработки. Это помогает понять, как ваше приложение используется.
  5. Ограничение скорости запросов (Rate Limiting).
    Часто API используется внешними клиентами или партнёрами. API Gateway ограничивает количество запросов от одного клиента, чтобы защитить ваше приложение от перегрузки.
  6. Изменение формата данных.
    Если клиенты ожидают данные в другом формате (например, фронтенд работает с одними полями, а микросервис возвращает другие), API Gateway может преобразовывать запросы и ответы.

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

Если у вас всего один монолитный сервер, то необходимость в API Gateway минимальна. Однако в микросервисах он жизненно необходим. Вот почему:

  1. Единая точка входа.
    Вместо того, чтобы клиенты обращались к десяткам микросервисов, они взаимодействуют только с API Gateway. Это упрощает работу клиентов, так как им не нужно знать структуру вашей серверной части.
  2. Сокрытие внутренней структуры микросервисов.
    Ваши микросервисы могут быть изменены, перемещены или даже заменены, но клиенты этого не заметят благодаря API Gateway. Он абстрагирует внутреннюю архитектуру системы.
  3. Управление доступом.
    API Gateway выступает в роли "охранника", удостоверяющегося, что доступ к вашим сервисам имеют только авторизованные пользователи.
  4. Поддержка мобильных устройств и фронтенда.
    API Gateway может предоставлять разные интерфейсы для различных типов клиентов. Например, более легковесный API для мобильного приложения и более насыщенный API для браузера.

Примеры использования API Gateway

  • Netflix, как пионер микросервисной архитектуры, использует API Gateway для маршрутизации запросов пользователей к соответствующим сервисам, а также для обеспечения персонализированного опыта (например, рекомендаций).
  • Amazon обрабатывает миллионы запросов в секунду и реализует API Gateway для управления запросами от разных клиентов, включая веб-приложения, мобильные телефоны и устройства с голосовым управлением.
  • В маркетплейсах с сотнями микросервисов API Gateway помогает централизованно управлять взаимодействием между микро-сервисами покупателей, продавцов и обработки заказов.

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

  1. Клиент посылает запрос к API Gateway
    Клиенты (мобильные приложения, веб-браузеры) не знают ничего о микросервисах. Все их запросы направляются к API Gateway.
  2. API Gateway анализирует запрос
    На основании запроса (его пути, метода HTTP, заголовков и т.д.) API Gateway решает, какой микросервис должен обработать запрос.
  3. Маршрутизация запроса
    API Gateway перенаправляет запрос к нужному микросервису. Например:
    • Запрос https://api.example.com/users перенаправляется на микросервис "Пользователи".
    • Запрос https://api.example.com/orders отправляется микросервису "Заказы".
  4. Обратный поток ответа
    После обработки запроса микросервис возвращает ответ. API Gateway может модифицировать его (например, добавить заголовки) и отправляет клиенту.

API Gateway в микросервисной архитектуре: визуализация


Клиенты  ->  [ API Gateway ]  ->  [ Сервис A ]
Мобильное      (Маршрутизация)      [ Сервис B ]
приложение                          [ Сервис C ]
и фронтенд

Доступные решения для API Gateway

На рынке существует множество решений для API Gateway. Вот некоторые из них:

Решение Описание
Spring Cloud Gateway Инструмент от экосистемы Spring. Отлично интегрируется с другими Spring-проектами
Kong Gateway Высокопроизводительное решение, поддерживающее расширяемость с помощью плагинов
AWS API Gateway Управляемое API Gateway-решение от Amazon для работы в облаке
NGINX Лёгкое, но мощное решение для маршрутизации и балансировки
Traefik Отличный вариант для контейнеризированных сервисов (например, Kubernetes, Docker)

В нашем курсе мы сосредоточимся на Spring Cloud Gateway, так как это естественный выбор для приложений на Spring Boot.


Практическое применение знаний

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


На следующей лекции мы начнем разбирать практическую реализацию API Gateway с использованием Spring Cloud Gateway!

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ