Spring Reactive Web Application
-
Reactor 개요Spring Reactive Web Application/Project Reactor 2023. 7. 22. 06:00
Reactor Reactor는 Spring Framework 팀의 주도하에 개발된 리액티브 스트림즈의 구현체로서 Spring Framework 5 버전부터 리액티브 스택에 포함되어 Spring WebFlux 기반의 리액티브 애플리케이션을 제작하기 위한 핵심 역할을 담당합니다. 리액티브 스트림즈의 구현체인 Reactor는 리액티브 프로그래밍을 위한 라이브러리라고 정의할 수 있습니다. 따라서 Reactor Core 라이브러리는 Spring WebFlux 프레임워크에 라이브러리로 포함되어 있습니다. Reactor 특징 Reactive Streams: Reactor는 리액티브 스트림즈 사양을 구현한 리액티브 라이브러리입니다. Non-Blocking Java's functional API: Reactor에서 Pu..
-
Blocking I/O와 Non-Blocking I/OSpring Reactive Web Application/Reactive Programming 2023. 7. 22. 05:00
웹 애플리케이션에서 I/O는 File I/O, DB I/O, 네트워크 I/O 등이 있습니다. Blocking I/O I/O 작업이 진행되는 동안 요청 스레드가 자신의 작업을 중단한 채, I/O 작업이 끝날 때까지 대기하는 것을 의미합니다. Blocking I/O 방식의 문제점을 보완하기 위해 멀티스레딩 기법으로 추가 스레드를 할당하여 차단된 시간을 효율적으로 사용할 수는 있습니다. 멀티스레딩 기법의 문제점 컨텍스트 스위칭(Context Switching)으로 인한 스레드 전환 비용이 발생합니다. Note. 컨텍스트 스위칭(Context Switching) 실행되고 있는 프로세스 정보는 CPU의 레지스터에 저장됩니다. 프로세스들이 번갈아 가며 실행되는 과정에서 PCB(Process Control Block..
-
리액티브 스트림즈(Reactive Streams)Spring Reactive Web Application/Reactive Programming 2023. 7. 21. 05:00
리액티브 스트림즈(Reactive Streams) 데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양입니다. 리액티브 스트림즈를 구현한 구현체로 RxJava, Reactor, Akka Streams, Java 9 Flow API 등이 있습니다. 리액티브 스트림즈 구성요소 Publisher: 데이터를 생성하고 통지(발행, 게시, 방출)하는 역할을 합니다. Subscriber: 구독한 Publisher로부터 통지(발행, 게시, 방출)된 데이터를 전달받아서 처리하는 역할을 합니다. Subscription: Publisher에 요청할 데이터의 개수를 지정하고, 데이터의 구독을 취소하는 역할을 합니다. Processor: Publisher와 Subscri..
-
리액티브 시스템과 리액티브 프로그래밍Spring Reactive Web Application/Reactive Programming 2023. 7. 20. 07:00
리액티브 시스템(Reactive System) 리액티브 시스템이란 반응을 잘하는 시스템으로 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화합니다. 리액티브 선언문으로 리액티브 시스템 이해하기 리액티브 선언문: https://www.reactivemanifesto.org/ MEANS: 비동기 메시지 기반의 통신을 통해 구성요소들 간 느슨한 결합, 격리성, 위치 투명성을 보장합니다. FORM: 비동기 메시지 통신 기반하에 탄력성과 회복성을 가지는 시스템이어야 합니다. Elastic(탄력성): 시스템으로 유입되는 입력이 많든 적든 간에 시스템에서 요구하는 응답성을 일정하게 유지하는 것을 말합니다. Resilient(회복성): 시스템에 장애가 발생하더라도 응답성을 유지하는 것을 의미합니다. VAL..