흰 스타렉스에서 내가 내리지

Spring WebFlux 본문

Spring

Spring WebFlux

주씨. 2023. 1. 1. 08:29
728x90

WebFlux는 클라이언트, 서버에서 reactive 스타일의 어플리케이션 개발을 도와주는 모듈이다.

reactive-stack web framework이며 non-blocking에 reactive stream을 지원한다. 

webmvc나 webflux 둘 다 사용 가능하다. 

 

Spring MVC에서는 명령형 논리, JDBC, JPA를 가질 수 있다. 

Spring WebFlux에서는 기능적 엔드 포인트, 이벤트 루프, 동시성 모델을 가질 수 있다. 

 

WebFlux가 생긴 이유

1. 적은 양의 스레드와 최소한의 하드웨어 자원으로 동시성을 핸들링하기 위함.

netty와 같은 async, non-blocking 서버를 사용한다. 

 

2. 함수형 프로그래밍. java5에서 rest controllers 나 unit test가 만들어지고, java8에는 함수형 api를 위한 lambda 표현식이 추가됐다. 이는 non-blocking 어플리케이션 api의 토대가 됐다. 

 

 

WebFlux를 사용하면 좋을 곳

* 비동기 - 논블로킹 리액티브 개발에 사용

* 효율적으로 동작하는 고성능 웹어플리케이션 개발

* 서비스간 호출이 많은 마이크로서비스 아키텍처에 적합 

 

Spring WebFlux는 어떻게 적은 리소스로 많은 트래픽을 감당할까?

-> I/O를 non-blocking을 이용하여 잘 사용하고, request를 event-driven을 통해서 효율적으로 처리한다.