Spring WebFlux 란?
•
저희가 WebFlux 를 사용하고 싶다는건 리액티브한 서비스를 만들고 싶다는 의미라고
보셔도 됩니다.
•
WebFlux 는 리액티브한 서비스를 쉽게 개발할 수 있도록 도와주는 스프링
프레임워크의 라이브러리입니다.
•
리액티브 서비스에서는 비동기 웹 서버의 활용이 중요한데, WebFlux 는 Netty 와 같은
비동기 웹 서버와 스프링 애플리케이션을 자연스럽게 통합할 수 있도록 지원합니다.
•
이 외에도 스트림 방식의 데이터 처리, 논 블로킹 API 제공 등 다양한 리액티브
기능들을 포함하고 있습니다.
리액티브한 서비스란?
•
"리액티브하다"는 것은 요청에 빠르고 효율적으로 반응한다는 의미입니다.
•
사용자의 요청이 들어왔을 때 자원을 효율적으로 활용하여 신속하게 처리하고,
즉각 즉각 반응하는 서비스라고 할 수 있을것 같습니다.
•
이렇게 “리액티브”하게 만들기 위해서는 비동기 웹 서버의 활용이 필수적입니다.
왜 리액티브한 서비스에 비동기 웹 서버가 필수일까?
◦
동기 블로킹 방식 (Tomcat 이라는 방의 사람) : 일처리가 끝날때까지 대기
◦
비동기 논블로킹 방식 (Netty 이라는 방의 사람) : 다른 일과 병행 가능
•
Webflux는 Netty와 완벽한 통합 지원
•
WebClient, R2DBC 등 다양한 비동기 API 쉽게 연동
•
Publisher-Subscriber 패턴
•
Stream
리액티브한 서비스 (Tomcat ⇒ Netty + Webflux)


