-
Reactive Programming - 리액티브 프로그래밍(Reactive Programming)Reactive Programming 2022. 11. 22. 13:47
리액티브 프로그래밍
비동기 프로그래밍의 하위 요소 중 하나이며 데이터 흐름과 전달에 관한 프로그래밍 패러다임 중 하나이다.
리액티브 프로그래밍 기법을 지원하는 프로그래밍 추상화는 Java - Futures, JS - Promise, Stream, Dataflow variables가 있다.
기존의 명령형 프로그래밍은 데이터 Pull 방식이었지만, 리액티브 프로그래밍은 데이터 Push 방식을 사용하여 데이터에 변화가 생김을 감지하여 연산을 수행한다. (디자인 패턴 - 옵저버 패턴 참고)
리액티브 프로그래밍의 간단한 예시는 엑셀의 함수이다.
함수의 특정 셀을 지정하여 수식연산을 수행하고 만일 특정 셀 값이 바뀌게 되면 함수의 결과값이 달라지는 것 처럼 특정 셀에 반응하여 연산을 하게 되는 것을 알 수 있다.
리액티브 시스템과 리액티브 프로그래밍의 차이
리액티브 프로그래밍은 데이터 흐름 체인을 통한 계산에 대한 중점을 둔 이벤트 주도인 반면 리액티브 시스템은 분산 시스템의 통신 및 조정을 통한 회복성과 탄력성에 중점을 둔 메시지 주도 시스템 설계 패러다임이다.
메시지는 특정 대상으로 보내지는 데이터 항목이며
이벤트는 주어진 특정 상태에 도달시 Subject가 내보낸 일종의 신호다.
이벤트 주도 시스템은 주소지정이 가능한 이벤트 소스에 초점을 맞추고, 메시지 중심 시스템은 주소지정이 가능한 수신자에 집중한다.
리액티브 시스템과 리액티브 프로그래밍의 관련
리액티브 시스템은 분산된 커뮤티케이션에 중점을 두고 분산 시스템에서 회복성과 탄력성을 설계하는 아키텍처를 만들기 위해 리액티브 프로그래밍을 결합하여 사용할 수 있다.
함수형 리액티브 프로그래밍
함수형의 map, filter, reduce와 같은 고차함수를 통해 비동기 이벤트 처리를 리액티브 프로그래밍 방식으로 처리하는 기법이다.
'Reactive Programming' 카테고리의 다른 글
Reactive Programming - 배압 (Backpressure) (0) 2022.11.26 Reactive Programming - Java9 Flow API (0) 2022.11.22 Reactive Programming - 리액티브 시스템 (Reactive System) (0) 2022.11.22