본문 바로가기
Kotlin Spring

Webflux 는 어디서 동작하나?

by Bill Lab 2024. 12. 10.
728x90

WebFlux는 서블릿 기반이 아닌 비동기적, 논블로킹 방식으로 동작하는 리액티브 웹 프레임워크에서 동작한다.

하지만 예외인 경우가 있다!!

(알고있었나?)

 

우선 WebFlux와 서블릿관계부터 알아보자

 

WebFlux는 기본적으로 두 가지 실행 모델을 지원한다.

  • 서블릿 기반 (@EnableWebFlux): 전통적인 서블릿 컨테이너인 Tomcat, Jetty, Undertow와 같은 서버에서 실행될 수 있고, 이 경우, WebFlux는 ReactiveAdapter를 통해 서블릿 환경에서 리액티브 모델을 지원 한다.
  • 리액티브 서버 기반 (Netty, Undertow 등): 비동기 및 논블로킹 방식의 리액티브 서버에서 WebFlux를 실행할 수 있는데, 이 경우 서블릿 API와는 다르게 완전히 논블로킹 방식으로 동작하며, 더 효율적인 리액티브 처리가 가능하다.

 

 

서블릿과 WebFlux의 차이점으로는...

 

서블릿은 기본적으로 블로킹 방식의 프로그래밍 모델이다! 

즉, 클라이언트 요청을 처리하는 동안 서버에서 해당 요청에 대해 기다리고 있는 상태가 발생하는 반면,

WebFlux는 논블로킹 I/O를 사용하여 요청을 처리하며, 비동기적으로 데이터를 처리하여 높은 성능과 확장성을 제공한다.

 

 

 

왜 WebFlux는 서블릿 기반에서 돌아갈 수 있나?

Spring WebFlux는 서블릿 컨테이너에서 리액티브 프로그래밍을 사용할 수 있게 해주는 라이브러리이다.

서블릿 컨테이너의 한계를 넘어서기 위해, WebFlux는 리액티브 스트림을 활용하여 요청을 처리하고 비동기적으로 데이터를 전달하는 방식을 제공 한다.

 

 

 

 

728x90