WEB/Spring

[Spring]MVC모델과 비교되는 WebFlux에 대해 알아보자

MoonSta 2023. 8. 9. 22:46

Spring Framework에는 대표적인 프로그래밍 모델이 있습니다. 하나는 가장 많이 알고, 대중적으로 쓰이는 Spring Mvc모델과 두 번째로는 이번에 소개할 Spring WebFlux 모델입니다. 이번 포스팅에서는 WebFlux 모델을 MVC 모델과 비교해서 알아보도록 하겠습니다.


Spring WebFlux란?

Spring WebFlux는 스프링 프레임워크의 일부로서, 비동기 및 리액티브 프로그래밍을 지원하는 모듈입니다. 기존의 Spring MVC와 비교하여 기존과 다른 리액티브 프로그래밍의 개념을 도입하여 데이터 스트림을 처리하고 더 많은 동시 요청을 처리할 수 있는 확장성 있는 웹 애플리케이션을 개발할 수 있게 해 줍니다.

 


 

리액티브 프로그래밍이란?

Spring WebFlux와 Spring MVC를 비교할 때 차이는 리액티브 프로그래밍이 도입되었다는 것인데 도대체 리액티브 프로그래밍이 무엇인지 알아보겠습니다.

 

리액티브 프로그래밍은 비동기적이고 이벤트 기반의 프로그래밍이며, 데이터 스트림과 변경 사항을 다루는데 중점을 둔 새로운 패러다임입니다. 이 패러다임은 데이터 흐름에 따라 프로그램의 흐름이 결정되며, 데이터가 변경될 때마다 자동으로 관련 코드를 실행시켜 응답하는 방법으로 실행됩니다.


 

Spring WebFlux의 특징

이제 Spring WebFlux이 가지고 있는 특징에 대해 알아보도록 하겠습니다. 

 

첫 번째로 Spring WebFlux는 리액티브 프로그래밍 모델을 기반으로 한다는 것입니다. 이에 대한 내용은 위에서 다루었기 때문에 생략하도록 하겠습니다.

 

두 번째로 Spring MVC와 마찬가지로 Spring WebFlux 또한 어노테이션 기반의 프로그래밍을 한다는 것입니다.

대표적으로 @Controller, @RestController, @GetMapping 등을 사용하여 엔드 포인트를 정의하고 요청을 처리할 수 있습니다.

 

세 번째로 함수형 프로그래밍을 지원한다는 것입니다. Spring WebFlux는 함수형 엔드포인트 정의와 리액티브 데이터 흐름을 표현하기 위해 Java8의 도입된 람다식을 활용할 수 있습니다.

 

2023.02.08 - [Languages/Java] - [Java]함수형 인터페이스(Functional Interface) 사용해 보기

 

[Java]함수형 인터페이스(Functional Interface) 사용해보기

📌함수형 인터페이스(Functional Interface) 사용해보기 함수형 프로그래밍(Functional Programming)은 순수 함수들로 조합하여 기본 원칙에 따라 소프트웨어를 구성하는 것을 말합니다. 쉽게 말하면 프로

mooonstar.tistory.com

 

 마지막으로 Spring WebFlux의 특징인 비동기 및 논블로킹 기반으로 동작하기 때문에, 대량의 동시 요청에 대한 빠른 응답과 서버의 확장성을 향상하는 개발이 가능합니다.

 

 

 

어떤 프로그래밍 모델을 사용해야 할까?

Spring WebFlux는 비동기 및 리액티브 프로그래밍의 개념을 익히고, 높은 동시성을 필요로 하는 웹 애플리케이션을 개발하는 경우에 유용한 방식이고, Spring MVC 모델과는 다른 용도로 사용되기 때문에 프로그램의 요구에 맞는 적절한 방식을 채택해야 합니다.