241008 내일배움캠프 백엔드 Java 6기 TIL : Spring WebFlux 톺아보기

박대현·2024년 10월 8일
0

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

  • 비동기적 데이터 흐름을 처리하는 프로그래밍 패러다임.
  • 대규모 데이터 흐름이나 빠른 응답이 필요한 시스템에서 사용.
  • 비동기논블로킹 방식을 사용하여 서버가 더 많은 요청을 동시에 처리할 수 있음.

동기 vs 비동기

  • 전통적인 MVC 방식: 동기적이고, 하나의 요청에 대해 쓰레드를 계속 사용 (블로킹).
  • 리액티브 방식: 비동기적이며, 요청을 처리하는 동안 다른 작업을 처리 (논블로킹).

Event Loop

  • 리액티브 프로그래밍에서 요청을 처리하는 핵심 메커니즘.
  • 하나의 쓰레드로 다수의 비동기 작업을 관리하고 처리.
  • 이벤트 큐에서 이벤트를 꺼내 순차적으로 처리.

Spring WebFlux

  • 비동기, 논블로킹 기반의 리액티브 웹 프레임워크.
  • Spring 5와 함께 등장했으며, Netty 서버를 기반으로 동작.
  • 기존 Spring MVC도 비동기 처리를 지원하지만, 완전한 리액티브 프로그래밍은 불가능.

WebFlux vs MVC 성능

  • WebFlux는 I/O 작업이 많은 시스템에서 뛰어난 성능을 발휘.
  • 그러나 CPU 연산이 많은 경우 MVC가 더 효율적일 수 있음.
  • WebFlux는 복잡하고 학습 난이도가 높음. 많은 기존 시스템은 여전히 안정성과 호환성 측면에서 MVC를 선호.

결론

  • MVC는 여전히 쓸만하고 안정적이며 호환성이 높음.
  • 특별한 경우 (실시간 데이터 업데이트, 스트리밍 서비스 등)에서는 WebFlux가 유리할 수 있음.

보충 내용:

  • MonoFlux는 WebFlux에서 단일 값 및 다중 값을 처리하는 리액티브 스트림 타입.
  • WebFlux와 같은 리액티브 프로그래밍은 효율적인 리소스 사용을 제공하며, 특히 비동기 통신이 중요한 현대 웹 애플리케이션에서 점점 중요해지고 있음.

0개의 댓글