Использовали ли вы API Gateway в вашем последнем проекте?

«Использовали ли вы API Gateway в вашем последнем проекте?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, в проекте использовался API Gateway на основе Spring Cloud Gateway.

Роль в архитектуре: Он выступал как единая точка входа для всех клиентских запросов к микросервисам.

Ключевые функции, которые мы реализовали:

  • Динамическая маршрутизация на основе пути запроса.
  • Балансировка нагрузки (через интеграцию с Service Discovery, например, Eureka).
  • Аутентификация и авторизация (проверка JWT-токенов).
  • Rate Limiting для защиты от чрезмерной нагрузки.
  • Логирование запросов и ответов (centralized logging).

Пример конфигурации маршрута (application.yml):

spring:
  cloud:
    gateway:
      routes:
        - id: product-service
          uri: lb://product-service # lb:// указывает на балансировку нагрузки
          predicates:
            - Path=/api/products/**
          filters:
            - StripPrefix=1 # Удаляет первый сегмент пути (/api) перед проксированием
            - AddRequestHeader=X-User-Id, ${user.id}

Вывод: API Gateway помог декомпозировать cross-cutting concerns (сквозную функциональность) из бизнес-сервисов, упростив их код и централизовав управление.