-
해당 게시글은 "스프링으로 시작하는 리액티브 프로그래밍"의 복습 및 정리를 위해 작성되었습니다.
https://product.kyobobook.co.kr/detail/S000201399476
스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고
스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는
product.kyobobook.co.kr
Spring WebFlux는 리액티브 웹 애플리케이션 구현을 위해 Spring 5.0부터 지원하는 리액티브 웹 표준이다.
====================
여기서 리액티브는 'Reactive(반응을 하는)'에서 알 수 있듯이 어떠한 이벤트가 발생하였을시 그에 반응하여 적절한 반응을 하는 것을 의미한다.
반응을 잘 한다는 의미는 딜레이(레이턴시)없이 즉각적인 반응을 의미하며, "클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간의 최소화"를 의미한다.
=====================
Spring MVC는 서블릿 기반의 Blocking I/O 방식이기 때문에 하나의 요청을 처리하기 위해 하나의 스레드를 사용하고, 해당 스레드의 작업이 끝날때까지 스레드를 "점유"한다.
하지만 기술의 발전과 MSA등의 등장으로 대량의 트래픽이 발생하자 이러한 점유(Blocking)방식이 처리하지 못하는 상황이 잦아짐에 따라, 적은 수의 스레드로 대량의 요청을 안정적으로 처리할 수 있는 비동기 Non_Blocking I/O 방식의 Spring WebFlux가 탄생하게 되었다.
Spring WebFlux vs Servlet Stack 1.서버
=> Spring MVC 프레임워크는 서블릿 기반의 프레임워크이기 때문에 아파치 톰캣 같은 서블릿 컨테이너에서 Blocking I/O 방식으로 동작한다.
=> Spring WebFlux 프레임워크는 Non-Blocking I/O 방식으로 동작하는 Netty 등의 서버 엔진에서 동작한다.
2. 서버 API
=> Spring MVC 프레임워크는 서블릿 기반의 프레임워크이기에 서블릿 API 를 사용한다.
=> Spring WebFlux는 기본 서버 엔진이 Netty이지만 Jetty나 Undertrow같은 서버 엔진에서 지원하는 리액티브 스트림즈 어댑터를 통해 리액티브 스트림즈를 지원한다.
3. 보안
=> Spring MVC는 표준 서블릿 필터를 사용하는 Spring Security가 서블릿 컨테이너와 통합되어 있다.
=> Sping WebFlux는 WebFilter를 이용해 Spring Security를 Spring WebFlux에서 사용한다.
4. 데이터 엑세스
=> Spring MVC 프레임워크는 Blocking I/O 방식인 Spring Data JDBC, Data JPA, Data MongoDB같은 데이터 엑세스 기술을 사용한다.
=> Spring WebFlux는 데이터 액세스 계층까지 완벽하게 Non-Blocking를 지원할 수 있도록 R2DBC및 Non-Blocking I/O를 지원하는 NoSQL 모듈을 사용한다.
'개발 > 스프링 WebFlux' 카테고리의 다른 글
스프링 부트 - MVC vs WebFlux 구현 방식 차이(애너테이션 기반) (0) 2025.01.09 스프링 부트 - WebFlux의 Non-Blocking 프로세스 구조 (0) 2025.01.09 스프링 부트 - WebFlux 핵심 컴포넌트 (0) 2025.01.09 스프링 부트 - WebFlux 처리 흐름 (0) 2025.01.09 댓글