DevBoi

스프링의 Webflux 란? 본문

Develop/[WebFlux]

스프링의 Webflux 란?

HiSmith 2021. 7. 11. 14:22
반응형

최근에 많이 나온 지식중에 하나인 , webflux가 있다.

이게 뭘까...? 언뜻보기에는 프론트엔드 사용기술같기도하다...

 

스프링의 주요기능, 

IOC : 제어의 역전, 개발자가 프로그램 코드를 제어하고, 객체 생성 부터 생명주기를 관리했다면,

스필은 컨테이너가 이걸 제어한다.

DI : 객체 내부가 아닌, 외부에서 값을 set해서 세팅해주는 것이다.

 

그러면 webflux 는? 이건 스프링 5에서 쓰는 것이다.

Spring framework 5에서는 다음과 같은 특징들을 가진다.

 

-JDK 8부터 지원

-Kotlin 지원

-호환 라이브러리 변경, 

-Reactive Progamming 

 

Reactive Programming??이건 뭥미?

프론트 리액트랑관련이 있는건가??

 

=> 응 전혀 아니얌

 

 

1. Webflux 는 적은 수의 스레드로 , 동시성을 처리한다.

2. Non-blocking

3. Functional Programming

 

우선 스프링의 동작 구성 및 스레드 수여 방식은 다음과 같다.

클라이언트 요청 -> 쓰레드 받음, -> 끝나면 쓰레드 회수 및 새로운 클라이언트에게 쓰레드 부여

근데, 쓰레드수가 부족하면, 클라이언트는 대기 큐에 쌓이게 되고, 이 대기큐에 있는 녀석에게 쓰레드를 차례대로 준다.

 

Webflux는 사용자가 많아지면서 쓰레드가 많아지면, Latency에 대해서발생할수 있는 것에 대해서

방어를 해준다.

Spring 이 스레드를 늘려서 동시성을 처리한다면, Webflux 는 적은 수의 쓰레드로 최대의 효율을 준다.

이말은 즉슨 가성비가 좋은거지 , 빠른건 아니다.

 

Functional Programming

-> 함수자체가, 파라미터나 return 값이 될수 있다.

 

 

추가로 JPA를 사용하면, 해당 Webflux 를 사용불가하다.

현재 상황에서는 잘 안쓸것같긴한데...

 

다음에 추가 분석을 해보자

 

반응형