Spring Boot

Spring Boot - WebFlux

최-코드 2024. 3. 10. 15:14

WebFlux는 기본적으로 Reactive Programming이다.

Reactive Programming이란 클라이언트가 서버에 요청했을 때 서버가 block되지 않도록 바로 리턴을 해주고, 해당 요청을 기억해놨다가 DB에서 요청 처리가 완료되면 클라이언트에 응답을 해주는 방식을 뜻한다.

요청을 기억해놓기 위해서는 이벤트 루프가 필요하며, Http 프로토콜은 한 요청에 대해 하나의 응답만 전달하므로 나중에 실제로 전달해준 응답을 받을 수 있도록 응답 유지를 해야하는데, 이를 위해 stream(flux)을 만들어야 한다.

추가적으로 WebFlux는 reactive-streams라는 라이브러리의 구현체이다. 여기서 중요한 용어는 publisher와 subscribe인데 subscribe는 응답이 유지되고 있다는 것이고 publisher는 해당 stream으로 데이터를 보내는 것을 말한다.

일반적으로 webflux는 모든 응답을 해주면 연결이 끊긴다. 이 때 계속해서 연결을 유지하려면 SSE를 적용해야 한다.