-
리액티브 프로그래밍(Reactive Programming) 이란 무엇인가?Development 2017. 1. 21. 17:48728x90
- 리액티브 프로그래밍(Reactive Programming) 이란 무엇인가?
- 어떤 언어나 라이브러리, 함수등이 아닌, 새로운 프로그래밍 기법에 대한 패러다임
- 이 패러다임에 대한 고민의 시작은 .Net에서 LINQ의 ORM개발에서 부터 시작됨
- 기존의 프로그래밍 패러다임은 무었이었나?
- y = f(x) 와 같은 방식으로 프로그래밍 함
- x는 입력값, y 는 출력값으로 f( variable ) 함수 안에 컨트롤 로직을 프로그래밍해서 넣는 방식
- 단점 : 쓰레드 관점에서 보면, y가 리턴될 때 까지, 쓰레드가 블럭됨
- 쓰레드는 OS에게 값비싼 자원
- 쓰레드의 개수는 한계가 있으므로, 확장성에도 한계가 있는 디자인
- 단점 : f( x ) 자체를 병렬처리 하기 어려움
- 요즘은 휴대폰도 8코어
- 기존의 단점을 보완하기 위한 새로운 패러다임이 리액티브 프로그래밍(Reactive Programming)임
- 리액티브 프로그래밍이 기존 프로그래밍과 차이점
- 기존 방식 : 데이터가 흘러가는 로직을 프로그래머가 함수로 개발
- 데이터는 흐르는 강처럼 흘러간다고 가정하고, 그 데이터의 흐름이 스트림(stream)
- 스트림에 데이터를 조작하는 루틴을 일부 작성해서 넣어주고
- 그 스트림에 데이터가 흐를 때, 프로그래머가 작성한 루틴이 동작하는 방식의 프로그래밍
- 스트림을 관찰하는 Oserverable 안에 스트림을 넣어주고, Oserverable에 데이터를 작성하는 루틴을 작성한다
- 리액티브 프로그래밍의 구현체
- Reactive Extension 을 줄여 RX라고 쓰며, 각 언어및 플랫폼 별로, RxJava, RxAndroid등이 있음
- 참고 자료
- https://github.com/ReactiveX/RxJava
- https://github.com/Froussios/Intro-To-RxJava
- http://www.slideshare.net/jongwookkim/ndc14-rx-functional-reactive-programming
- https://www.lightbend.com/reactive-programming-versus-reactive-systems
728x90'Development' 카테고리의 다른 글
Jupyter notebook에 nbextension 설치/사용 방법 (2) 2018.11.10 https 키 생성 명령어 (0) 2018.11.10 Docker 명령어 모음 (0) 2018.11.10 Android MediaSync Example (0) 2018.02.19 How to generate ssh keys for gitlab.com on windows (0) 2017.02.02