[PF/PlayAsset] WebFlux개요(2)

2023. 2. 19. 15:02
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
반응형

BELATED ARTICLES

more