[PF/PlayAsset] WebFlux개요 1
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 웹플럭와 테스트 전략
'포트폴리오 > PLAYASSET' 카테고리의 다른 글
[PF/PlayAsset] WebFlux Functional Endpoints (Router-Handler) 구성 및 샘플코드 (0) | 2023.02.27 |
---|---|
[PF/PlayAsset] WebFlux개요(2) (0) | 2023.02.19 |
[PF/PlayAsset] 개발환경구성(4) - AWS + Docker (0) | 2022.11.09 |
[PF/PlayAsset] 개발환경구성(3) - Property, R2dbc (0) | 2022.09.26 |
[PF/PlayAsset] 개발환경구성(2) - WebFlux (2) | 2022.09.10 |