본문 바로가기
관련_배경_지식

Spring WebFlux와 Spring MVC의 비교

by Lcoding 2023. 11. 23.
반응형

Spring MVC와 Spring WebFlux는 모두 Spring 생태계에서 제공하는 웹 프레임워크이지만 프로그래밍 모델과

 비동기 및 반응형 프로그래밍을 처리하는 방식이 다릅니다.

프로그래밍 모델:
Spring MVC(Model-View-Controller): 이는 각 요청이 스레드 풀과 별도의 스레드에 의해 처리되는 전통적인 동기식 접근 방식을 따릅니다. 컨트롤러는 들어오는 요청을 처리하고 일반적으로 blocking I/O를 사용하여 처리 후 응답을 반환합니다.
Spring WebFlux: 반응형 프로그래밍 모델을 기반으로 구축되어 적은 수의 고정된 스레드로 많은 수의 동시 연결을 처리할 수 있습니다. non-blocking I/O를 사용하고 Reactive Streams API를 기반으로 하므로 개발자는 반응형, 비동기식 및 이벤트 중심 애플리케이션을 만들 수 있습니다.

동시성 모델:
Spring MVC: 요청당 스레드 모델을 사용하므로 많은 수의 동시 연결을 처리할 때 확장성 문제가 발생할 수 있습니다.
Spring WebFlux: 적은 수의 스레드로 대량의 요청을 처리하는 데 더 적합한 반응형 및 non-blocking 접근 방식을 활용하여 특정 시나리오에서 확장성을 높입니다.

사용 사례:
Spring MVC: 다수의 동시 연결을 처리하는 것보다 단순성과 개발 용이성이 더 중요한 blocking I/O에 의존하는 기존 애플리케이션에 적합합니다.
Spring WebFlux: 높은 동시성을 요구하거나 스트리밍 데이터를 처리하거나 다른 반응형 시스템과 상호 작용하는 애플리케이션에 이상적입니다. 높은 확장성과 응답성을 요구하는 마이크로서비스 아키텍처 및 시나리오에 특히 적합합니다.

반응형 프로그래밍:
Spring MVC: 본질적으로 반응형 프로그래밍을 지원하지 않습니다.
Spring WebFlux: 반응형 프로그래밍을 수용하고 개발자가 반응형 API를 사용하여 비동기식 및 이벤트 중심 시스템을 구성할 수 있도록 합니다.

 


둘 중 하나를 선택하는 것은 특정 사용 사례, 기존 인프라, 반응형 프로그래밍에 대한 친숙도에 따라 달라집니다. Spring MVC는 기존 애플리케이션에 대해 더 간단할 수 있는 반면, Spring WebFlux는 동시 애플리케이션에 대한 확장성과 응답성을 제공합니다.


 

반응형

loading