Spring

Reactive Programming

코드파고 2022. 6. 30. 22:55

https://tech.io/playgrounds/929/reactive-programming-with-reactor-3/Intro

 

Introduction to Reactive Programming - Reactive Programming with Reactor 3

Explore this playground and try new concepts right into your browser

tech.io

해당 링크를 통해 공부하며 정리했습니다!
구글 번역과 상상력으로 정리한 것이라 틀릴 수 있습니다😢

 

Reactor 3는 JVM에 Reactive Programming 패러다임을 제시하는 라이브러리다.

 

왜 리액트 프로그래밍을 쓸까?

  • 리액트 프로그래밍은 비동기 파이프라이닝 처리를 위해 선언적 프로그래밍(함수형 프로그램)을 쓸 경우에 제시하는 새로운 패러다임이다
  • 유저에게 데이터가 PUSH 될 경우 이용 가능해지는 이벤트 기반 모델이며, 비동기 이벤트의 연속이다.
  • 클라이언트와 리소스가 증가할 때 굉장히 효과적이며, 로우 레벨의 동시적/병렬적 코드를 작성하지 않아도 된다.
  • 비동기 & 논블로킹 의 핵심 기둥을 중심으로 구축되며, Reactive Programming은 JDK의 콜백 기반 API를 대체할 수 있다.
  • 비동기 코드를 읽기 쉽고 유지보수하기 편하게 만들어준다. 

Reactive Streams(반응형 스트림)

반응형 스트림을 JVM상에서 표준화하려고 업계가 많이 노력했다. 더 나아가 상호 운용이 가능하게끔 구체적으로 명시하고 있다. Reactor3 뿐만 아니라 RxJava 2 이상, Akka Streams, Vert.x, Ratpack 또한 구현체에 포함된다.

TCK를 포함한 4개의 간단한 인터페이스를 가지고 있으며, 핵심 부분이기 때문에 이 인터페이스들을 간과해서는 안 된다.

Technology Compatibility Kit(TCK)
A suite of tests that at least nominally checks a particular alleged implementation of a Java Specification Request (JSR) for compliance. It is one of the three required pieces for a ratified JSR in the Java Community Process, which are: the JSR specification.
[번역]
TCK(Technology Compatibility Kit)는 규정 준수를 위해 JSR(Java 사양 요청)의 특정 구현이라고 최소한 명목상 확인하는 테스트 모음입니다. JSR 사양은 Java Community Process에서 비준된 JSR의 세 가지 필수 요소 중 하나입니다.

하지만 유저의 시각에서는 상당히 Low-Level이다. 그래서 Refactor3은 다양한 상황에 걸쳐 영향력을 행사하기 위해 Reactive Stream Publisher 상에 구축해 더 높은 레벨의 API를 목표로 한다.

 

상호작용

Publisher : 데이터를 생산하고, Subscriber가 Register(Subscribe)하지 않으면 아무 것도 하지 않는다!

Subscriber : Register(Subscribe)를 통해 데이터를 받아온다.

Reactor는 Operator 개념을 추가한 것이며, 함께 연결되어 각 단계에서 데이터에 처리될 내용을 설명한다

Operator는 중간 Publisher 같이 작동하여 각 단계별로 어떤 처리가 적용되어야 할지 설명하기 위해 연결된다. Operator를 사용하면 새 중간값이 반환된다. 이 때 Operator는 하위에서는 Publisher로, 상위에서는 Subscriber 처럼 취급된다.