[스프링] 스프링 클라우드 게이트웨이의 대기 시간 및 타임아웃 설정

개요

스프링 클라우드 게이트웨이는 클라이언트 요청을 처리하고 라우팅하는 데 사용됩니다. 클라우드 게이트웨이를 사용할 때 대기 시간 및 타임아웃 설정은 매우 중요하며, 이를 통해 시스템의 안정성과 성능을 향상시킬 수 있습니다. 이번 포스팅에서는 스프링 클라우드 게이트웨이에서 대기 시간과 타임아웃을 설정하는 방법에 대해 다룰 것입니다.

대기 시간 설정

게이트웨이는 애플리케이션으로부터 요청을 받고 해당 요청을 백엔드 서비스로 라우팅합니다. 이 때 요청의 대기 시간을 설정하여 원활한 트래픽 관리를 할 수 있습니다. 스프링 클라우드 게이트웨이에서는 spring.cloud.gateway.routes property를 사용하여 대기 시간을 설정할 수 있습니다.

spring:
  cloud:
    gateway:
      routes:
        - id: my_route
          uri: http://example.com
          predicates:
            - Path=/myPath
          filters:
            - name: RequestRateLimiter
              args:
                key-resolver: "#{@userRemoteAddrKeyResolver}"
                redis-rate-limiter.replenishRate: 10
                redis-rate-limiter.burstCapacity: 20
                request-rate-limiter.rate-limiter-timeout: 10

위 예시에서 request-rate-limiter.rate-limiter-timeout 속성을 사용하여 대기 시간을 설정할 수 있습니다.

타임아웃 설정

클라우드 게이트웨이에서는 백엔드 서비스로의 요청에 대한 타임아웃을 설정할 수 있습니다. 이를 통해 불안정한 서비스로 인한 장애 시나리오를 방지할 수 있습니다. 타임아웃은 spring.cloud.gateway.routes property를 통해 설정할 수 있습니다.

spring:
  cloud:
    gateway:
      routes:
        - id: my_route
          uri: http://example.com
          predicates:
            - Path=/myPath
          filters:
            - name: Retry
              args:
                retries: 3
                statuses: SERVER_ERROR
            - name: Hystrix
              args:
                name: fallbackcmd
                fallbackUri: forward:/fallback
                execution.isolation.thread.timeoutInMilliseconds: 3000

위 예시에서 execution.isolation.thread.timeoutInMilliseconds 속성을 사용하여 요청에 대한 타임아웃을 설정할 수 있습니다.

결론

스프링 클라우드 게이트웨이를 사용할 때, 대기 시간과 타임아웃을 적절히 설정함으로써 시스템의 안정성과 성능을 향상시킬 수 있습니다. 이를 통해 백엔드 서비스의 불안정성으로 인한 문제를 방지하고, 원활한 트래픽 관리를 할 수 있습니다.

참고 문헌