← Bütün Patternlər
🚪

API Gateway

Bütün müştərilərin mikroservislərə daxil olması üçün vahid bir giriş nöqtəsi (Single Entry Point) təmin edir.

🎯
Nə üçün lazımdır?

Müştəri tərəf (frontend) hər servisi ayrı-ayrılıqda bilmək məcburiyyətindən azad olur. Tək bir endpoint kifayətdir.

Əsas imkanları

Routing, Rate Limiting, Authentication, Load Balancing, Response Caching, Request/Response Transformation.

🛠️
Populyar alətlər

Spring Cloud Gateway, Kong, NGINX, AWS API Gateway, Zuul, Envoy Proxy.

İNTERAKTİV

Vizual İzah

Mərhələ {{ currentStep + 1 }}: {{ steps[currentStep].title }}

📱
Mobil App
İstək göndərilir
Cavab qayıdır
🚪
API Gateway
Routing
Data
👤
User Service
🛒
Order Service
KONSEPT

Əsas Anlayışlar

01
Routing (Yönləndirmə)

Daxil olan istəyi URL path-ə əsasən müvafiq mikroservisə yönləndirir. /api/users → User Service

02
Rate Limiting

Müəyyən müddətdə gələn istəklərin sayını məhdudlaşdırır. DDoS hücumlarından qoruyur.

03
Authentication / Authorization

JWT Token yoxlaması mərkəzi şəkildə Gateway-də aparılır. Servislər bu yükdən azad olur.

04
Response Aggregation

Bir neçə servisdən gələn cavabları birləşdirib müştəriyə tək cavab kimi qaytarır.

JAVA

Kod Nümunəsi — Spring Cloud Gateway

GatewayConfig.java
@Configuration
public class GatewayConfig {

    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
            // User Service-ə yönləndirmə
            .route("user-service", r -> r
                .path("/api/users/**")
                .filters(f -> f
                    .stripPrefix(1)
                    .addRequestHeader("X-Request-Source", "gateway"))
                .uri("lb://USER-SERVICE"))

            // Order Service-ə yönləndirmə
            .route("order-service", r -> r
                .path("/api/orders/**")
                .filters(f -> f
                    .stripPrefix(1)
                    .circuitBreaker(c -> c.setName("orderCB")))
                .uri("lb://ORDER-SERVICE"))

            .build();
    }
}
application.yml
spring:
  cloud:
    gateway:
      globalcors:
        corsConfigurations:
          '[/**]':
            allowedOrigins: "*"
      default-filters:
        - TokenRelay          # JWT token ötürmə
        - SaveSession
      routes:
        - id: payment-service
          uri: lb://PAYMENT-SERVICE
          predicates:
            - Path=/api/payments/**
✅ Üstünlükləri
  • Müştəri tərəfin sadələşdirilməsi (tek endpoint)
  • Mərkəzi Authentication və Authorization
  • Rate Limiting ilə DDoS müdafiəsi
  • Request/Response transformasiyası
  • API Versiyalaşdırma imkanı
⚠️ Riskləri
  • Single Point of Failure riski (HA lazımdır)
  • Əlavə latency (gecimi) yarada bilər
  • Konfiqurasiya mürəkkəbliyi artır
  • Bottleneck (tıxanma nöqtəsi) ola bilər