본문 바로가기

RxJava

[RxJava] 리액티브 프로그래밍

안녕하세요. 메로나입니다.

 

오늘은 리액티브 프로그래밍에 대해 공부하겠습니다.

 

리액티브 프로그래밍이란?

변화의 전파와 데이터 흐름: 데이터가 변경될 때마다 이벤트를 발생시켜서 데이터를 계속적으로 전달하는 것입니다.

선언적 프로그래밍: 실행할 동작을 구체적으로 명시하는 명령형 프로그래밍과 달리 선언형 프로그래밍은 단순히 목표를 선언하는 것입니다.

 

명령형 프로그래밍과 선언형 프로그래밍의 차이는 무엇인가요?

1. 명령형 프로그래밍

명령형 프로그래밍 예시

  • 코드를 어떻게 동작해야할지 세부적으로 명시한 방식입니다.

 

2. 선언형 프로그래밍

선언형 프로그래밍 예시

  • 프로그램의 목표나 결과를 선언하는 방식입니다.
  • '무엇을' 해야하는지만 명시를 하고, 실행은 시스템에게 맡깁니다.
  • 예제 이미지를 간단히 설명드리면 filter / mapToInt / sum 함수를 사용해서 실행해 줘라는 코드입니다.

 

리액티브 프로그래밍에서 데이터 흐름을 처리하는 방법은?
  • push 방식: 데이터의 변화가 발생했을 때 변경이 발생한 곳에서 데이터를 보내주는 방식(생산자 -> 소비자)
  • pull 방식: 변경된 데이터가 있는지 요청을 보내 질의하고 변경된 데이터를 가져오는 방식(소비자가 요청 -> 생산자)
특성 Push 방식 Pull 방식
데이터 흐름 생산자가 데이터를 소비자에게 전달 소비자가 데이터를 요청
비동기성 비동기적으로 데이터를 전달 동기적 혹은 비동기적 요청-응답
주요 사용 예 실시간 알림, 웹소켓, 이벤트 기반 시스템 HTTP 요청, API 호출, 데이터베이스 조회
장점 실시간 처리 가능, 빠른 반응 부하를 관리할 . 수있음, 데이터 낭비 없음
단점 과부하 발생 가능, 밀려오는 데이터 처리 문제 대기 시간이 길어질 수 있음, 실시간 반응 어려움

 

  • 실시간 데이터 처리를 해야하는 경우 Push 방식이 적합합니다.
  • 부하를 관리해야 할 경우는 Pull 방식이 적합합니다.
  • 두 가지 방식을 상황에 맞춰 설계하면 효율적인 데이터 흐름과 처리 성능을 얻을 수 있습니다.

 

참고 문헌

https://reactivex.io/documentation/operators.html

 

ReactiveX - Operators

Introduction Each language-specific implementation of ReactiveX implements a set of operators. Although there is much overlap between implementations, there are also some operators that are only implemented in certain implementations. Also, each implementa

reactivex.io

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%A6%AC%EC%95%A1%ED%8B%B0%EB%B8%8C%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-1/dashboard

 

Kevin의 알기 쉬운 RxJava 1부 강의 | Kevin - 인프런

Kevin | 리액티브 프로그래밍이라는 진입 장벽을 넘고 싶으신가요? Kevin의 알기 쉬운 RxJava가 그 벽을 넘을 수 있는 힘을 키워드리겠습니다., 리액티브 프로그래밍, 알기 쉽고 확실하게 배워보세요!

www.inflearn.com

'RxJava' 카테고리의 다른 글

[RxJava] 생성 연산자  (0) 2025.01.30
[RxJava] Single vs Maybe vs Completable  (0) 2025.01.27
[RxJava] Flowable과 Observable의 차이점  (0) 2025.01.23
[RxJava] Reative Streams  (0) 2025.01.22
[RxJava] 마블 다이어그램  (0) 2025.01.19