본문 바로가기
Apple/RxSwift

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

by 어멘드 2023. 8. 12.
반응형

Reactive Programming, Rx, 그리고 RxSwift에 대해 알아보자.

 

Reactive Programming

반응형 프로그래밍은 데이터 스트림과 변화의 전파와 관련된 선언적 프로그래밍 패러다임이다. (출처: Wikipedia - Reactive Programming)

리액티브 프로그래밍의 목적은 데이터 스트림을 통해 데이터의 변화를 전파시키고, 변화에 따라 자동으로 반응하는 방식으로 프로그래밍을 구성하는 것이다. 

 이때 데이터 스트림이란 시간에 따라 연속적으로 발생하는 데이터의 흐름을 나타내는 개념으로, 데이터 시퀀스라고 생각할 수 있다. 초기값이 0인 A라는 변수가 매초마다 1씩 증가한다고 가정하자. 이를 데이터 스트림으로 만들면 처음에 0이, 1초 후에는 1이, 2초 후에는 2가 흐르게 된다. 이때 데이터 스트림은 옵저버블(관찰가능)하기 때문에 이를 구독한다면 스트림에 새 데이터가 내려올 때마다 그 소식을 받을 수 있다.

왜 리액티브 프로그래밍을 사용할까?

 데이터를 스트림으로 관리한다는 특성 때문에, 리액티브 프로그래밍은 이벤트 처리비동기 작업 등의 상황에서 매우 유용하게 활용된다. 서버에서 데이터를 가져오는 작업을 수행한다고 가정해보자. 데이터를 가져오는 데는 네트워크 요청이 필요하며, 요청이 완료될 때까지 기다려야 한다.

 일반적인 접근 방식은 콜백(callback)을 사용하여 요청이 완료된 시점에 수행할 작업을 전달하는 것이다. 비동기 작업이 완료되면 해당 콜백 함수가 호출된다. 리액티브 프로그래밍에서는 (비동기 작업을 정의한) 스트림을 생성한다. 그리고 비동기 작업이 완료되고 나면 결과 데이터를 스트림에 흘려보낸다. 해당 스트림은 옵저버블하므로 이를 구독하여 결과 데이터 처리 코드를 정의해두면, 작업이 완료된 시점에 결과 데이터가 구독자에게 전달되고, 정의해둔 처리 코드가 자동으로 실행된다.

 만약 여러 비동기 작업을 순차적으로 처리해야 하는 경우, 콜백 방식에서는 여러 콜백 함수가 깊게 중첩되는 콜백 지옥 문제가 발생한다. 반면에 리액티브 프로그래밍은 체인 형태로 각 비동기 작업을 순차적으로 연결하며, 각 작업의 결과를 가공하거나 다음 단계로 전달하는 방식으로 동작한다. 리액티브 프로그래밍을 사용하면 코드의 구조가 단순해지고 가독성이 좋아지기 때문에 비동기 작업을 효율적으로 다룰 수 있다.

// 콜백 방식
사용자_정보_가져오기 (
    사용자_정보_가공하기 (
        추가_정보_가져오기 (
            추가_정보_가공하기 (
                        
            )
        )
    )
)

// 리액티브 프로그래밍
사용자_정보_가져오기()
    .사용자_정보_가공하기()
    .추가_정보_가져오기()
    .추가_정보_가공하기()

 

 

ReactiveX (Rx)

 ReactiveX는 리액티브 프로그래밍을 구현한 라이브러리 또는 프레임워크 중의 하나이다. Rx 말고도 리액티브 프로그래밍을 구현한 다른 프레임워크들도 있다. 대표적인 것이 애플의 Combine이다.

 

RxSwift

 Rx는 다양한 프로그래밍 언어와 플랫폼에서 사용할 수 있는데, 그 중에서 Swift 언어를 위한 Rx 프레임워크가 바로 RxSwift이다.

 


레퍼런스

https://en.wikipedia.org/wiki/Reactive_programming
https://taekki-dev.tistory.com/95

반응형

'Apple > RxSwift' 카테고리의 다른 글

[RxSwift] 함수형 프로그래밍  (0) 2023.08.08
[RxSwift] 선언형 프로그래밍  (0) 2023.08.08

댓글