본문 바로가기
ReactiveX (Rx)

RxJava에 대한 기본적인 개념 (Stream, Reactive Programming, Reactive Stream)

by 안솝우화 2022. 4. 4.
반응형

Stream 이란?

데이터의 변화가 이루어지며 생긴 이벤트들을 관찰자들에게 알려주는 객체입니다

한마디로 시간에 따라 정렬되어 진행 중인 이벤트 흐름이라고 생각하시면 편합니다

버튼 클릭 예시

Rx에서는 스트림의 방출되는 이벤트로 onNext, onError, onComplete 등이 있고 스트림을 연산자로 변형하여 사용할 수 있습니다

 

Reactive Programming 이란?

Reactive Programming은 데이터 흐름과 전달에 관한 프로그래밍 패러다임입니다

여기서 패러다임이란 사람들의 견해나 사고를 규정하는 인식 체계를 뜻합니다, 프로그래밍 패러다임은 프로그래밍을 인식하는 방식이나 방향을 뜻합니다

이해하기 쉽게 말하자면 Reactive Programming은 데이터의 흐름을 먼저 정의하고 데이터가 변경되었을 때 이벤트를 받아 관련 작업을 하는 것을 뜻합니다, 때문에 프로그래머가 어떠한 기능을 직접 실행하는 것이 아니라 이벤트를 받아 처리해줍니다

이는 주변환경과 끊임없이 상호작용을 하며 프로그램이 주도하는 것이 아닌 환경이 변하면 이벤트가 발생해 동작하며 상호작용 한다는 말로 이해할 수 있습니다

 

Reactive Stream 이란?

그렇다면 Reactive Stream은 무엇일까요?

Reactive Stream은 리액티브 프로그래밍 라이브러리의 표준 사양이며 앞에서 설명한 리액티브 프로그래밍에 대한 인터페이스를 제공합니다(구현체 X)

그리고 이걸(Reactive Stream) 이용해 구현체를 구현한 게 바로 우리가 잘 아는 RxJava입니다

그럼 리액티브 스트림에서는 어떤 인터페이스를 제공할까요?

  • Publisher(생산자) : 데이터를 생성하고 통지해 줍니다 (Subject, Observable, Producer 모두 생산자와 같은 의미입니다)
  • Subscriber(소비자) : 통지된 데이터를 전달받아서 처리해 줍니다 (Subscriber, Observer, Consumer 모두 소비자와 같은 의미입니다)
  • Subscription(구독) : 전달받을 데이터의 개수를 요청하거나 구독을 해지합니다
  • Processor : 생산자와 소비자의 기능이 모두 있습니다

 

예시 그림 자료

 

반응형