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