Spring/Reactive Spring3 [WebFlux] Thread Test 🐻 Overview 웹플럭스는 흔히 비동기/논블로킹 이벤트루프 모델이라고 말합니다. 적은 수의 쓰레드로 많은 요청을 처리할 수 있는 걸 장점으로 내세우고 있는데, 항상 의문이 있었습니다. 흔히 블록킹 구간이라고 하는 네트워크 I/O 또는 데이터베이스 I/O 작업은 결국 어디선가 또는 누군가가 대기했다가 결과를 받아서 처리해야 합니다. 기존 MVC 모델에서 비동기 처리를 하면 별도의 쓰레드를 사용해서 처리했었기 때문에 큰 의문이 없었지만 쓰레드 하나로는 어떻게 처리하는지 궁금했습니다. 만약 웹플럭스에서도 별도 쓰레드풀을 만들어 처리한다면 요청량 증가에 따라 점점 백그라운드 쓰레드가 많아질거고 적은 수의 쓰레드로 컨텍스트 스위칭 비용 최소화 라는 장점이 무색해질 것 같았습니다. 이것저것 찾아본 결과 I/O .. 2022. 9. 7. [WebFlux] 기본 개념 / Mono와 Flux 🐻 WebFlux란? Spring WebFlux는 Spring 5에서 새롭게 추가된 모듈입니다. WebFlux는 클라이언트, 서버에서 reactive 스타일의 어플리케이션 개발을 도와주는 모듈이며, reactive-stack web framework이며 non-blocking에 reactive stream을 지원합니다. □ 장점 : 고성능, spring 과 완벽한 통합, netty 지원, 비동기 non-blocking 메세지 처리 □ 단점 : 오류처리가 다소 복잡하다. Back Pressure 기능 없음 스프링5는 Spring Boot 2 부터 도입이 되었으며, Spring Boot 2 의 stack 는 아래와 같습니다. Reactive Stack 를 사용할지, Servlet Stack 를 사용할지 선택.. 2022. 8. 23. [Spring] 리액티브(Reactive) 프로그래밍 Overview 스프링 5 버전이 도입되면서, 스프링 프레임워크는 새로운 도전에 직면하게 되는데 바로 "리액티브 프로그래밍"이다. 스프링 프레임워크 오픈소스를 리딩하고 있는 "Pivotal"에서는 오래전부터 "리액티브 프로그래밍"을 준비하고 있었는데, 프로젝트 이름은 "Reactor" 이다. "Reactor" 는 "Reactive Streams"의 구현체로서, 스프링 5 리액티브 프로그래밍의 핵심 라이브러리이다. 많은 개발자들이 Reactor 를 이해하지 않고, Webflux 를 성급하게 도입하려는 시도를 많이 하는데, 바람직하지 않다고 생각한다. "Reactor"를 먼저 이해하고 Webflux 를 도입해야 한다는 점을 반드시 명심하길 바란다. Reactive Programming(리액티브 프로그래밍) .. 2022. 8. 11. 이전 1 다음