6.스프링 웹플럭스
사용자의 요청마다 하나의 스레드를 사용하는 요청당 스레드 모델인 Spring MVC 같은 전형적인 서블릿 기반의 웹 프레임워크는 IO 연산을 수행하는 과정에서 스레드를 차단(Blocking)하며, 보통 멀티 스레드 방식으로 동작함
즉, 요청이 처리될 때 스레드 풀에서 해당 요청 작업을 수행할 스레드를 가져와서 처리를 수행하며, 작업 스레드가 종료될 때까지 스레드는 블로킹됨
이러한 블로킹 방식은 사용자의 요청이 증가함에 따라 스레드를 무한하게 확장하기 어렵다는 특징이 있음
1. Spring WebFlux
최근에는 사물 인터넷과 같이 수많은 서비스들이 서로 끊임없이 네트워크 요청을 주고받고 있으며, 따라서 확장성(Scaliability)이 더욱 중요해졌다고 볼 수 있음
Spring WebFlux는 앞서 학습한 Netty와 Project Reactor를 기반으로 개발된 비동기 기반의 논 블로킹 웹 프레임워크,
더 적은 수의 스레드(일반적으로 CPU 코어당 하나)만으로도 더 높은 확장성을 얻을 수 있는 이점을 제공함
→하나의 스레드로 두 명 이상의 클라이언트의 요청을 처리
💡
Tip
Spring WebFlux = Netty + Project Reactor
2.Reactive Stack, 리액티브 스택
스프링 프레임워크(Spring Core) 는 크게 두 가지의 스택으로 프로젝트를 구분하고 있음
- 블로킹 IO 기반의 Servlet 스택
- 논 블로킹 IO 기반의 Reactive 스택

💡
Tip
Servlet도 논블로킹은 가능함
Servlet Stack도 논 블로킹 IO가 가능은 하지만, 요청 처리 과정에서 모든 과정을 완벽하게(Fully) 논블로킹으로 동작하도록 지원하진 않음
Last updated on