2021. 9. 15. 22:48ㆍReactiveX
들어가기 전에
Rx라는 말을 처음 들어본 것은 회사 책꽂이에 꽂혀 있던 RxJava 관련 책을 보고 나서였다.
Java이긴 한데... RxJava는 대체 뭐지? 많이 다른 걸까??
이런 궁금증에 RxJava 책을 가볍게 펴서 읽었고, 잠깐의 시간 동안 받아들이기에는 어려운 내용이었다.
회사에서 일하시던 개발자분께서 책을 읽는 나를 보고, RxJava를 알면 정말 편하다고 얘기해주셨다.
하지만 진입 곡선이 너무 높다고....
이 때 처음으로 Rx 라는 것의 존재를 알게 되었다.
그로부터 많은 시간이 흘러서, 이제서야 이것에 대해 제대로 공부하고 사용해보려고 한다.
어떤 놈인지 궁금했다.
Rx란 무엇인가?
Rx는 ReactiveX의 약자이다. ReactiveX는 비동기나 이벤트 기반 프로그래밍을 쉽게 구성하기 위한 라이브러리이다.
Reactive 프로그래밍은 데이터를 관찰하고, 데이터가 변경될 때마다 이벤트를 발생시켜서 변경된 데이터를 전달하는 선언적 프로그래밍의 패러다임이라고 할 수 있다. ReactiveX라는 라이브러리는 다양한 언어로 확장되어 사용되고 있다.
RxJs, RxJava, RxSwift, RxKotlin, RxPY, RxScala, RxPHP, RxNetty, RxRuby, RxRust, RxNet.....
Rx를 사용하면 비동기적 프로그래밍을 작성하기에 좋다. 원하는 옵저버블 데이터를 구독하고 있다가 그 데이터에 변화가 발생하면 바로 알려주기 때문이다.
Observer pattern
ReactiveX는 Observer pattern을 사용한다. 데이터나 이벤트의 시퀀스를 만들어 관찰하며, threading, synchronization, thread-safety, concurrent data structures, non-blocking I/O 같은 low-level을 직접적으로 신경쓰지 않아도 된다.
여기시 시퀀스(Sequence)란 무엇일까?
Sequence란 영어 단어 그대로는 '순서', '연속적인 사건들' 이라는 의미를 가지고 있다. Rx에서 시퀀스는 이러한 의미들을 담고 있지만, 명확하게 어떤 것을 나타내고 있다.
시퀀스는 옵저버블이 될 수 있는 데이터 타입이다.
Swift의 데이터타입은 Int, String, Array 등이 있다. 이런 데이터타입을 갖는 옵저버블(관찰될 수 있는 데이터나 이벤트)을 선언할 수 있다.
예를 들면 String 타입을 갖는 관찰 가능한 sequence라는 이름의 데이터는 다음과 같이 선언된다.
여기서 Observable<String>으로 선언된 sequence라는 데이터를 시퀀스라고 한다.
결론적으로 Observer pattern이란 이러한 시퀀스를 만들어 관찰하는 패턴이다.
그렇다면 위에서는 시퀀스를 선언만 했는데, 시퀀스는 언제 생성되는 것일까?
시퀀스는 subscribe 메서드가 호출될 때 생성된다고 한다. 아래 문서를 읽어보면 알 수 있는 사실이다.
다음 글에서는 Observer와 Observable의 차이점, 그리고 Rx의 3가지 구성 요소에 대해 알아보도록 하자!
'ReactiveX' 카테고리의 다른 글
[RxSwift #5] Driver란 무엇일까? (0) | 2022.01.01 |
---|---|
[RxSwift #4] Subject 와 Relay (2) | 2021.09.22 |
[RxSwift #3] Scheduler (0) | 2021.09.20 |
[RxSwift #2] Observable에 대해 (0) | 2021.09.19 |
[RxSwift #1] 자주 쓰이는 용어와 개념 (0) | 2021.09.17 |