[SEB BE] Section 4. Spring WebFlux?

박두팔이·2023년 3월 28일
0

스프링프레임워크

목록 보기
14/18

Spring Webflux?

리액티브(Reactive)스택은 Spring 5버전부터 새롭게 추가된 기술 스택이다. 리액티브 스택은 WebFluxx와 함께 언급된다.

Webflux 정의

Reactive한 웹 애플리케이션을 구현하기 위한 기술 자체를 상징한다. 즉, Spring WebFlux프레임 워크를 사용해서 리액티브한 웹 애플리케이션을 구현할 수 있다는 의미다.

  • Spring WebFlux는 Reactor와 밀접한 연관이 있지만 꼭 Reactor만 사용할 수 있는 것은 아니다.
  • 왜냐하면, WebFlux가 리액티브 스트림즈 인터페이스를 기반으로 동작하기 때문에 리액티브 스트림즈를 구현한 구현체라면 대부분 Reactor대신 사용할 수 있다.

💡 Spring WebFlux를 이해하기 위한 좋은방법!

Spring MVC vs Spring WebFlux 차이를 이해하기


Spring WebFlux 애플리케이션 vs Spring MVC 애플리케이션

Spring WebFlux

  • Non-Blocking 통신을 지원한다
  • Reactive Adapter를 사용하여 Reactor뿐만 아니라 RxJava등 다른 리액티브 라이브러리를 사용할 수 있는 유연함을 제공한다.
  • 보안을 적용하기 위해 Spring Security를 사용한다는 사실은 공통적이지만 WebFilter를 사용해 리액티브 특성에 맞게 인증과 원한 등의 보안을 적용한다.
  • Reactive Stack의 경우, 웹 계층(프리젠테이션 계층, API 계층)에서는 Spring WebFlux를 사용한다.
  • 완전한 Non-Blocking 통신을 위해 리액티브 스택을 데이터 액세스 계층까지 확장한다.R2DBC(Reactive Relation Database Connectivity)는 관계형 데이터베이스에 Non-Blocking 통신을 적용하기 위한 표준 사양(Specification)이며, MySQL, Oracle 등의 데이터베이스 벤더에서는 R2DBC 사양에 맞는 드라이버를 구현해서 공급한다.

Spring MVC

  • Blocking 통신 방식을 사용
  • Servlet API의 스펙에 의존적이다.
  • 보안을 적용하기 위해 Spring Security를 사용하며 서블릿 필터 방식을 사용한다.
  • Servlet Stack의 경우, Spring MVC를 사용한다.
  • Spring MVC에서 사용하는 JDBC API의 경우 Non-Blocking 통신을 지원하지 않는다.
profile
기억을 위한 기록 :>

0개의 댓글