안녕하세요. 메로나입니다.
오늘은 리액티브 프로그래밍에 대해 공부하겠습니다.
리액티브 프로그래밍이란?
변화의 전파와 데이터 흐름: 데이터가 변경될 때마다 이벤트를 발생시켜서 데이터를 계속적으로 전달하는 것입니다.
선언적 프로그래밍: 실행할 동작을 구체적으로 명시하는 명령형 프로그래밍과 달리 선언형 프로그래밍은 단순히 목표를 선언하는 것입니다.
명령형 프로그래밍과 선언형 프로그래밍의 차이는 무엇인가요?
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
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 |
