Spring MVC Vs. Spring WebFlux

알파로그·2023년 11월 10일
0

Spring WebFlux

목록 보기
3/13

✏️ Spring WebFlux 란

  • Spring 5 부터 지원하는 Reactive web framework 이다.
  • 비동기 Non-Blocking I/O 방식으로 적은 수의 쓰레드를 사용한다.
  • Reactive Streams 의 구현체 중 하나인 Reactor 에 의존해 비동기 로직을 구성하고 Reactive Stream 을 제공한다.
  • Reactor 기반이지만 RxJava 등 다른 Reactive 확장 라이브러리를 쉽게 적용할 수 있다.
  • Spring WebFlux 자체의 학습 비용보다 Reactor 의 학습 비용이 더 많이 필요하다.

✏️ 차이점

✏️ 기술 스택 차이

  • 아래 그림에서 보시다 시피 Reactor 하에 Reactive Stack 과 Sevlet Stack 이 포함되어있다.
    • 즉, Spring MVC 에서도 Reactor 를 사용할 수 있기는 하다.
    • 하지만 Sevlet Stack 자체가 Blocking I/O 방식이기 때문에 Reactor 를 사용하더라도 완벽하게 사용할 수 없다.
  • Reactive Stack 은 관계형 데이터베이스를 지원하지 않았지만 2023.4 부터 공식적으로 지원하고있다.
    • 기존엔 Spring Reactive Repositories 를 통해 NoSQL 만 사용 가능했다.

📍 Netty

  • 비동기 Non-Blocking 을 지원하는 기본 서버 엔진
  • Spring Reactive Stack 의 기본 서버 엔진이다.
    • Spring WebFlux 는 Netty 외에 Jetty 나 Undertow 도 유연하게 사용이 가능하다.

✏️ 정리

  • Blocking I/O 방식으로 처리하는데 한계가 있는 대량의 요청 트래픽이 발생하는 시스템에서는 WebFlux 가 유리하다.
    • 하지만 System 의 요청 트래픽이 충분이 감당 가능한 수준이라면 Spring MVC 를 사용하는 것이 유리하다.

📍 Spring WebFlux 에 적합한 시스템

  • MSA 를 채택했을 경우
  • 스트리밍 또는 실시간 시스템
  • 네트워크 접속이 느린 클라이언트의 요청 처리
profile
잘못된 내용 PR 환영

0개의 댓글