📌 1. Flux 란?
리액티브 프로그래밍 모델을 따르는 자바스크립트 라이브러리인 리액터(Reactor) 프로젝트에서 사용되는 개념.
Flux는 Pub-Sub 패턴을 기반으로 하며, 데이터 스트림을 처리하는데 사용된다.
데이터를 스트림으로 처리하는데 적합한 API를 제공하며, 데이터를 처리하는 방법을 정의하는 함수형 인터페이스를 제공.
Flux는 일반적으로 비동기 방식으로 데이터를 처리하기에, 블로킹이 발생하지 않고 더 효율적으로 데이터를 처리할 수 있다.
🎯 Flux 아키텍쳐란?
단방향 데이터 흐름을 통해 보다 예측가능한 상태를 관리할 수 있는 클라이언트 사이드 웹 어플리케이션 아키텍쳐
📌 2. WebFlux란?
WebFlux 란 client, server 에서 reactive 스타일의 어플리케이션의 개발을 도와주는 스프링 모듈입니다. 비동기적으로 HTTP 요청을 처리하는데 사용된다. 이를 통해 스레드를 블로킹하지 않고도 높은 처리량과 저지연 시간의 웹 애플리케이션을 만들 수 있다.
📌. 정리
Flux와 WebFlux는 자바의 Reactive(반응형) Programming 세계에서 관련된 두 가지 개념입니다.
여기서 Reactive Programming은
비동기적인 데이터 흐름을 처리하는 프로그래밍이자, 데이터의 흐름과 변화 전파에 중점을 둔 프로그래밍 패러다임
이다.
Flux는 Reactor 라이브러리에서 제공하는 반응형 스트림 구현.
Publisher가 생성하고 하나 이상의 Subscriber가 사용할 수 있는 데이터 스트림을 나타낸다.
데이터는 동기식 또는 비동기식으로 내보낼 수 있으며, Subscriber는 각 항목에 함수 또는 변환을 적용하여 해당 항목에 대응할 수 있다.
WebFlux는 웹 애플리케이션을 구축하기 위한 반응형 프로그래밍 모델을 제공하는 Spring Framework의 모듈입니다. Reactor의 Flux 및 기타 반응형 프로그래밍 구성 요소 위에 구축되며, HTTP 요청 및 응답을 처리하기 위한 논블로킹 및 이벤트 중심 접근 방식을 제공한다.
개발자는 WebFlux를 사용하여 더 적은 수의 스레드와 리소스로 더 많은 요청을 처리할 수 있으므로 더 확장 가능하고 효율적인 웹 애플리케이션을 만들 수 있다.
WebFlux는 라우팅 정의와 요청을 처리하기 위한 함수형과 반응형 API를 제공할 뿐만 아니라 반응형 데이터 액세스 및 Spring Framework의 기타 다른 요소를 지원한다.
요약하자면, Flux는 범용 반응형 스트림 구현인 반면, WebFlux는 웹 애플리케이션 구축을 위한 반응형 프로그래밍의 구체적인 구현이다.