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,..