본문 바로가기
IT/Spring

WebFlux vs MVC(Reactive vs Servlet)

by 민쌍 2021. 5. 2.

WebFlux(Reactive)

  • Event Driven
  • non-blocking
  • 클라이언트 요청 - 서비스 로직 - 데이터 입출력
    • WebFlux -
    • 관련되는 서비스들이 모두 Reactive 기능을 지원해야 완벽한 비동기 처리가 가능
    • 요청을 하고 응답이 올 때까지 다른 프로세스 가능
    • 요청이 완료되면 응답을 event 기반으로 요청했던 프로세스에게 알림 (CallBack)
  • 요청 수가 많아 thread pool 넘치는 것이 예상되는 환경에서 사용시 성능 이점

MVC(Servlet)

  • Synchronous blocking I/O
  • one-request-per-thread
  • 클라이언트 요청 - 서비스 로직 - 데이터 입출력
    • HTTP API - Service - RDBMS 등 현재 대부분의 서비스들은 I/O 처리시 Blocking
    • 업무가 완료될 때까지 기다려야 응답 가능
  • 컴퓨팅 성능이 좋고, 요청 수가 thread pool 넘지 않는 환경에서 기본적으로 사용

위 그림은 Spring MVC나 Spring WebFlux 둘 다 성능이 동일한 구간이 있다. 서버의 성능이 좋으면 좋아질수록 해당 구간은 더 늘어날 것이다.

  • 환경이 해당 구간이라면 굳이 사용할 필요가 없다.
  • Spring Document에서는 동기 방식이 코드 작성, 이해, 디버깅하기 더 쉽다. 이 말은 즉 높은 생산성을 가진다는 말과 같은 것으로 보인다.
  • 그렇기에 이해타산을 잘 따져서 선택해야 할 필요가 있다.

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

728x90
반응형

'IT > Spring' 카테고리의 다른 글

Spring Boot Profile(application.yml)  (0) 2021.04.08
Spring, nginx proxy HATEOAS  (0) 2021.04.07
QueryDsl Version Error  (0) 2021.03.17
Spring Mongo Database (Multi Database) #2  (0) 2021.02.28
Spring Mongo Database (Multi Database) #2  (0) 2021.02.24