[PF/PlayAsset] WebFlux개요 1

2023. 2. 5. 22:13
728x90
반응형

2023.02.05

개발환경구성

- FE: React-Native

- BE: WebFlux

- DB: MySQL, Redis

- IDE: Android Studio, SpringBoot(2.7.3)

- JDK: 11

- SERVER: AWS

 

 

Spring WebFlux

스프링 웹플럭스는 스프링 5.0에서 새로 등장한, 웹 애플리케이션에서 리액티브 프로그래밍을 제공하는 프레임워크이다.

기존 스프링 MVC를 전부 대체하는 개념은 아니다.

초기 이름은 스프링 웹 리액티브였고, 웹플럭스로 명칭이 변경되었다.

 

MVC와 웹플러스는 공존해서 사용이 가능하다.

- 비동기-논블록킹 리액티브 개발에서 사용

- 효율적으로 동작하고 고성능 웹 애플리케이션 개발

- 서비스간 호출이 많은 마이크로서비스 아키텍처에 적합

 

출처: WebFlux 공식문서

 

Web on Reactive Stack

The original web framework included in the Spring Framework, Spring Web MVC, was purpose-built for the Servlet API and Servlet containers. The reactive-stack web framework, Spring WebFlux, was added later in version 5.0. It is fully non-blocking, supports

docs.spring.io

 

 

MVC와 WebFlux가 공유한 부분과 고유한 부분

 

 

등장하게 된 배경

1) 100% 데이터 처리 논블록킹 개발

2) 웹에서의 요청이 많은 프로그램에 대한 처리 (확장성 및 고효율성)

3) 업, 다운 스트리밍과 Back pressure가 필요

4) 고속 서비스 오케스트레이 개

5) 유사한 프로그래밍 모델의 경

6) 본격적인 함수형 프로그래밍 모델 사용

 -Back pressure(배압) : 다이나믹 풀 방식의 데이터 요청을 통해서 구독자가 수용할 수 있는 만큼 데이터를 요청하는 방식

 

출처: Kakao Dev 2018: 스프링5 웹플럭와 테스트 전략

 

 

WebFlux 사용시 주의사항

1) WebFlux가 왜 필요한지 분명하게 모르는 경우

 -비동기/논블록킹 방식 도입을 하지 않음

 -리액티브 라이브러리(Reactor, RxJava)를 사용하지 않음

2) 블록킹이 서버, 코드, 라이브러리에 존재

 -블록킹 IO, 블록킹 서블릿 필터

 -JPA, JDBC

3) MVC로 개발해도 문제가 없는 경우

 

출처: Kakao Dev 2018: 스프링5 웹플럭와 테스트 전략

 

 

WebFlux에서 제공하는 기능

1) 비동기/논블록킹 API 호출

2) 비동기/논블록킹 데이터 액세스

3) 리액티브 데이터 조회, 전송

4) 비동기 웹 요청 처리

5) 서버/클라이언트 스트리밍

6) Reactor(Flux, Mono), RxJava, Flow등을 이용하는 코드

 

출처: Kakao Dev 2018: 스프링5 웹플럭와 테스트 전략

 

728x90
반응형

BELATED ARTICLES

more