Spring Cloud Gateway
Тема дорожной карты · Spring Boot
Паттерн API Gateway — это архитектурный подход, при котором единая точка входа обрабатывает все клиентские запросы, направляя их к соответствующим Spring Boot-микросервисам и применяя сквозные функции: аутентификацию, ограничение частоты запросов и логирование. Spring Cloud Gateway реализует этот паттерн поверх Spring WebFlux и Project Reactor, обеспечивая неблокирующую реактивную маршрутизацию с помощью зависимости spring-cloud-starter-gateway. Маршруты задаются через fluent Java DSL или в application.yml с использованием spring.cloud.gateway.routes, где каждый маршрут определяет предикаты (например, Path=/api/orders/**) и фильтры (например, AddRequestHeader, CircuitBreaker). Паттерн API Gateway органично интегрируется с Spring Cloud Netflix (обнаружение сервисов через Eureka), Spring Security для валидации OAuth2/JWT и Resilience4j для обрыва цепи, превращая Spring Cloud Gateway в мощный компонент любой микросервисной архитектуры на базе Spring Boot. Развёртывание API Gateway в виде Docker-контейнера в Kubernetes позволяет горизонтально масштабировать его и централизовать завершение TLS для всех нижестоящих Spring Boot-сервисов.
Как это работает
Spring Cloud Gateway (Spring Cloud): Spring Cloud Config Server централизует конфигурацию с Git-backend + per-service refresh. Service Discovery (Eureka) был каноничным вариантом; в 2026 Kubernetes-native discovery (DNS + Services) более распространён. Spring Cloud Gateway — современный API gateway (заменяет Zuul). Resilience4j добавляет circuit breakers, retries, bulkheads, rate limits. Micrometer Tracing (заменяет Sleuth) для distributed tracing (B3 / W3C Trace Context, OpenTelemetry export).
Когда применять
На Kubernetes предпочитайте K8s-native primitives (Services, ConfigMaps, Secrets, Istio/Linkerd) перед Spring Cloud эквивалентами — меньше поддержки. Spring Cloud Config полезен для не-K8s env или как Git-backed config single source. Всегда оборачивайте внешние вызовы в circuit breakers в production. Trace IDs через каждый service-вызов — иначе debug distributed-багов безнадёжен.
Типичные ошибки
Ловушки Spring Cloud Gateway: Eureka + K8s Services (дублированный discovery, оба сломаны); circuit breakers misconfigured (fail-open прячет outage); нет distributed tracing (не отладить 5-service запрос); Spring Cloud Gateway для всего (есть scaling-ограничения — proper API gateways как Kong, Envoy, Cloudflare лучше подходят).