본문 바로가기

Develop/Back-End

[Spring] Web Mvc Vs Web Flux

웹 개발 할 때 Webflux ? WebMvc? 어느 것을 선택해야 하는거야!!! 😤

 



 

WebMvc와 Webflux 개념을 알기 전에!!!

동기와 비동기가 무슨 뜻인지 부터 알아보자 🤔 

 

동기비동기는 프로그래밍에서 자주 쓰이는 용어야.

 

동기는 '동시에 일어난다'는 뜻이야. 어떤 작업을 하고 그 결과가 나올 때까지 기다리는 방식이야.

즉, 하나의 작업이 끝나기 전에는 다른 작업을 못하고 기다려야 하는 거야.

이 방식은 간단하고 직관적이지만, 다른 작업을 못하고 기다리면서 시간이 낭비될 수 있어.

 

반면에 비동기는 '동시에 일어나지 않는다'는 뜻이야. 어떤 작업을 하고 결과를 기다리지 않고 다른 작업을 할 수 있는 방식이야. 즉, 한 작업이 완료될 때까지 다른 작업을 하면서, 결과가 나오면 해당 작업을 처리하는 거야. 이 방식은 효율적이고 빠르지만, 작업 순서나 결과가 보장되지 않을 수 있어.

 

예를 들어 파일을 읽어오는 작업을 동기적으로 수행한다면, 파일을 읽어올 때까지 다른 작업을 못하고 기다려야 해. 하지만 비동기적으로 파일을 읽어오는 작업을 수행한다면, 파일을 읽어오는 동안 다른 작업을 할 수 있어. 파일이 읽혀지면 콜백 함수를 호출해서 결과를 처리하면 돼.

 

그러니까, 동기와 비동기는 각각 장단점이 있어. 상황에 따라 적절한 방식을 선택해서 사용하자😋


WebFlux Web MVC는 스프링 프레임워크에서 웹 애플리케이션을 개발할 때 사용할 수 있는 옵션이야. 근데 둘은 서로 다른 방식으로 작동하니까 선택할 때는 몇 가지 요소를 고려해야해. 😁

Web MVC는 기존에 있던 Spring MVC를 기반으로 만들어졌고, Servlet 스펙을 사용해. 동기적인 방식으로 작동하며, 블로킹 API를 사용하는데 이게 많은 사용자를 처리하는 애플리케이션에서는 성능 문제가 발생할 수 있어. 그래도 대부분의 경우에는 동기적인 코드를 작성하기 쉽고 이해하기도 쉬워. 또한 기존의 Spring MVC 애플리케이션을 업그레이드하기 쉽고, 많은 개발자들이 익숙해.

WebFlux는 논블로킹 I/O를 기반으로 하는 리액티브 프로그래밍 모델을 사용해. 논블로킹 API를 사용하기 때문에 더 많은 동시 사용자를 처리할 수 있고, 높은 처리량과 낮은 지연 시간을 제공할 수 있어. 그래도 리액티브 프로그래밍은 기존의 동기적인 방식과는 다르게 동작하니까 학습 곡선이 높을 수 있어. 또한 이전 버전의 스프링에서 WebFlux를 사용하려면 많은 코드를 변경해야 해.🤬

그러니까 선택할 때는 다음과 같은 요소를 고려해봐.

  • 동기적인 코드 작성 경험이 많다면 Web MVC를 선택할 수 있어.
  • 높은 동시 사용자 및 성능 요구 사항이 있다면 WebFlux를 선택할 수 있어.
  • 기존의 Spring MVC 애플리케이션을 업그레이드할 계획이 있다면 Web MVC를 선택할 수 있어.
  • 리액티브 프로그래밍 경험이 있다면 WebFlux를 선택할 수 있어.

이렇게 고려하면 적합한 옵션을 선택할 수 있을 거야.😏

반응형