반응형 프로그래밍(Reactive Programming)
반응형 프로그래밍은 모든 것을 데이터 스트림으로 간주하고, 데이터(이벤트)에 따라 변경 내용을 전파하는 프로그래밍 방식
- 데이터의 변경이나 이벤트 발생에 따라 자동으로 업데이트를 처리해줌으로써 효율적인 비동기 처리, 데이터 흐름의 일관성 유지, 오류 처리 및 예외 상황 처리 등의 이점을 제공
반응형 프로그래밍은 기존의 이벤트 기반 프로그래밍(Event-Driven Programming)과 콜백 기반 프로그래밍(Callback-Based Programming)에서 나왔다.
- 기존의 이벤트 기반 프로그래밍에서 이벤트 처리를 위해 콜백 함수를 사용하는데, 그러면 코드가 복잡해지고 디버깅이 어려워지는 문제 + 여러 이벤트를 처리하기 위해 중첩된 콜백 함수 사용 시 콜백 헬(Callback Hell) 문제 발생
- 반응형 프로그래밍은 이런 문제를 해결하고자
데이터 흐름을 스트림으로 처리하고, 데이터 변화에 따라 자동으로 업데이트하는 방식을 채택한다.
- 또한 비동기 처리를 지원하여 멀티스레딩 환경에서도 효율적으로 동작할 수 있다.
반응형 프로그래밍의 특징
- 함수형 프로그래밍에 기반을 두며, 불변식 개념에 기초한다.
- Control Flow가 아닌 Data Flow에 중점을 두고 모든 것을 비동기 데이터의 Stream으로 간주
- Data Flow는
Value(onNext method), Error(onError method), Completed(onCompleted method)의 3가지를 전달한다.
- Asynchronous Data Stream인
Observable을 활용하여 비동기 이벤트를 처리
- Non blocking 방식으로 동작
- 하나의 변수 값을 변경하면 해당 변수를 참조하는 모든 식이 연쇄적으로 재평가되며, 스스로 값을 갱신하는 recursive 방식으로 동작함