T_era
WebFlux와 일반 route의 차이 본문
Spring Cloud Gateway에서 webflux와 일반 route의 차이점:
기본 라우팅 (일반 route):
spring: cloud: gateway: routes: - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/** filters: - StripPrefix=1WebFlux 라우팅:
spring: cloud: gateway: server: webflux: routes: - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/** filters: - StripPrefix=1
주요 차이점:
처리 방식:
- 일반 route: 동기식(Synchronous) 처리
- WebFlux route: 비동기식(Asynchronous) 처리, 리액티브 스트림 사용
성능:
- WebFlux:
- 논블로킹 I/O 사용
- 적은 수의 스레드로 많은 요청 처리 가능
- 백프레셔(Backpressure) 지원
- 일반 route:
- 블로킹 I/O 사용
- 요청당 스레드 사용
- WebFlux:
사용 사례:
- WebFlux가 적합한 경우:
- 높은 동시성 요구
- 스트리밍 데이터 처리
- 마이크로서비스 간 통신
- 일반 route가 적합한 경우:
- 단순한 라우팅
- 낮은 동시성
- 전통적인 MVC 패턴 사용
- WebFlux가 적합한 경우:
리소스 사용:
- WebFlux:
- 메모리 사용량이 적음
- 스레드 풀 크기가 작음
- 일반 route:
- 더 많은 메모리 사용
- 더 큰 스레드 풀 필요
- WebFlux:
현재 프로젝트에서는 WebFlux를 사용하고 있는데, 이는 다음과 같은 이점이 있습니다:
확장성:
- 마이크로서비스 환경에서 더 나은 성능
- 높은 동시성 처리 가능
리소스 효율성:
- 적은 수의 스레드로 많은 요청 처리
- 메모리 사용량 최적화
현대적인 아키텍처:
- 리액티브 프로그래밍 지원
- 비동기 처리에 최적화
따라서 API Gateway와 같은 엣지 서비스에서는 WebFlux를 사용하는 것이 더 적합하다. 특히 마이크로서비스 아키텍처에서 여러 서비스 간의 통신을 처리할 때 WebFlux의 비동기 특성이 큰 장점이 된다.
'Programing > Spring' 카테고리의 다른 글
| 템플릿 메서드 패턴과 AOP 로깅 구현: 패턴 적용의 적절성에 대한 고찰 (0) | 2025.06.23 |
|---|---|
| AOP로 로깅을 할 때 동적으로 값을 조율할 땐 어떤 방법을 사용할까 (1) | 2025.06.22 |
| api gateway yml 설정 (0) | 2025.06.16 |
| API Gateway 구현하기 (0) | 2025.06.16 |
| 나는 QueryDSL을 사용하는데 JPQL도 사용해야할까? (1) | 2025.06.11 |