T_era

WebFlux와 일반 route의 차이 본문

Programing/Spring

WebFlux와 일반 route의 차이

블스뜸 2025. 6. 16. 15:07

Spring Cloud Gateway에서 webflux와 일반 route의 차이점:

  1. 기본 라우팅 (일반 route):

    spring:
    cloud:
     gateway:
       routes:
         - id: user-service
           uri: lb://USER-SERVICE
           predicates:
             - Path=/user-service/**
           filters:
             - StripPrefix=1
  2. WebFlux 라우팅:

    spring:
    cloud:
     gateway:
       server:
         webflux:
           routes:
             - id: user-service
               uri: lb://USER-SERVICE
               predicates:
                 - Path=/user-service/**
               filters:
                 - StripPrefix=1

주요 차이점:

  1. 처리 방식:

    • 일반 route: 동기식(Synchronous) 처리
    • WebFlux route: 비동기식(Asynchronous) 처리, 리액티브 스트림 사용
  2. 성능:

    • WebFlux:
      • 논블로킹 I/O 사용
      • 적은 수의 스레드로 많은 요청 처리 가능
      • 백프레셔(Backpressure) 지원
    • 일반 route:
      • 블로킹 I/O 사용
      • 요청당 스레드 사용
  3. 사용 사례:

    • WebFlux가 적합한 경우:
      • 높은 동시성 요구
      • 스트리밍 데이터 처리
      • 마이크로서비스 간 통신
    • 일반 route가 적합한 경우:
      • 단순한 라우팅
      • 낮은 동시성
      • 전통적인 MVC 패턴 사용
  4. 리소스 사용:

    • WebFlux:
      • 메모리 사용량이 적음
      • 스레드 풀 크기가 작음
    • 일반 route:
      • 더 많은 메모리 사용
      • 더 큰 스레드 풀 필요

현재 프로젝트에서는 WebFlux를 사용하고 있는데, 이는 다음과 같은 이점이 있습니다:

  1. 확장성:

    • 마이크로서비스 환경에서 더 나은 성능
    • 높은 동시성 처리 가능
  2. 리소스 효율성:

    • 적은 수의 스레드로 많은 요청 처리
    • 메모리 사용량 최적화
  3. 현대적인 아키텍처:

    • 리액티브 프로그래밍 지원
    • 비동기 처리에 최적화

따라서 API Gateway와 같은 엣지 서비스에서는 WebFlux를 사용하는 것이 더 적합하다. 특히 마이크로서비스 아키텍처에서 여러 서비스 간의 통신을 처리할 때 WebFlux의 비동기 특성이 큰 장점이 된다.