본문 바로가기
공부하기/RxSwift

ReactiveX 사이트 방문해보기

by hyunjicraft 2021. 2. 24.

reactivex.io

 

ReactiveX

CROSS-PLATFORM Available for idiomatic Java, Scala, C#, C++, Clojure, JavaScript, Python, Groovy, JRuby, and others

reactivex.io

RxSwift를 공부하기 위해서 ReactiveX 사이트를 방문해보았다.

RxSwift는 Microsoft사의 ReactiveX의 시리즈 중 하나이고 "An API for asynchronous programming with observable streams(Observable 스트림을 이용한 비동기 프로그래밍 API)"라는 한 줄 요약으로 설명하고 있었다.

 

홈페이지 상단의 Introduction 버튼을 클릭하면 Reactive X에 대한 설명을 볼 수 있고 바로 옆의 Docs 탭에서 5가지 특성들에 대해 제공되는 문서를 볼 수 있다.

오늘은 우선 ReactiveX에 익숙해지기 위해서 Introduction 탭의 설명을 읽어보고 요약해 보았다.

 

  • ReactiveX는 비동기와 이벤트 중심 프로그래밍을 위한 라이브러리이다. 이 라이브러리는 옵저버 패턴을 지원하며 low-level의 여러 추상적인 부분을 직설적으로 나타낼 수 있도록 한다.

  • ReactiveX는 계속해서 변하는 값을 지켜보는 것이 아니라 값이 변할 때에만 반응한다.

  • ReactiveX를 함수형 반응형 프로그래밍이라고 잘못 부르기도 하지만 사실은 함수형이기도, 반응형이기도 하다.

  • ReactiveX에서는 옵저버가 Observable이라는 클래스를 구독하는데 이 Observable을 사용하면 가독성이 좋고 버그를 줄일 뿐만아니라 콜백 지옥에서 벗어날 수 있다.

  • ReactiveX는 다양한 언어에서 사용할 수 있고 프로그래밍에 필요한 여러가지 연산자들을 제공한다. 

  • ReactiveX는 리액터 패턴이다.


ReactiveX의 가장 중요한 특징 - Observable과 Operators

 

"옵저버 Observable 구독한다.

Observable은 항목들 배출하고

Observable의 메서드 호출을 통해 옵저버에게 알림을 보낸다."

 

지금까지의 많은 코드들은 Top Down 방식으로 작성되고 작성된 순서에 따라 메서드가 호출된다.

하지만 ReactiveX에서는 옵저버에 의해 임의의 순서에 따라 코드가 병렬로 실행되고(Asynchronized) 나중에 결과를 연산한다.

이러한 방식은 의존 관계가 없는 코드들이 하나의 코드 블럭이 실행완료할 때까지 기다릴 필요가 없고 한꺼번에 많은 코드들을 실행시킬 수 있어서 전체 코드의 실행 시간이 "가장 긴 시간이 걸리는 코드" 의 실행 시간 만큼만 걸린다는 장점이 있다.

 

ReactiveX는 라이브러리이지만 거대한 자본으로 만들어진 탄탄한 언어 같았다. 소개 페이지에 유비쿼터스를 적어둔 만큼 지금까지의 개발은 플랫폼마다 다른 언어를 쓰는 방식이지만 ReactiveX는 많은 프로그래밍 언어들의 교집합과 같다. 그래서 학습할 때에도 라이브러리보다는 새로운 언어라고 생각하고 접근하는 게 맞을 것 같다.

모든 프로그래밍 언어가 그렇듯이 제공되는 클래스와 연산자를 모두 익히기는 힘들 뿐더러 그럴 필요가 없다.

ReactiveX 홈페이지에서는 이해하기 쉽도록 문서와 직관적인 마블 다이어그램을 제공하고 너무나 친절하게도 Docs를 모두 한국어로 볼 수 있다. 

또 어떠한 작업을 위한 연산자가 필요할 때 Docs의 Operators를 클릭하면 하단에 Observable 연산자 결정 트리 부분에서 원하는 작업을 찾을 수 있다.


Microsoft의 실패작에서 남겨진 유산-이 거대한 라이브러리를 남겼는데 실패작일 수가 없다-이라는 부분도 인상 깊고 사용해야할 이유도 장점도 매우 명확하다. 다만 당장 눈에 보이는 단점은 디버깅이 어렵다는 점메모리 누수 부분, 또 러닝커브가 높다는 점은 기업에서 사용하기에 큰 단점이 될 수 있을 것 같다.

(특히 우리나라에서 -아마도 순수하게 비동기 프로그래밍을 위한 부분을 제외하고 너무 남발하지 않아야 제대로 도움을 받을 수 있지 않을까)

또 Docs의 RxSwift 부분을 보다 보면 문서가 많이 부족하고 TBD 형태로 남겨져 있다는 것을 찾을 수 있다. (거의 비슷한 형태이기 때문에 RxJava의 문서를 참고하면 도움이 된다.) 

 

 

'공부하기 > RxSwift' 카테고리의 다른 글

RxSwift vs URLSession 이미지 다운로드 비교  (0) 2021.02.28

댓글