📝 지난 글
[CS] 반응형 프로그래밍 - 1. 기본 개념
🧑🏻💻 내가 반응형 프로그래밍을 공부하게 된 이유갑자기 채용공고들을 올려서 이게 뭐지 싶겠지만, 여기서 우대 사항, 참고 사항에 들어가는 내용 중에 공통으로 보이는 키워드는 반응형
swift-library.tistory.com
지난 글에서는 간단하게 반응형 프로그래밍의 기본 개념에 대해서 알아보았다. 이번에는 반응형 프로그래밍하면 연관 깊은 ReactiveX에 대해서 알아보고자 한다.
🦐 ReactiveX 톺아보기
ReactiveX(Rx, Reactive Extensions)는 마이크로소프트에서 반응형 프로그래밍을 구현하기 위해 만든 라이브러리 집합으로 2011년에 공개된 오픈소스 프로젝트이다. 그만큼 역사와 전통을 가지고 있는... 라이브러리라고 할 수 있다.
ReactiveX
CROSS-PLATFORM Available for idiomatic Java, Scala, C#, C++, Clojure, JavaScript, Python, Groovy, JRuby, and others
reactivex.io
공식 홈페이지보다 더 공식적인 소개가 있을까? 4가지 특징을 소개하고 있다. 함수형, 코드의 간결성, 효과적인 에러 핸들링, 동시성 프로그래밍에 효과적이라고 한다.
ReactiveX는 Observable(관찰 가능한) 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그램을 구성하는 라이브러리라고 소개되어 있다. 여기서 주의깊게 봐야할 키워드는 observable sequence, Asynchronous, event-based 이다.
Rx는 옵저버 패턴을 확장했다고 나와있다. Rx는 시퀀스의 개념을 적용해서 단일 이벤트를 처리하는 것이 아닌 데이터 흐름(스트림)을 연속적으로 처리하는 방식이다. Rx는 내부적으로 비동기 작업과 멀티스레딩을 관리하므로, 개발자가 직접 스레드 관리나 동기화를 고민할 필요가 없다고 한다.
Rx를 Reactive Functional Programming과는 다르다고 한다. 가장 큰 차이점은 FRP의 경우 시간의 흐름에 따라 변경되는데 비해, 값이 특정 순간에만 발생한다고 한다. RFP의 경우 시간에 따라 끊임없이 변하는 값을 다루는 방식이라고 하고, Rx의 경우는 이벤트가 발생할 때 값이 바뀐다고 한다. (이 부분은 RFP에 대한 더 깊은 이해가 필요할 것 같다)
Java에서 사용하는 Future같은 경우 단 하나의 값만 반환하지만, Observable은 여러개의 값이나 심지어 무한한 데이터 스트림도 처리가 가능하다고 한다.
또한 옵저버 패턴에서 데이터가 더 이상 없거나 오류가 발생시 대처하는 기능이 부족했는데 Rx는 이것을 포함했다고 한다.
🧐 결론
사실 읽으면 읽을수록 약간... 사용해보고 다시 읽어봐야 겠다는 생각이 들었다. 역시 나는 직접 코드를 작성하면서 배우는 스타일인가 보다. 그래도 이렇게 공식 홈페이지를 읽으면서 Observable, Event-based라는 키워드들을 얻게 되었으니 직접 간단한 앱을 만들어보며 학습해보려고 한다.
'📺 Programming' 카테고리의 다른 글
[Programming] 반응형 프로그래밍 - 3. RxSwift, Combine 사용해보기 (0) | 2025.02.19 |
---|---|
[Programming] 반응형 프로그래밍 - 1. 기본 개념 (0) | 2025.02.17 |
[Programming] Test Double (0) | 2025.01.25 |
[Programming] 소프트웨어 아키텍쳐, 디자인 패턴 (0) | 2024.01.06 |