Rx라는 개념에 대해서 너무 알고싶었다.
Reactive 라는 개념이 멋지게는 들렸는데, 정확히 기존의 개념과 무엇이 다른지 궁금했다.
많이들 아시는 아래 책을 여러번 읽고, 몇가지 강의들을 들은 후에야 조금은 내것이 된 것 같아서 잊지 않기위해 글을 남겨보려고 한다.
|
공식 사이트 (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 에 대해서 다음 포스팅에서 알아보고자 한다 :)
'RxJava' 카테고리의 다른 글
[RxJava3] 스케줄러 (0) | 2020.03.06 |
---|---|
[RxJava3] Reactive 연산자 - 2.필터 연산자, 결합 연산자 (0) | 2020.03.01 |
[RxJava3] Reactive 연산자 - 1.생성 연산자, 변환 연산자 (0) | 2020.02.27 |
[RxJava3] Observable (0) | 2020.02.26 |