middle
Что такое API Gateway и зачем он нужен?
API Gateway — это единая точка входа для всех клиентских запросов к микросервисам. Он выступает обратным прокси, маршрутизирует запросы к соответствующим сервисам и выполняет сквозные функции: аутентификацию, rate limiting, логирование.
Функции API Gateway
- Маршрутизация запросов — направление запросов к нужному сервису по URL-пути.
- Аутентификация и авторизация — проверка токенов (JWT, OAuth2) на входе.
- Rate limiting — ограничение количества запросов.
- Load balancing — балансировка нагрузки между экземплярами сервиса.
- Агрегация запросов — объединение ответов от нескольких сервисов.
- Кеширование — кеширование частых запросов.
- Трансформация запросов/ответов — изменение формата данных.
- SSL termination — обработка HTTPS.
- Логирование и мониторинг — централизованный сбор метрик.
Spring Cloud Gateway: YAML-конфигурация
# application.yml
spring:
cloud:
gateway:
routes:
- id: payment-service
uri: lb://payment-service
predicates:
- Path=/api/payments/**
filters:
- StripPrefix=1
- name: CircuitBreaker
args:
name: paymentCircuitBreaker
fallbackUri: forward:/fallback/payments
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 100
redis-rate-limiter.burstCapacity: 200
- id: customer-service
uri: lb://customer-service
predicates:
- Path=/api/customers/**
filters:
- StripPrefix=1
- AddRequestHeader=X-Request-Source, api-gateway
Spring Cloud Gateway: программная конфигурация
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("payment-service", r -> r
.path("/api/payments/**")
.filters(f -> f
.stripPrefix(1)
.addRequestHeader("X-Gateway", "true")
.retry(config -> config
.setRetries(3)
.setStatuses(HttpStatus.SERVICE_UNAVAILABLE)))
.uri("lb://payment-service"))
.build();
}
}
Альтернативные решения
- Kong — высокопроизводительный API Gateway на базе Nginx, с плагинами.
- NGINX — может использоваться как простой API Gateway.
- AWS API Gateway — управляемый сервис в облаке AWS.
- Envoy — часто используется в связке с Service Mesh (Istio).
На собеседовании: API Gateway — это не просто «прокси». Покажите, что понимаете его роль в безопасности (JWT-валидация на входе), устойчивости (circuit breaker, rate limiting) и наблюдаемости (централизованное логирование). Частая ошибка — не упомянуть, что Gateway может стать единой точкой отказа.