[PF/PlayAsset] WebFlux개요 1

    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
    반응형

    댓글