본문 바로가기

RxJava

[RxJava3] ReactiveX 란?

rxjava_reactivex

Rx라는 개념에 대해서 너무 알고싶었다.

 

Reactive 라는 개념이 멋지게는 들렸는데, 정확히 기존의 개념과 무엇이 다른지 궁금했다.

많이들 아시는 아래 책을 여러번 읽고, 몇가지 강의들을 들은 후에야 조금은 내것이 된 것 같아서 잊지 않기위해 글을 남겨보려고 한다.

 

RxJava 프로그래밍
국내도서
저자 : 유동환,박정준
출판 : 한빛미디어 2017.09.04
상세보기

 


 

공식 사이트 (http://reactivex.io)에 들어가 보면, 아래와 같이 ReactiveX 에 대해 정의를 하고 있다.

 

                     " ReactiveX is a combination of the best ideas from
the Observer pattern, the Iterator pattern, and functional programming "


Observer 패턴과 Iterator 패턴을 사용하여 비동기 이벤트 를 정의하고,

Functional 프로그래밍을 이벤트를 처리하는 방식으로 사용하고 있다고 보면 된다.

 


 

아직은 모호하게 느껴지는 Reactive 프로그래밍을 기존의 방식과 비교를 하면서 이해를 해보자.

 

 

기존의 프로그래밍을 명령형 프로그래밍이고, 앞으로 알아볼 내용은 Reactive 프로그래밍 이다.

이 둘은 데이터 변경이 발생되었을 때 차이가 난다.

  • 명령형은      데이터가 필요한 곳에서 땡겨가며 (PULL)
  • 리엑티브는   데이터를 발생시킨 곳에서 밀어주는 (PUSH) 방식으로 생각하면 된다.

 

리엑티브 프로그래그래밍은 반응형 프로그래밍이라고도 하는데,

이때 반응형의 의미는 무엇일까?

간단히 말해서 반응형이란, 비동기를 잘 처리해내는 것이라고 할 수 있겠다.

 

"비동기를 잘 처리해낸다." 를 이해하기 위해 기존의 비동기 처리방식과 비교를 해보고자 한다.

  • 기존의 비동기 방식: 비동기 A가 끝나면, B에서 callback을 받아서 처리하는 방식이었다면,
  • 반응형 비동기 방식: 비동기 A 이벤트가 발생하면, B가 구독을 하는 방식이다.

새롭게 등장한 구독 의 의미는 Observer 패턴에서 사용하는 구독(subscribe)의 의미가 맞다.

 // Observable: 데이터 발행 담당, Observer: 구독 담당
Obserevable.subscribe(Observer)

 

Observer 패턴은 RX에 핵심 개념이고, 그중에서도 절대 빠져서는 안되는

Observable 에 대해서 다음 포스팅에서 알아보고자 한다 :)