Server/Spring Reactive 5

Spring Webflux - ServerSentEvent 이해하기!

HTML 삽입 미리보기할 수 없는 소스 Server Sent Event Server Sent Event는 서버에서 클라이언트에게 일방적으로 이벤트를 전달하는 방식이다. 클라이언트에서 서버의 이벤트를 구독하기 위해서는 Polling 방식을 주로 사용했다. Polling Polling 방식은 Client에서 Server에게 특정 주기로 요청을 보내서 데이터를 조회하는 방식이다. 구현이 간단하지만, 실시간성이 떨어지고 불필요한 네트워크 요청을 지속적으로 하기 때문에 자원을 낭비하게 된다. Long Polling 앞선 Polling의 문제를 해결하기 위해 Long Polling 기법이 나왔다. Long Polling 방식은 서버가 요청을 받은 후 데이터가 생길 때까지 기다렸다가 응답을 보내는 방식이다. 이 방식..

Spring Webflux란 무엇인가?! - 3. Spring Webflux 이해하기!

해당 포스팅은 Netty, Reactor를 넘어서 Spring Webflux에 대한 자세히 다룬다. Spring Reactive Stack 1편에서 봤던 Spring Reactive Stack을 다시 살펴보고 넘어가자. WebFluxAutoConfiguration WebFluxAutoConfiguration은 SpringWebflux 사용을 위한 필수적인 AutoConfiguration이다. 아래 코드를 보자. @AutoConfiguration(after = { ReactiveWebServerFactoryAutoConfiguration.class, CodecsAutoConfiguration.class, ReactiveMultipartAutoConfiguration.class, ValidationAutoC..

Spring Webflux란 무엇인가?! - 2. Reactor 이해하기!

이번 포스팅에서는 Project Reactor의 사용 방법에 대해 다룬다. Project Reactor 아래 포스팅에서 ReactiveProgramming에 대해 설명했고, Reactive Stream과 Project Reactor에 대해서도 간단하게 설명했었다. https://jaehoney.tistory.com/359 개념 자체가 생소하다면 해당 포스팅(이전 편)을 참고하시길 추천한다. Reactive Stream을 이해하고 있다면 굳이 보지 않아도 괜찮다. 첫 번째로 살펴볼 것은 Subscribe이다. Subscribe Mono와 Flux가 구현하는 CorePublisher 인터페이스이다. public interface CorePublisher extends Publisher { void subsc..

Spring Webflux란 무엇인가?! - 1. Netty 이해하기!

Reactive Programming with Spring Boot 아래는 Spring 공식문서에 나와있는 Spring MVC와 Spring Webflux에 대한 설명이다. Spring MVC는 동기 블로킹 기반의 서블릿 API와 request-per-thread 모델을 제공하고, Spring Webflux는 대량의 동시 커넥션이 가능한 Non-Blocking 웹 프레임워크이다. 해당 부분을 조금 더 풀어서 알아보자. Spring Webflux Spring MVC는 request-per-thread 모델이기 때문에 만약 1만개 이상의 요청이 동시에 들어온다면 쓰레드가 부족하게 된다. Spring Webflux는 쓰레드를 가능한 최소한으로 사용하는 모델과 리액티브 프로그래밍 라이브러리를 제공한다고 생각하면..

Reactive Programming(리액티브 프로그래밍)이란 무엇인가?!

보통 증권이나, 대량의 트래픽이 발생하는 거래소, 뱅킹 시스템에서 필요로 하는 기술 스택 중에 아래의 것이 있다. Reactive Programming, Parallel Programming, Webflux, Netty,, … 리액티브 프로그래밍에 대해 알아보자. Reactive Programming(리액티브 프로그래밍) Reactive의 정의는 "reacting to events or situations rather than acting first to change or prevent something" 이다. 이를 직역하면 "무언가를 바꾸거나 예방하기 위해 먼저 행동하기 보다는 사건이나 상황에 반응하는"이다. Reactive Programming은 데이터 스트림과 변경 사항 전파를 중심으로 하는 비동..