Spring WebFlux
Non-Blocking I/O 방식
이벤트 루프 방식을 사용하기 때문에, 적은 수의 스레드로 많은 요청을 처리할 수 있다.
서버에서 복잡한 연산을 처리하는 CPU bound 작업이 많거나, 클라이언트 요청부터 응답을 반환하기까지의 과정 중에 Blocking 되는 작업이 존재한다면 성능이 저하될 수 있다. 성능 저하를 방지하기 위해서는 해당 작업들을 별도 스케줄러에서 수행되도록 해야 한다.
Netty, Jetty, Undertow 등의 서버 엔진에서 지원하는 Reactive Streams Adapter를 통해 리액티브 스트림즈를 지원한다.
Spring Security의 경우 표준 서블릿 필터가 아닌 WebFilter를 사용해 구현된다.
데이터 액세스 계층까지 Non-Blocking을 지원할 수 있는 라이브러리를 사용해야 한다.

Last updated