Cold와 Hot의 의미 간단히 얘기하자면, 컴퓨터 시스템에서 Cold와 Hot의 의미는 다음과 같습니다. Cold는 무언가를 새로 시작하고, Hot은 무언가를 새로 시작하지 않는다. 이렇게만 보면 어떤 의미인지 잘 와닿지 않을 수 있습니다. 따라서, 예시를 몇 가지 들어보겠습니다. Hot Swap 컴퓨터 시스템에서 Hot Swap이란, 전원을 끄거나 시스템을 중지시키는 행위 없이 장치를 교체해서 사용이 가능한 기능을 말합니다. 즉, 전원이나 시스템을 껐다 키는 행위를 새로 시작한다는 의미로 볼 수 있고, 이 행위를 하지 않는다는 것입니다. 위에서 말한 "무언가를 새로 시작하지 않는다."와 대응되는 의미라고 볼 수 있습니다. 반대로, Cold Swap의 경우는 컴퓨터에 연결하거나 제거하기 위해 완전히 컴..
마블 다이어그램(Marble Diagram)이란? 마블 다이어그램은 여러 가지 구슬 모양의 도형으로 구성된 도표 로 Reactor에서 지원하는 Operator를 이해하는 데 중요한 역할을 합니다. 비동기적인 데이터 흐름을 시간의 흐름에 따라 시각적으로 표시한 다이어그램 이라고 이해 할 수 있습니다. 위 그림은 마블 다이어그램의 기본 구성을 설명한 그림입니다. 하나씩 살펴 봅시다. 다이어그램에는 두 개의 타임라인이 존재하는데, 첫째가 1과 같이 Publisher가 데이터를 emit하는 타임라인입니다. Operator 함수(5)를 기준으로 상위에 있는, 즉 Upstream의 Publisher입니다. Reactor에서 Flux의 경우, Source Flux라고 부릅니다. 2는 Publisher가 emit하는 ..
Reactor란? Reactor는 리액티브 스트림즈의 구현제 입니다. Spring WebFlux 기반의 리액티브 애플리케이션을 제작하기 위한 핵심 역할을 담당하고 있습니다. 쉽게 말해서 리액티브 프로그래밍을 위한 라이브러리라고 정의 할 수 있습니다. 따라서, Reactor Core 라이브러리는 Spring WebFlux 프레임워크에 라이브러리로 포함되어 있습니다. Reactor의 특징 아래 사진은 Reactor 공식 홈페이지의 메인 화면입니다. 이를 통해 Reactor가 어떤 특징들을 가지고 있는지 알아보겠습니다. Reactive Streams Reactor는 리액티브 스트림즈 사양을 구현한 리액티브 라이브러리입니다. Non-Blocking Reactor는 JVM 위에서 실행되는 Non-Blocking ..
I/O I/O란 간단히 얘기하면 데이터의 입력(Input)과 출력(Output) 을 일컫는 말입니다. 단순히 파일 I/O를 넘어서, 데이터를 조회하거나 추가하는 DB I/O, 네트워크 통신에서 네트워크 I/O 등이 포함됩니다. I/O는 어플리케이션의 성능에 가장 영향을 많이 미칩니다. 따라서, 높은 성능을 보장해야 하는 어플리케이션 입장에서 I/O는 큰 장애물이 될 수 있습니다. 이 I/O의 두 가지 방식인 Blocking I/O와 Non-Blocking I/O에 대해 알아봅시다. Blocking I/O Blocking I/O란, I/O 작업이 진행되는 동아 유저 프로세스가 자신의 작업을 중단한채 I/O가 끝날 때까지 대기하는 방식 을 의미합니다. 즉, 하나의 스레드가 I/O에 의해서 차단되어 대기하는 ..
리액티브 스트림즈가 무엇인지 살펴보고, 리액티브 스트림즈의 핵심 컴포넌트인 Publisher와 Subscriber의 동작 과정에 대해서 알아보겠습니다. 리액티브 스트림즈란? 리액티브한 코드 작성과 구성을 용이하게 해 주는 리액티브 라이브러리를 어떻게 구현할지 정의해 놓은 표준 사양을 리액티브 스트림즈라고 합니다. 한마디로, 데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양 이라고 표현할 수 있습니다. 이를 구현한 구현체에는 RxJava, Reactor, Akka .. 등 다양한 것들이 있습니다. 리액티브 스트림즈 구성요소 리액티브 스트림즈를 통해 구현해야 하는 API 컴포넌트에는 Publisher, Subscriber, Subscription,..
리액티브 시스템과 리액티브 프로그래밍이 무엇인지 살펴봅시다. 리액티브 시스템(Reactive System)이란? 리액티브 시스템은 쉽게 말해 반응을 잘하는 시스템입니다. 반응을 잘한다는 것은 클라이언트의 요청에 머뭇거리지 않고 반응을 잘해서 즉시 응답해 주는 것을 의미합니다. 다시 말해서, 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화한다 고 볼 수 있습니다. 리액티브 선언문 리액티브 선언문은 리액티브 시스템 구축을 위한 일종의 설계 원칙이자 리액티브 시스템의 특징 을 나타낸 것입니다. 자세한 내용은 아래 링크에서 확인 할 수 있습니다. https://www.reactivemanifesto.org/ko 리액티브 선언문 탄력성(Resilient): 시스템이 장애 에 직면하더라도 응답성을 유..