<RxJava>ReactiveX란 무엇인가?

진섭·2023년 5월 23일
0

RxJava

목록 보기
1/20
post-thumbnail

📌개요

오늘부터 RxJava에 대하여 블로그에 기록을 해볼 생각입니다. 제가 RxJava를 배우려는 이유는 안드로이드 채용 공고를 보면 RxJava를 사용할 수 있는 사람을 찾고 있는 회사들이 있어서 자격요건을 채우기 위해 배우고 나의 프로젝트에 적용해볼 까 합니다.

📌ReactiveX란?

Rx란 무엇인가에 대하여 찾아보았는데 Reactive eXtensions 의 줄임말이라고 합니다. 이름을 해석하자면 반응성 + (세력·영향력·혜택 등의) 확대 라는 뜻을 가지고 있어 합치면 반응의 확장이라고 표현일 것 같습니다.

그럼 이제 ReactiveX를 무슨 기능이 있는지 알고 싶어 바로 reactivex.io에 들어가 살펴보았는데

ReactiveX는 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그램을 구성하기 위한 라이브러리입니다.

라고 소개가 되어 있네요. 여기서 시퀸스가 무엇인지 궁금해서 찾아 보았는데 일련의 이벤트 또는 데이터 스트림을 나타내는 개념이라고 보면 될 수 있을 거 같다. sequences는 순서들이라는 뜻을 가지고 있어며 비동기적으로 발생하는 이벤트를 처리하기 위한 도구로 사용되며 이벤트는 스트림에 도착하는 순서대로 처리하게 된다.

ReactiveX는 옵저버 패턴, 이터레이터 패턴, 함수형 프로그래밍 등의 개념을 결합하여 Reactive Programming을 구현이 되어있다고 쓰여져 있네요. 옵저버 패턴이터레이터 패턴은 디자인 패턴에서 나온 개념인 거 같네요. 최근 헤드 퍼스트 디자인 패턴 책을 읽고 있는데 봤던 개념이라 조금 반갑네요😊

  • 옵저버 패턴 : 스타크래프트를 하신 분들이라면 익숙한 이름인 옵저버는 객체의 상태의 변화를 관찰한다.객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다.
  • 이터레이터 패턴 : 반복자 패턴이라고도 하며 자료 구조와 같이 접근이 잦은 객체에 대한 동일한 인터페이스를 사용하도록 하는 패턴이다. 그리고 내부 표현 방법의 노출 없이 순차적인 접근이 가능하다.

흠 이래도 아직 부족함이 있어 돌아다니다가 Docs에 Observable에 들어갔는데 헐 한국어를 지원해 준다. 반가운 한글..

주요 구성요소는 Observable(관찰자), Observer(구독자), Operator (연산자), Scheduler(스케줄러)가 될 거 같습니다.

  • Observable(관찰자) : 이벤트 스트림을 생성하고 관찰자들에게 이벤트를 전달하는 주체입니다. 이벤트 스트림의 생성, 변환, 필터링, 결합 등을 수행할 수 있습니다.

  • Observer (구독자): Observable(관찰자)에서 생성된 이벤트 스트림을 구독하는 객체로, 새로운 이벤트를 수신할 때마다 처리하는 로직을 구현합니다.

  • Operator (연산자): Observable(관찰자)에서 생성된 이벤트 스트림을 변환, 조작하거나 여러 스트림을 결합하는 역할을 합니다. 맵핑, 필터링, 병합 등의 작업을 수행할 수 있습니다.

  • Scheduler (스케줄러): 이벤트 스트림이 어떻게 동작할지 제어하는 도구입니다. 동시성, 병렬성, 스레드 관리 등을 담당합니다.

📌 후기

ReactiveX에 대하여 알아봤는데 아직 알듯 말듯 하는 거 같아요. 전체적인 틀은 어떻게 돌아갔는지 감은 잡았고 ReactiveX를 사용하면 이벤트 기반 및 비동기 애플리케이션에서 발생하는 복잡한 상호작용을 쉽게 다룰 수 있다는 걸 알 게 되었고 이제 코드로 구현을 해봐야 아~ 이거구나 할 것 같네요.

참고자료
https://axe-num1.tistory.com/22
https://reactivex.io/intro.html
https://unityindepth.tistory.com/73
https://thebook.io/006934/0049/
https://pjh3749.tistory.com/266
https://bacassf.tistory.com/99

profile
Android 개발자

0개의 댓글