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는 동시 애플리케이션에 대한 확장성과 응답성을 제공합니다.
'관련_배경_지식' 카테고리의 다른 글
멀티쓰레드 / SSR / CSR (0) | 2023.11.23 |
---|---|
기본_배경_지식 [Hash, JavaVm, x86/x64, PCI, Memory Manager, CacheManager,Process/Thread,window 커널] (1) | 2023.11.23 |
WebServer와 Web Application Server (0) | 2023.11.22 |
트랜잭션 스크립트 패턴과 도메인 모델 패턴 (0) | 2023.11.10 |
쿠버네티스란? (0) | 2023.11.10 |