JAVA/Spring

[Spring Web Flux] Reactive programming

코딩공대 2022. 11. 30. 10:04
728x90

1. 리액티브 시스템(Reactive System)

 클라이언트 요청에 반응을 잘 하는 시스템
  • 리액티브 시스템의 특징
리액티브 시스템의 특징
  • Means
    • Means는 리액티브 시스템에서 사용하는 커뮤니티 수단을 의미한다.
      • Message Driven : 메세지 기반 통신을 통해 여러 시스템간의 느슨한 결합을 유지한다.
  • Form
    • Form은 메시지 기반 통신을 통해 리액티브 시스템이 어떤 특성을 가지는 구조로 형성되는지 의미한다.
      • Elastic : 시스템으로 들어오는 요청량이 적거나 많거나 상관없이 일정한 응답성을 유지하는 것을 의미한다.
      • Resillient : 시스템의 일부분에 장애가 발생하더라고 응답성을 유지하는 것을 의미한다.
  • Value
    • 리액티브 시스템의 핵심 가지가 무엇인지를 표현하는 영역이다.
      • Responsive : 리액티브 시스템은 클라이언트 요청에 즉각적으로 응답할 수 있어야 함을 의미한다.
      • Maintainable : 클라리언트의 요청에 대한 즉각적인 응답이 지속가능해야 한다는 것을 의미한다.
      • Extensible : 클라이언트의 요청에 대한 처리량을 자동으로 확장, 축소할 수 있어야 하는 것을 의미한다.

2. 리액티브 프로그래밍(Reactive Programming)

  • 리액티브 프로그래밍의 특징
    • declarative programming paradigm
       : 선언형 프로그래밍 방식을 사용하는 대표적인 모델이다.
    • data streams, the propagation of chance
       : 지속적으로 데이터가 입력으로 들어올 수 있음을 의미하고, 데이터가 지속적으로 발생하는 것 자체를 데이터에 어떤 변경이 발생함을 의미한다.
    • automatic propagation of the changed data flow
       : data streams, the propagation of chance와 같은 의미이다. 지속적으로 발생하는 데이터를 하나의 데이터 플로우로 보고 데이터를 자동으로 전달한다.

3. 리액티브 스트림즈의 구현체

  • Project Reactor
     : 리액티브 스트림즈를 구현한 대표적인 구현체로써 Spring 과 가장 잘 맞는 리액티브 스트림즈의 구현체이다.
  • RxJava
     : NET기반의 리액티브 라이브러리를 넷플릭스에서 Java언어로 포팅한 JVM기반의 리액티브 확장 라이브러리이다.
  • Java Flow API
     : 리액티브 스트림즈를 구현한 구현제가 아니라 리액티브 스트림즈 표준 사양을 Java안에 포함을 시킨 구조이다. 즉, 다양한 벤더들이 JDBC API를 구현한 드라이버를 제공할 수 있도로고 SPI(Service Provider Interface)역할을 하는것 처럼 Flow API도 리액티브 스트림즈 사양을 여러 구현체들에 대한 SPI역할을 한다.
  • 기타 리액티브 확장(Reactive Extensive)
     : 특정 언에에서 리액티브 스트림즈를 구현한 별도의 구현제가 존대한다는 의미이며, 실제로 다양한 프로그래밍 언어에서 리액티브 스트림즈를 구현한 리액티브 확장 라이브러리를 제공하고 있다.
 

'JAVA > Spring' 카테고리의 다른 글

[Spring] Spring Batch(1)  (0) 2023.04.26
[Spring] Spring Boot 3.0  (0) 2023.03.26
[Spring] Java Spring?  (0) 2023.03.23
[Spring Web Flux] Project Reactor  (0) 2022.11.30
[SPRING]Spring Framework  (0) 2022.11.30