2018년 11월 27일
반응형 프로그래밍 (Reactive Programming)
I. 비동기 데이터 처리, 반응형 프로그래밍
가. 반응형 프로그래밍 (Reactive Programming)의 개념
이벤트나 변화에 반응하기위해 비동기적 데이터 처리 및 흐름 기반 프로그래밍 패러다임
나. 반응형 프로그래밍 특징
Responsive (응답성) – 사용자 요청에 응답 | Resilient (탄력성) – 장애허용성, 고장감지/수정 |
Elastic (유연성) – 작업량변화에도 응답성유지 | Message Driven (메시지중심) – 비동기 메시지 전달 |
II. 반응형 프로그래밍의 실행 방식 및 구성 요소
가. 반응형 프로그래밍의 실행 방식
– 동기식 비효율적 처리로 인한 병목현상 해결, 생산성 증대
나. 반응형 프로그래밍의 구성요소
구성요소 | 세부 요소 | 설명 |
---|---|---|
Observable (관찰 대상) | Hot observable | – 생성직후 전달, 보장불가 |
Cold observable | – 옵저버 구독 시까지 미전달 | |
Operator (연산자) | Create 연산자 | – 데이터 흐름 생성 함수 – create(), just(), framArray() |
Map 연산자 | – 입력에 대한 출력결과함수 – map(), flatMap() | |
Filter 연산자 | – 원하는 데이터 필터링 – filter(), first(), take() | |
Combine 연산자 | – 여러 Observable 조합 역할 | |
Subscribe (구독) | OnNext | – 원하는 값 통지 시 발생 |
OnError | – 에러 발생 시 발생 이벤트 | |
OnCompleted | – 스트림 종료 시 통지 |
– 비동기 데이터 흐름을 각 목적에 맞도록 연산자 기반 처리, 제어하여 반응형 프로그래밍 수행
III. 반응형 프로그래밍 코드 사례
명령형 프로그래밍 | 반응형 프로그래밍 |
---|---|
b = 10, c = 20, a = b + c print(a); → a = 30 출력 c = 30 print(a) ; → a = 30 출력 | b = 10, c = 20, a = b + c print(a); → a = 30 출력 c = 30 print(a); → a = 40 출력 |
– 명령형 프로그래밍은 a값 계산 시 메모리에 결과가 저장되지만, 반응형 프로그래밍은 계산식이 저장
– 대표적 프로그램은 Microsoft Excel 소프트웨어