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..
Webflux 가 성능이 좋다고 하는데, 얼마나 성능이 좋은지 알아보도록 하자. Webflux는 비동기 논 블록킹 방식이므로 Webmvc의 멀티 스레드 방식보다 성능이 우수하다. 적은 리소스로 더 많은 트래픽을 처리가 가능하다. 여기서 좀 헷갈리는 내용을 정리하고 넘어가자 동기-비동기, 블록킹-논블록킹의 차이점은 과연 무엇인가? 동기와 비동기 = 함수가 바로 리턴되는지 여부 블록킹과 논블록킹 = 백그라운드 작업 여부를 확인하는가 여부 동기-블록킹 방식은 함수를 호출하면 백그라운드 작업이 완료되었는 계속 확인하고 완료되면 함수가 리턴되는 구조이고 비동기-논 블록킹 방식은 함수를 호출하고 백그라운드 작업이 끝났는지 확인하지 않고 리턴을 하고 바로 다른 작업을 한다. 백그라운드 작업의 종료 여부는 이벤트로 수..
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..