Spring Reactive Web Application/Reactive Programming
-
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..