[Spring] Web Mvc Vs Web Flux

2023. 3. 2. 21:34·Develop/Back-End
반응형

웹 개발 할 때 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를 선택할 수 있어.

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

반응형
저작자표시 비영리 (새창열림)

'Develop > Back-End' 카테고리의 다른 글

[Java] 스트림(Stream) API 사용 방법 / 외부반복 내부반복 차이점  (4) 2023.08.05
[Spring Cloud] 스프링 클라우드 란 무엇인가요?  (5) 2023.04.27
[Spring Boot] H2 in memory DB 사용 시 Database "C:/Users/사용자/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) 오류 발생 / 해결 방법  (3) 2023.04.04
[JAVA] Design Pattern 이 도대체 뭘까? 공부해야 할까?  (10) 2022.12.23
Ehcache Java에서 가장 널리 사용되는 캐시 라이브러리  (9) 2022.12.20
'Develop/Back-End' 카테고리의 다른 글
  • [Spring Cloud] 스프링 클라우드 란 무엇인가요?
  • [Spring Boot] H2 in memory DB 사용 시 Database "C:/Users/사용자/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) 오류 발생 / 해결 방법
  • [JAVA] Design Pattern 이 도대체 뭘까? 공부해야 할까?
  • Ehcache Java에서 가장 널리 사용되는 캐시 라이브러리
    반응형
  • 개발자는어디까지공부해야할까?
  • 전체
    오늘
    어제
    • 분류 전체보기 (51)
      • 인디해커 (1)
      • Develop (42)
        • Front-End (7)
        • Back-End (17)
        • Spring (1)
        • Tool (1)
        • DATABASE (1)
        • DevOps (7)
        • CS (3)
        • Trouble Shooting (5)
      • 다이소 (1)
        • 코딩테스트문제풀이 (1)
      • 변소 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브(Github)
    • 개발 Feed
  • 공지사항

  • 인기 글

  • 태그

    Java
    node
    개발자 면접
    스프링부트
    spring
    Recoil
    @Scheduled
    타임리프 사용방법
    react-router-dom
    op.gg
    자바
    Oracle
    리액트
    fow.kr
    JavaScript
    SpringBoot
    thymeleaf
    롤
    spring boot
    github
    리그오브레전드
    mybatis
    백엔드 개발자 면접 단골 질문 뿌시기
    lol
    jdk
    개발자
    셀레니움
    React
    backend
    백엔드
  • 최근 댓글

  • 최근 글

  • 02-02 01:52
  • hELLO· Designed By정상우.v4.10.3
[Spring] Web Mvc Vs Web Flux
상단으로

티스토리툴바