LB vs API Gateway

На первый взгляд кажется, что L7 Балансировщик и API Gateway делают одно и то же. Но разница кроется в философии: распределение трафика против управления бизнесом.

  • Load Balancer — это условный диспетчер трафика. Его задача — обеспечить равномерную нагрузку и высокую доступность через алгоритмы распределения. Он не вникает в бизнес-логику.
  • API Gateway — это бизнес-координатор. Он анализирует содержимое запросов, проверяет JWT-токены авторизации, лимитирует запросы по тарифным планам (Rate Limiting) и может трансформировать данные.
Важно: два вида API Gateway

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

  1. Инфраструктурный Gateway (Edge Gateway / Ingress): Стоит на самом периметре кластера (например, Nginx Ingress в Kubernetes или Kong). Его задача — впустить трафик снаружи, терминация SSL, базовая защита от DDoS и роутинг по сервисам. Он заменяет собой L7 Load Balancer.
  2. Архитектурный паттерн (Microservice Gateway / BFF): Живет внутри кластера. Это слой бизнес-логики (часто пишется на Node.js, Go или Spring Cloud). Его задача — агрегация. Например, мобилка делает один запрос в BFF, а BFF делает 5 запросов к разным микросервисам (Профиль, Рекомендации, Корзина), склеивает это в один красивый JSON и отдает мобилке.

Подробнее про API Gateway будем говорить на следующей неделе

Связываем всё вместе

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

  1. Шаг 1: Внешний L4 Load Balancer (Периметр). Принимает на себя первый запрос из интернета. Это может быть Network Load Balancer от AWS или Yandex Cloud. Он работает на 4-м уровне OSI (быстро и тупо), защищает сеть от тяжелых DDoS-атак (например, SYN flood) и равномерно раскидывает TCP-соединения между нодами API Gateway.
  2. Шаг 2: API Gateway (Бизнес-фасад / Edge). Получает запрос, выполняет SSL-терминацию (расшифровывает HTTPS), валидирует JWT-токены, проверяет Rate Limits (не спамит ли клиент) и читает URL. Он понимает: «Ага, это запрос на /api/users, мне нужно отправить его в Сервис Пользователей».
  3. Шаг 3: L7-балансировка до инстансов. API Gateway обращается к определенному механизму, чтобы узнать актуальные IP-адреса всех живых инстансов Сервиса Пользователей. Получив список, API Gateway сам выступает в роли умного L7-балансировщика и отправляет HTTP-запрос на наименее загруженный инстанс (Приложение А).

Иногда после API Gateway ставят отдельный L7 балансер, чтобы не перегружать API Gateway доп логикой.