webflux
-
WebFlux에서 Blocking을 처리하는 방법카테고리 없음 2025. 2. 4. 14:25
WebFlux 프로그래밍에서 아래 Blocking 처리에 대한 사항만 잘 준수한다면 WebFlux의 내부 구현이나 세부사항을 모르더라도 잘 돌아가는 애플리케이션을 만들 수 있다.1. Blocking이란?작업을 처리하는 스레드가 외부 리소스의 처리를 기다려야해서 작업이 중지된 채로 기다리고 있는 상태를 의미한다.외부 리소스의 처리란 Network, Database I/O등을 의미한다.파일 읽기, 쓰기, DB 조회나 외부 서비스 api를 호출 하는 경우 등이 해당된다.객체의 변환이나 복잡한 계산 등 로직 처리는 현재 작업을 하고 있는 스레드가 할당 받은 자원으로 처리해야 하는 작업임으로 Blocking으로 봐서는 안된다. 2. WebFlux에서는 Blocking을 어떻게 비동기로 처리할까? WebFlux의 ..
-
비동기 처리란 무엇인지와 Netty, Spring WebFlux 개요Spring/WebFlux 2025. 2. 3. 19:29
1. Netty와 WebFlux 탄생 배경기존 동기 방식 웹 서버(톰켓)에서는 해결하기 힘든 문제들이 있었다.요청이 아주 많아질 경우 스레드풀이 충분하지 않다면 요청 처리가 지연될 수 있는 문제잦은 스레드 스위칭으로 인한 컨텍스트 스위칭 비용 문제소켓에 데이터를 쓸 때 애플리케이션의 데이터를 커널 버퍼로 한 번 복사해야 하는 문제클라이언트의 요청을 Accept, Read, Write할 때 발생하는 블로킹 문제 이러한 문제들을 해결하고 더 높은 성능을 제공하기 위해 비동기 방식 웹 서버(Netty)가 등장하게 된다.Netty는 위 문제들을 이벤트 루프 패턴과 NIO 기반의 기술들(DirectByteBuffer 등)을 활용해서 효율적으로 해결한다.이 때 이벤트 루프 패턴은 적은 수의 스레드만을 사용하는데,..
-
[Spring WebFlux] 기존 웹 서버와의 차이점과 꼭 주의해야할 점 (Netty)Spring/WebFlux 2024. 11. 18. 20:03
1. Netty와 Tomcat의 차이Spring WebFlux는 논블로킹 리액티브 프로그래밍 모델을 지원하며 기본적으로 Netty를 웹 서버로 사용한다.이는 블로킹 기반 웹 서버인 Tomcat과는 스레드 관리 방식 등 다소 차이가 있기에 그 차이를 이해해야만 효율적인 reactive 프로그래밍이 가능하다.(Tomcat과 같은 서블릿 컨테이너를 활용해서도 Flux와 Mono data stream을 반환할 수 있기는 하다.) 2. 이벤트 루프를 사용하는 Netty의 특성Netty는 이벤트 루프 기반의 네트워크 애플리케이션 프레임워크로, 논블로킹 I/O 작업을 효율적으로 처리하기 위해 설계되었다.Tomcat은 스레드 풀을 두고 다수의 스레드를 만들어두고 개별 요청마다 스레드를 할당한다.반면에 Netty는 쓰..