Reactive Programming
-
Reactive Programming - 배압 (Backpressure)Reactive Programming 2022. 11. 26. 15:28
1. 배압의 정의 위키피디아에서 배압은 파이프라인에서 순방향으로 흐르는 유체의 흐름을 반대되는 역방향성을 가진 힘이라고 뜻하고있다. pipe1의 경우에는 유체의 흐름에 방해되는 요소가 없어 p1 -> p2로 유체가 잘 흐를 것이다. pipe2의 경우에는 유체의 흐름을 방해하는 요소가 몇가지가 존재하여 p1 -> p2까지 유체는 배압으로인하여 p2까지 도달하는데 시간이 좀 더 걸릴 것이다. 이 유체를 지금부터 프로그램의 데이터라고 생각을 해보자. 2. 리액티브 프로그래밍에서 배압이 필요하게 된 이유 데이터베이스에서 조회된 어마어마한 데이터 리소스가 지금부터 들어올 것이다. 이 데이터를 Publisher와 Subscriber는 어떻게 감당을 할 것인가? 물론 자원에대한 처리 능력이 무한하다면 문제가 없지만 ..
-
Reactive Programming - 리액티브 프로그래밍(Reactive Programming)Reactive Programming 2022. 11. 22. 13:47
리액티브 프로그래밍 비동기 프로그래밍의 하위 요소 중 하나이며 데이터 흐름과 전달에 관한 프로그래밍 패러다임 중 하나이다. 리액티브 프로그래밍 기법을 지원하는 프로그래밍 추상화는 Java - Futures, JS - Promise, Stream, Dataflow variables가 있다. 기존의 명령형 프로그래밍은 데이터 Pull 방식이었지만, 리액티브 프로그래밍은 데이터 Push 방식을 사용하여 데이터에 변화가 생김을 감지하여 연산을 수행한다. (디자인 패턴 - 옵저버 패턴 참고) 리액티브 프로그래밍의 간단한 예시는 엑셀의 함수이다. 함수의 특정 셀을 지정하여 수식연산을 수행하고 만일 특정 셀 값이 바뀌게 되면 함수의 결과값이 달라지는 것 처럼 특정 셀에 반응하여 연산을 하게 되는 것을 알 수 있다. ..
-
Reactive Programming - 리액티브 시스템 (Reactive System)Reactive Programming 2022. 11. 22. 12:36
리액티브 시스템 최근의 현대사회는 응답성에 대한 기대 속도가 빠르기를 원하면서 그와 동시에 데이터 전달량은 대량으로 증가하고있다. 데이터 전달량이 증가하게되고 접속자 또한 증가하게되는데 이를 버틸 수 있는 시스템 아키텍처가 필요하게된다. 리액티브 시스템을 이용하여 시스템 아키텍처를 구성하면 위와같은 문제점을 해소 할 수 있을 것이다. 그러면 리액티브 시스템을 구성하기 위해 필요한 요소들은 무엇인가? 리액티브 매니페스토(선언문) 리액티브 시스템을 구성하기위한 조건 4가지를 담은 선언문이다. 4가지는 다음과 같다. 1. 응답성 2. 탄력성 3. 유연성 4. 메시지 주도 응답성은 리액티브 시스템에서 가장 중요한 특성이다. 애플리케이션 사용자에게 가능한 즉각적이며, 지속적인 유지를 통해 응답하기 위한 특성이다...