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): 시스템이 장애 에 직면하더라도 응답성을 유..