본문 바로가기

Webflux4

Webflux Functional Endpoints 시작하기 Webflux 는 아래 처럼 두개의 프로그래밍 모델을 지원하는데, 이번글에서는 Functional 방식을 알아보도록 하자 Functional routing and handling Annotation-based reactive components 1. RouterFunction RouterFunction 은 기존 개발자에게 익숙한 @RequestMapping 어노테이션과 동일한 역활을 한다. 하지만 가장 큰 차이점은 RouterFunction 은 동작까지 정의한다라는 것이다. @RequiredArgsConstructor @Configuration public class Router { private final PersonHandler handler; @Bean public RouterFunction per.. 2020. 9. 30.
Webflux vs WebMvc 성능 비교 Webflux 가 성능이 좋다고 하는데, 얼마나 성능이 좋은지 알아보도록 하자. Webflux는 비동기 논 블록킹 방식이므로 Webmvc의 멀티 스레드 방식보다 성능이 우수하다. 적은 리소스로 더 많은 트래픽을 처리가 가능하다. 여기서 좀 헷갈리는 내용을 정리하고 넘어가자 동기-비동기, 블록킹-논블록킹의 차이점은 과연 무엇인가? 동기와 비동기 = 함수가 바로 리턴되는지 여부 블록킹과 논블록킹 = 백그라운드 작업 여부를 확인하는가 여부 동기-블록킹 방식은 함수를 호출하면 백그라운드 작업이 완료되었는 계속 확인하고 완료되면 함수가 리턴되는 구조이고 비동기-논 블록킹 방식은 함수를 호출하고 백그라운드 작업이 끝났는지 확인하지 않고 리턴을 하고 바로 다른 작업을 한다. 백그라운드 작업의 종료 여부는 이벤트로 수.. 2020. 4. 6.
Spring Webflux Cold / Hot 이해하기 스프링의 웹플럭스에는 Flux와 Mono 라는 Reactive Streams Publisher 의 구현체가 있다. Flux 와 Mono 는 두 종류의 발행 방식이 있는데, Cold 과 Hot 방식이 존재한다. Cold sequences subscribe 할때 마다, 매번 새로운 데이터를 발행하고 동작하는 방식이다. 그리고 subscribe 를 하기 전에는 동작하지 않는다. Webflux 에서는 일반적으로 Cold 방식으로 동작한다. 먼저 Mono 로 예를 들어 보자. Mono body = httpGet(); body.subscribe(s -> log.info("Subscriber 1 : " + s.length())); body.subscribe(s -> log.info("Subscriber 2 : " +.. 2020. 3. 29.
Spring Webflux, 이해하고 사용하자 Webflux 란? Webflux를 먼저 이해하려면, reactive streams 를 먼저 이해해야 한다. reactive streams 란? reactive-streams.org 에서는 다음과 같이 정의하고 있다. Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. 대충 해석하면 "논블로킹(Non-blocking) 백프레셔(back pressure)를 이용한 비동기 데이터 처리의 표준이다" Reactive Streams 배경 2013년에 Netflix와 Pivotal, Lightbend의 엔지니어들이 처음 개발하기 시작하였고, Net.. 2020. 3. 21.