분류 전체보기 84

Reactive Streams

Overview WebFlux를 제대로 이해하기 위해선 Reactive Streams를 이해할 필요가 있습니다. Reactive Streams는 reactive-streams.org에서 아래와 같이 정의하고 있습니다. Reactive Streams is a standard for asynchronous data processing in a streaming fashion with non-blocking back pressure. Reactive Streams은 논블로킹(Non-blocking), 백 프레셔(Back Pressure)를 이용한 비동기 데이터 처리의 표준입니다. 논블로킹(Non-blocking), 백 프레셔(Back Pressure)는 이미 블로그에 있는 내용이니 참조하시면 좋겠습니다. Re..

IT/Reactive Streams 2020.11.19

Event-Driven & WebFlux

Event-Driven Programming Event-Driven Programming은 기존의 절차적 실행흐름이 아니라 이벤트에 의해 실행흐름이 정해지는 프로그래밍 방법입니다. GUI(Graphical User Interface)가 발전하면서 Event-Driven 방식도 발전해왔습니다. Event-Driven Architecture 위 그림은 Event-Driven Programming 방식을 지원하는 Event-Driven Architecture의 간단한 모식도입니다. 주요 컴포넌트와 그 역할은 아래와 같습니다. Event Loop Event를 적재하거나 Event의 상태를 관찰합니다. Event의 상태 또는 특정 조건에 따라 Event Handler에게 Event 처리 작업을 위임합니다. 상황에..

IT/Spring WebFlux 2020.11.10

Back Pressure

Overview 배압(Back Pressure)은 시스템의 한 구성요소가 감당할 수 있는 만큼의 작업량을 할당하여 전체 시스템을 안정적으로 유지하는 기법을 말합니다. Back Pressure는 사실 옵져버 패턴(Observer Pattern)의 데이터를 처리하는 방식과 유사합니다. 크게 Push 방식과 Pull 방식이 중 배압은 바로 Pull 방식의 데이터 처리 기법입니다. Push Push 방식은 Publisher가 Subscriber에게 이벤트를 밀어 넣는 방식입니다. 그런데 Publisher는 Subscriber의 상태를 고려하지 않고 이벤트를 전달하는 데에만 충실합니다. 만약 Subscriber가 이벤트를 빠르게 처리하지 못하면, 처리되지 못한 이벤트는 큐(Queue) 메모리 버퍼에 쌓이게 됩니다..

IT/Spring WebFlux 2020.11.07

Non-Blocking

Overview Spring Webflux를 적용한 애플리케이션은 비동기 논블러킹(Asynchronous Non-Blocking) 하다고 합니다. 과연 논블러킹하다는 말은 어떤 의미일까요? 논블러킹을 이해하기에 앞서 Blocking I/O, Synchronous Non-Blocking I/O를 순차적으로 보고 최종적으로 논블로킹(Asynchronous Non-Blocking I/O)을 알아보겠습니다. Blocking I/O Blocking I/O 모델에서 애플리케이션은 커널에 I/O 요청을 보내고 응답이 오기 전까지는 Block 상태가 되어 다른 작업을 수행할 수 없습니다. 일반적인 Spring MVC(서블릿 기반)와 RDBMS를 사용하고 있으면 대부분 이 Blocking I/O 모델을 따릅니다. 대부분..

IT/Spring WebFlux 2020.11.07

Spring WebFlux

Overview Spring WebFlux는 Spring 5에 추가되었습니다. 이로써 Spring은 리액티브 스택(Reactive Stack) & 서블릿 스택(Servlet Stack) 두 가지 형태의 웹 프래임워크를 제공하게 되었습니다. WebFlux는 기본적으로 Netty, Undertow 그리고 Servlet 3.1+ containers 이상의 서버에서 동작합니다. 또한, WebFlux는 Reactive Streams를 사용하여 Non-Blocking과 Back Pressure를 지원합니다. Reactive Streams, Non-Blocking, Back Pressure의 의미는 다음 기회에 보다 자세히 정리하도록 하겠습니다. Features WebFlux는 비동기 논블러킹(asynchronous..

IT/Spring WebFlux 2020.11.06

Reactive?

Overview 최근 리액티브(응답성)란 이야기를 빈번하게 듣습니다. 리액티브란 프로그래밍 모델의 일종으로 보다 구체적으로 이해하기 위해선 리액티브의 유연성(Elastic)과 탄력성(Resilient)을 이해할 필요가 있습니다. 유연성(Elastic) 시스템의 처리 요구량이 변화하더라도 응답성을 유지하는 특성을 유연성이라고 합니다. 리액티브 시스템은 부하의 변화에 따라 시스템의 처리량을 증가시키거나 감소키면서 변화에 대응합니다. 리액티브 시스템은 입력부하를 성공적으로 분산시켜 유연성을 보여야 합니다. 탄력성(Resilient) 시스템 장애에 직면하더라도 응답성을 유지하는 특성을 탄력성이라고 합니다. 탄력성이 없는 시스템은 장애가 발생할 경우, 응답성을 잃을 수 있습니다. 리액티브 시스템은 일부에서 장애가..

IT/Spring WebFlux 2020.11.05

[논문] 기호 정리

논문을 읽다보면 다양한 수학 기호를 어떻게 읽어야 하는지 헷갈릴때가 있습니다.  아래와 같이 정리를 해두었습니다.  (1) 알파(alpha, Α α) 모양 : 아랄 해(Aral sea) 일대의 지도 소리의 뜻 : 아랄의 평화  (2) 베타(beta, Β β) 모양 : 활 소리의 뜻 : 전쟁(battle) Β는 활시위를 묶어 놓은 그림이고, β는 활시위를 풀어 놓은 그림입니다.  (3) 감마(gamma, Γ γ ) 모양 : 말의 머리·귀·목을 그린 것 소리의 뜻 : 위대한 말(great mare) Γ와 γ은 말의 머리 부위를 측면에서 본 그림입니다. Γ은 다 성장한 말의 당당한 모습이고, 은 어린 말을 그린 것으로 볼 수 있습니다.   (4) 델타(delta, Δ δ) 모양 : 대문자는 삼각주, 소문자는 ..

수학 2015.11.30
반응형