System Design

API Gateway

Цели урока

  • Понять роль API Gateway как единой точки входа
  • Изучить cross-cutting concerns: auth, rate limiting, transformation
  • Освоить BFF pattern для разных типов клиентов
  • Реализовать rate limiting с Redis (sliding window)
  • Избегать anti-patterns: fat gateway, SPOF, no circuit breaker

Предварительные знания

  • Основы микросервисной архитектуры
  • Понимание HTTP/REST API

Что такое API Gateway

**API Gateway** - единая точка входа для всех клиентов. Маршрутизирует запросы к микросервисам, выполняет cross-cutting concerns.

Gateway - это **reverse proxy** с дополнительными возможностями: auth, rate limiting, request transformation, aggregation.

Почему SSL termination на API Gateway - хорошая практика?

Функции API Gateway

Gateway выполняет **cross-cutting concerns** - функциональность, которую не хочется дублировать в каждом сервисе.

**Anti-pattern: Fat Gateway**. Gateway должен делать routing и cross-cutting concerns. Бизнес-логика остаётся в сервисах!

Какую функцию НЕ должен выполнять API Gateway?

Backend for Frontend (BFF)

**BFF** - специализированный gateway для каждого типа клиента. Mobile, Web, TV имеют разные потребности в данных.

**Ownership**: BFF принадлежит команде клиента. Mobile team владеет Mobile BFF. Это позволяет им двигаться независимо от backend.

BFF также решает проблему **aggregation** - объединения данных из нескольких сервисов в один ответ.

Mobile app показывает home screen с данными из 5 сервисов. Без BFF каждый запрос занимает 50ms. Сколько времени займёт загрузка?

Rate Limiting

**Rate Limiting** защищает backend от перегрузки и abuse. Gateway - идеальное место для централизованного лимитирования.

**Разные лимиты**: per-user (authenticated), per-IP (anonymous), per-endpoint (expensive operations). Комбинируйте для гибкости.

API позволяет 100 req/min. Пользователь сделал 99 запросов в 12:00:59, затем ещё 100 в 12:01:01. Fixed Window пропустит сколько запросов?

Решения и Anti-patterns

Выбор Gateway зависит от требований: managed для простоты, self-hosted для контроля.

GatewayТипОсобенностиКогда использовать
KongOpen SourcePlugins, Lua, K8s nativeГибкость, self-hosted
AWS API GatewayManagedLambda, pay-per-requestAWS ecosystem
EnvoyProxygRPC, observabilityService mesh ready
NginxSelf-hostedHigh perf, reverse proxyПростые случаи
TraefikCloud nativeAuto-discovery, Let's EncryptKubernetes
CloudflareEdgeCDN + Gateway + DDoSGlobal distribution

**Anti-patterns** - типичные ошибки при проектировании Gateway:

**HA**: Gateway перед Load Balancer. Минимум 2 инстанса в разных availability zones.

BFF делает 4 параллельных запроса к сервисам. Один из сервисов отвечает за 5 секунд. Что произойдёт без таймаута?

Ключевые принципы API Gateway

  • **API Gateway** - единая точка входа для всех клиентов
  • **Cross-cutting concerns**: routing, auth, rate limiting, SSL termination
  • **BFF pattern** - специализированный gateway для каждого типа клиента
  • **Rate Limiting**: Token Bucket или Sliding Window + Redis
  • **HA обязательна**: минимум 2 инстанса + Load Balancer
  • **Не fat gateway**: только routing и infra, бизнес-логика в сервисах

Связанные темы

Gateway - часть инфраструктуры микросервисов

  • Load Balancer — LB перед несколькими gateway инстансами
  • Service Mesh — Service-to-service communication после gateway
  • Caching — Response caching на gateway уровне

Связанные уроки

  • sec-01
API Gateway

0

1

Войти