[PF/PlayAsset] WebFlux개요(2)

    728x90
    반응형

    2023.02.19

     

     

    이전 포스팅

     

     

    [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에서 새로 등장한, 웹 애플리케이션에서

    limreus.tistory.com

     

     

     

    리액티브(함수형) 프로그래밍

    1) 연속적으로 일어나는 이벤트를 다루는 프로그래밍 기법

    2) UI 이벤트, 비동기적인 I/O이벤트, 통제 불가능한 이벤트 스트림 처리

    3) 동시성, 비동기/논블록킹 호출을 다루는데 탁월함

    4) 조합 가능한 비동기 로직을 다루는 함수형 프로그래밍

     

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

     

     

    동기/블록킹과 비동기/논블록킹 API 호출의 차이점

    1) 동기/블록킹 API 호출 - REST API: 쉽고 간단함, 시스템 특성에 따라 매우 비효율적이 될 수도 있음

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

     -AsyncRestTemplate(Spring4)

     -Async/Await (Java8+)

     -WebClient (Spring5)

     -장점: 확장성이 뛰어나고 높은 처리율과 낮은 레이턴시를 가지는 효율적인 서버 구성이 가능함

     -단점: 장점을 얻을 수 있는 경우가 적음. 코드가 복잡하고 이해하기 어려워질 수 있음

     

     

    Reactive API 테스트

    1) 비동기 코드를 검증하는 '동기방식' 테스트

    2) 비동기/노블록킹의 특성에 주의

    3) 블록킹/동기화가 필요: Flux.subscribe() / Asyne / Await

     

     

    WebFlux API

    1) RestTemplate

     -동기/블록킹

    2) AsyncRestTemplate

     -비동기/논블록킹

     -Future: 콜백, CompletionStage

    3) WebClient

     -비동기/논블록킹

     -Flux/Mono Request, Response

     -Streaming 지원

     -BackPressure 지원

     

     

    WebFlux의 새로운 아키텍처

    1) 기존 SpringMVC 동기/블록킹 처리는 서버의 제약 위에 개발2) 서블릿 컨테이너를 사용할 수 있으나 의존적이지 않음 (Netty)3) 논블록킹 네트워크/논블로킹 API4) 논블록킹 데이터 스트림5) 확장성이 뛰어나고 재구성이 손쉬움6) 함수형 엔드포인

     

    728x90
    반응형

    댓글